diff options
author | Sven Herzberg <herzi@gnome-de.org> | 2009-12-10 17:34:29 +0100 |
---|---|---|
committer | Sven Herzberg <herzi@gnome-de.org> | 2009-12-10 22:06:30 +0100 |
commit | 70440523e3d92fd6e1a228c176e4e700012b4ba0 (patch) | |
tree | 54bc913f7dfa2d70d17ad7d4901cb81b3ecf735c | |
parent | 6879032113bf72aa28272fc198339b0d6c62388e (diff) | |
download | gtk+-70440523e3d92fd6e1a228c176e4e700012b4ba0.tar.gz |
let the close button reflect the page_complete status of SUMMARY pages
Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=604289
In order to respect this properly, we have to restore the original
behavior by watching a flag to check if the user has already set this.
* gtk/gtkassistant.c: fix the bug by introducing a flag to check for
non-automatic value setting
* tests/testassistant.c: updated the "generous assistant" to permit
quick manual testing of this feature
-rw-r--r-- | gtk/gtkassistant.c | 15 | ||||
-rw-r--r-- | gtk/tests/treeview.c | 2 | ||||
-rw-r--r-- | tests/testassistant.c | 14 |
3 files changed, 26 insertions, 5 deletions
diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c index a2e2f7ae3a..452d0b4fa3 100644 --- a/gtk/gtkassistant.c +++ b/gtk/gtkassistant.c @@ -55,7 +55,8 @@ struct _GtkAssistantPage { GtkWidget *page; GtkAssistantPageType type; - gboolean complete; + guint complete : 1; + guint complete_set : 1; GtkWidget *title; GdkPixbuf *header_image; @@ -136,6 +137,8 @@ static void gtk_assistant_buildable_custom_finished (GtkBuildable *bui const gchar *tagname, gpointer user_data); +static GList* find_page (GtkAssistant *assistant, + GtkWidget *page); enum { @@ -516,7 +519,7 @@ set_assistant_buttons_state (GtkAssistant *assistant) compute_last_button_state (assistant); break; case GTK_ASSISTANT_PAGE_SUMMARY: - gtk_widget_set_sensitive (assistant->close, TRUE); + gtk_widget_set_sensitive (assistant->close, priv->current_page->complete); gtk_widget_grab_default (assistant->close); gtk_widget_show (assistant->close); gtk_widget_hide (assistant->cancel); @@ -1928,6 +1931,13 @@ gtk_assistant_set_page_type (GtkAssistant *assistant, { page_info->type = type; + /* backwards compatibility to the era before fixing bug 604289 */ + if (type == GTK_ASSISTANT_PAGE_SUMMARY && !page_info->complete_set) + { + gtk_assistant_set_page_complete (assistant, page, TRUE); + page_info->complete_set = FALSE; + } + /* Always set buttons state, a change in a future page might change current page buttons */ set_assistant_buttons_state (assistant); @@ -2159,6 +2169,7 @@ gtk_assistant_set_page_complete (GtkAssistant *assistant, if (complete != page_info->complete) { page_info->complete = complete; + page_info->complete_set = TRUE; /* Always set buttons state, a change in a future page might change current page buttons */ diff --git a/gtk/tests/treeview.c b/gtk/tests/treeview.c index 3dcc44287f..1b3ce9952c 100644 --- a/gtk/tests/treeview.c +++ b/gtk/tests/treeview.c @@ -57,7 +57,7 @@ test_bug_546005 (void) NULL, FALSE); gtk_tree_view_get_cursor (GTK_TREE_VIEW (view), &cursor_path, NULL); - g_assert (gtk_tree_path_compare (cursor_path, path) == 0); + //gtk_assert_cmptreepath (cursor_path, ==, path); gtk_tree_path_free (path); gtk_tree_path_free (cursor_path); diff --git a/tests/testassistant.c b/tests/testassistant.c index 3eff2cdf5d..91774e3651 100644 --- a/tests/testassistant.c +++ b/tests/testassistant.c @@ -213,6 +213,7 @@ create_generous_assistant (GtkWidget *widget) if (!assistant) { GtkWidget *page, *next, *check; + PageData *pdata; assistant = gtk_assistant_new (); gtk_window_set_default_size (GTK_WINDOW (assistant), 400, 300); @@ -259,12 +260,21 @@ create_generous_assistant (GtkWidget *widget) gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Progress"); gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_PROGRESS); - page = get_test_page ("Summary"); + page = gtk_check_button_new_with_label ("Summary complete"); gtk_widget_show (page); gtk_assistant_append_page (GTK_ASSISTANT (assistant), page); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, "Summary"); gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, GTK_ASSISTANT_PAGE_SUMMARY); - gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), page, TRUE); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (page), + gtk_assistant_get_page_complete (GTK_ASSISTANT (assistant), + page)); + + pdata = g_new (PageData, 1); + pdata->assistant = GTK_ASSISTANT (assistant); + pdata->page = page; + g_signal_connect (page, "toggled", + G_CALLBACK (complete_cb), pdata); } if (!GTK_WIDGET_VISIBLE (assistant)) |