diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-11-13 04:21:43 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-11-13 04:22:50 +0800 |
commit | 29310c0c67025e0ca16f7731055a4c7a427306e5 (patch) | |
tree | 16a5e4bee844eba25f9f02c3d4e19969d98090e1 | |
parent | 1ed348fa43615021dfe4b1cd09d0503158d900d3 (diff) | |
download | gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar.gz gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar.bz2 gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar.lz gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar.xz gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.tar.zst gsoc2013-evolution-29310c0c67025e0ca16f7731055a4c7a427306e5.zip |
EConfig: Debugability improvements.
-rw-r--r-- | e-util/e-config.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/e-util/e-config.c b/e-util/e-config.c index f8e459497e..06117c2a9f 100644 --- a/e-util/e-config.c +++ b/e-util/e-config.c @@ -138,11 +138,11 @@ config_finalize (GObject *object) while (link != NULL) { struct _widget_node *node = link->data; - /* disconnect the gtk_widget_destroyed function from the widget */ + /* disconnect the ec_widget_destroyed function from the widget */ if (node->widget) g_signal_handlers_disconnect_matched ( node->widget, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, &node->widget); + 0, 0, NULL, NULL, node); g_free (node); @@ -560,6 +560,16 @@ ec_assistant_forward (gint current_page, } static void +ec_widget_destroyed (GtkWidget *widget, + struct _widget_node *node) +{ + /* Use our own function instead of gtk_widget_destroyed() + * so it's easier to trap EConfig widgets in a debugger. */ + + node->widget = NULL; +} + +static void ec_rebuild (EConfig *emp) { EConfigPrivate *p = emp->priv; @@ -829,6 +839,7 @@ ec_rebuild (EConfig *emp) } else { gtk_assistant_prepend_page (GTK_ASSISTANT (assistant), page); } + gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), page, item->type == E_CONFIG_PAGE ? GTK_ASSISTANT_PAGE_CONTENT : GTK_ASSISTANT_PAGE_PROGRESS); gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page, translated_label); gtk_widget_show_all (page); @@ -860,7 +871,9 @@ ec_rebuild (EConfig *emp) sectionnode = NULL; wn->widget = page; if (page) - g_signal_connect (page, "destroy", G_CALLBACK(gtk_widget_destroyed), &wn->widget); + g_signal_connect ( + page, "destroy", + G_CALLBACK (ec_widget_destroyed), wn); break; case E_CONFIG_SECTION: case E_CONFIG_SECTION_TABLE: @@ -962,7 +975,9 @@ ec_rebuild (EConfig *emp) sectionno++; wn->widget = section; if (section) - g_signal_connect (section, "destroy", G_CALLBACK(gtk_widget_destroyed), &wn->widget); + g_signal_connect ( + section, "destroy", + G_CALLBACK (ec_widget_destroyed), wn); sectionnode = wn; break; case E_CONFIG_ITEM: @@ -1001,7 +1016,9 @@ ec_rebuild (EConfig *emp) wn->widget = w; if (w) { - g_signal_connect (w, "destroy", G_CALLBACK(gtk_widget_destroyed), &wn->widget); + g_signal_connect ( + w, "destroy", + G_CALLBACK (ec_widget_destroyed), wn); itemno++; if (gtk_widget_get_visible (w)) |