** Fix for bug #529179
2008-04-23 Milan Crha <mcrha@redhat.com> ** Fix for bug #529179 * em-folder-browser.c: (struct _EMFolderBrowserPrivate), (labels_changed_idle_cb), (gconf_labels_changed), (emfb_destroy): Rebuild search menu rather on idle, then immediately after the change in gconf, because other parts may not have this change propagated yet. svn path=/trunk/; revision=35408
This commit is contained in:
@ -1,3 +1,12 @@
|
||||
2008-04-23 Milan Crha <mcrha@redhat.com>
|
||||
|
||||
** Fix for bug #529179
|
||||
|
||||
* em-folder-browser.c: (struct _EMFolderBrowserPrivate),
|
||||
(labels_changed_idle_cb), (gconf_labels_changed), (emfb_destroy):
|
||||
Rebuild search menu rather on idle, then immediately after the change
|
||||
in gconf, because other parts may not have this change propagated yet.
|
||||
|
||||
2008-04-22 Matthew Barnes <mbarnes@redhat.com>
|
||||
|
||||
** Fixes bug #458505
|
||||
|
||||
@ -130,6 +130,7 @@ struct _EMFolderBrowserPrivate {
|
||||
EMMenu *menu; /* toplevel menu manager */
|
||||
|
||||
guint labels_change_notify_id; /* mail_config's notify id */
|
||||
guint labels_change_idle_id; /* rebuild menu on idle, when all know about a change */
|
||||
};
|
||||
|
||||
typedef struct EMFBSearchBarItem {
|
||||
@ -436,13 +437,27 @@ html_scroll (GtkHTML *html,
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
labels_changed_idle_cb (gpointer user_data)
|
||||
{
|
||||
EMFolderBrowser *emfb = (EMFolderBrowser*) user_data;
|
||||
|
||||
emfb_realize (GTK_WIDGET (emfb));
|
||||
|
||||
emfb->priv->labels_change_idle_id = 0;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gconf_labels_changed (GConfClient *client, guint cnxn_id,
|
||||
GConfEntry *entry, gpointer user_data)
|
||||
{
|
||||
EMFolderBrowser *emfb = (EMFolderBrowser*) user_data;
|
||||
|
||||
/* regenerate menu option whenever something changed in labels */
|
||||
if (user_data)
|
||||
emfb_realize (user_data);
|
||||
if (emfb && !emfb->priv->labels_change_idle_id)
|
||||
emfb->priv->labels_change_idle_id = g_idle_add (labels_changed_idle_cb, emfb);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -580,6 +595,12 @@ emfb_destroy(GtkObject *o)
|
||||
emfb->priv->labels_change_notify_id = 0;
|
||||
}
|
||||
|
||||
if (emfb->priv->labels_change_idle_id) {
|
||||
g_source_remove (emfb->priv->labels_change_idle_id);
|
||||
|
||||
emfb->priv->labels_change_idle_id = 0;
|
||||
}
|
||||
|
||||
((GtkObjectClass *)emfb_parent)->destroy(o);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user