diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2010-06-26 05:56:47 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2010-06-26 07:53:20 +0800 |
commit | 240c2a3dc01ba182f71a9ceea655227ee5febeab (patch) | |
tree | dc573a12c807eafb9d8d9be705dfbba7457cf111 /mail | |
parent | c64d144a5d8aea2ce7b87b7ae215bbbf4e225e31 (diff) | |
download | gsoc2013-evolution-240c2a3dc01ba182f71a9ceea655227ee5febeab.tar.gz gsoc2013-evolution-240c2a3dc01ba182f71a9ceea655227ee5febeab.tar.zst gsoc2013-evolution-240c2a3dc01ba182f71a9ceea655227ee5febeab.zip |
Bug 622535 - Account assistant loops on first run
The issue was EConfig's GtkAssistantPageFunc callback assumed the pages
in the GtkAssistant were sorted, but that assumption breaks as EPlugins
with custom EConfigItemFactoryFunc callbacks are introduced and EConfig
has to rebuild its assistant pages.
It's an unnecessary requirement anyway, since EConfig already keeps a
sorted list of widgets internally. After correcting that assumption a
number of hacks addressing previous page ordering bugs fell out.
Diffstat (limited to 'mail')
-rw-r--r-- | mail/em-account-editor.c | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index 772c50a814..7b10768163 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -2076,14 +2076,14 @@ emae_setup_service (EMAccountEditor *emae, EMAccountEditorService *service, GtkB } static GtkWidget * -emae_create_basic_assistant_page (EMAccountEditor *emae, GtkAssistant *assistant, - const gchar *page_id, GtkWidget *old) +emae_create_basic_assistant_page (EMAccountEditor *emae, + GtkAssistant *assistant, + const gchar *page_id) { const gchar *title = NULL, *label = NULL; GtkAssistantPageType page_type = GTK_ASSISTANT_PAGE_CONTENT; GtkWidget *vbox, *lbl; gboolean fill_space = FALSE; - gint index = -1; g_return_val_if_fail (page_id != NULL, NULL); @@ -2126,17 +2126,7 @@ emae_create_basic_assistant_page (EMAccountEditor *emae, GtkAssistant *assistant if (g_ascii_strcasecmp (page_id, "start_page") == 0) g_hash_table_insert (emae->priv->widgets, (gchar *)"start_page_label", lbl); - if (old) { - /* keep page on its previous index */ - gint i, sz = gtk_assistant_get_n_pages (assistant); - - for (i = 0; i < sz && index == -1; i++) { - if (gtk_assistant_get_nth_page (assistant, i) == old) - index = i; - } - } - - gtk_assistant_insert_page (assistant, vbox, index); + gtk_assistant_append_page (assistant, vbox); gtk_assistant_set_page_title (assistant, vbox, title); gtk_assistant_set_page_type (assistant, vbox, page_type); @@ -2218,7 +2208,7 @@ emae_identity_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget if (emae->type == EMAE_PAGES) { gtk_box_pack_start ((GtkBox *)emae->pages[0], w, TRUE, TRUE, 0); } else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) { - GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "identity_page", old); + GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "identity_page"); gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0); @@ -2257,7 +2247,7 @@ emae_receive_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget if (emae->type == EMAE_PAGES) { gtk_box_pack_start ((GtkBox *)emae->pages[1], w, TRUE, TRUE, 0); } else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) { - GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "source_page", old); + GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "source_page"); gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0); @@ -2728,7 +2718,7 @@ emae_send_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidget *ol if (emae->type == EMAE_PAGES) { gtk_box_pack_start ((GtkBox *)emae->pages[3], w, TRUE, TRUE, 0); } else if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) { - GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "transport_page", old); + GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "transport_page"); gtk_box_pack_start (GTK_BOX (page), w, TRUE, TRUE, 0); @@ -3177,7 +3167,7 @@ emae_management_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, GtkWidg w = priv->management_frame; if (((EConfig *)priv->config)->type == E_CONFIG_ASSISTANT) { - GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "management_page", old); + GtkWidget *page = emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), "management_page"); gtk_widget_reparent (w, page); @@ -3195,7 +3185,7 @@ emae_widget_assistant_page (EConfig *ec, EConfigItem *item, GtkWidget *parent, G if (emae->type == EMAE_PAGES) return NULL; - return emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), item->label, old); + return emae_create_basic_assistant_page (emae, GTK_ASSISTANT (parent), item->label); } /* plugin meta-data for "org.gnome.evolution.mail.config.accountAssistant" */ |