[gtk+] let the close button reflect the page_complete status of SUMMARY pages
- From: Sven Herzberg <herzi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+] let the close button reflect the page_complete status of SUMMARY pages
- Date: Thu, 10 Dec 2009 21:07:45 +0000 (UTC)
commit 70440523e3d92fd6e1a228c176e4e700012b4ba0
Author: Sven Herzberg <herzi gnome-de org>
Date: Thu Dec 10 17:34:29 2009 +0100
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
gtk/gtkassistant.c | 15 +++++++++++++--
gtk/tests/treeview.c | 2 +-
tests/testassistant.c | 14 ++++++++++++--
3 files changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c
index a2e2f7a..452d0b4 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 3dcc442..1b3ce99 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 3eff2cd..91774e3 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))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]