diff options
author | Vivek Jain <jvivek@novell.com> | 2005-07-11 22:17:15 +0800 |
---|---|---|
committer | Jain Vivek <jvivek@src.gnome.org> | 2005-07-11 22:17:15 +0800 |
commit | 073ef931e617ccc99c3610e9250a0e93b27ba71f (patch) | |
tree | c3958770d37e67ae0dc1a627e8394e90a066a1c1 | |
parent | b2d6fd746831fbf8741c6ecad2347a2e88d7c66e (diff) | |
download | gsoc2013-evolution-073ef931e617ccc99c3610e9250a0e93b27ba71f.tar.gz gsoc2013-evolution-073ef931e617ccc99c3610e9250a0e93b27ba71f.tar.zst gsoc2013-evolution-073ef931e617ccc99c3610e9250a0e93b27ba71f.zip |
added a idle handler that calls ec_rebuild after callback operations are
2005-07-11 Vivek Jain <jvivek@novell.com>
* e-config.c: (e_config_target_changed):
added a idle handler that calls ec_rebuild after callback operations
are completed.
**Fixes #307794
svn path=/trunk/; revision=29721
-rw-r--r-- | e-util/ChangeLog | 7 | ||||
-rw-r--r-- | e-util/e-config.c | 29 |
2 files changed, 34 insertions, 2 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index 1303a6a2e5..bdde3b3347 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,10 @@ +2005-07-11 Vivek Jain <jvivek@novell.com> + + * e-config.c: (e_config_target_changed): + added a idle handler that calls ec_rebuild after callback operations + are completed. + **Fixes #307794 + 2005-07-10 Shreyas Srinivasan * e-util/e-account.[ch]: Add structures to handle proxies. diff --git a/e-util/e-config.c b/e-util/e-config.c index 064ca44a79..272b84419a 100644 --- a/e-util/e-config.c +++ b/e-util/e-config.c @@ -924,6 +924,29 @@ e_config_create_window(EConfig *emp, struct _GtkWindow *parent, const char *titl return w; } +static gboolean +ec_idle_handler_for_rebuild (gpointer data) +{ + EConfig *emp = (EConfig*) data; + + ec_rebuild (emp); + if (emp->type == E_CONFIG_DRUID) { + if (emp->priv->druid_page) { + gnome_druid_set_page((GnomeDruid *)emp->widget, (GnomeDruidPage *)emp->priv->druid_page->frame); + ec_druid_check_current(emp); + } + } else { + if (emp->window) { + if (e_config_page_check(emp, NULL)) { + gtk_dialog_set_response_sensitive((GtkDialog *)emp->window, GTK_RESPONSE_OK, TRUE); + } else { + gtk_dialog_set_response_sensitive((GtkDialog *)emp->window, GTK_RESPONSE_OK, FALSE); + } + } + } + return FALSE; +} + /** * e_config_target_changed: * @emp: @@ -939,8 +962,10 @@ e_config_create_window(EConfig *emp, struct _GtkWindow *parent, const char *titl **/ void e_config_target_changed(EConfig *emp, e_config_target_change_t how) { - if (how == E_CONFIG_TARGET_CHANGED_REBUILD) - ec_rebuild(emp); + if (how == E_CONFIG_TARGET_CHANGED_REBUILD) { + g_idle_add (ec_idle_handler_for_rebuild, emp); + return; + } if (emp->type == E_CONFIG_DRUID) { if (emp->priv->druid_page) { |