diff options
author | Milan Crha <mcrha@redhat.com> | 2008-04-30 19:01:58 +0800 |
---|---|---|
committer | Milan Crha <mcrha@src.gnome.org> | 2008-04-30 19:01:58 +0800 |
commit | be98f84cbdf8536fe980e3b4216085003fcbce1e (patch) | |
tree | 2a203dec03b08d1fb299dca8a58ef96535471c5d /addressbook/gui/widgets | |
parent | 929ac5c61d7b300155ad9e73cfd3159934764314 (diff) | |
download | gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar.gz gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar.bz2 gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar.lz gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar.xz gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.tar.zst gsoc2013-evolution-be98f84cbdf8536fe980e3b4216085003fcbce1e.zip |
** Fix for bug #316390
2008-04-30 Milan Crha <mcrha@redhat.com>
** Fix for bug #316390
* addressbook/gui/widgets/e-addressbook-view.c: (categories_changed_cb),
(get_master_list), (eab_view_dispose), (eab_view_new),
(search_activated), (make_suboptions):
Listen for changes in categories setup and propagate them to UI.
* calendar/gui/e-memos.c: (struct _EMemosPrivate), (categories_changed_cb),
(setup_widgets), (e_memos_init), (e_memos_destroy):
* calendar/gui/gnome-cal.c: (struct _GnomeCalendarPrivate), (setup_widgets),
(categories_changed_cb), (gnome_calendar_init),
(gnome_calendar_destroy):
* calendar/gui/e-tasks.c: (struct _ETasksPrivate), (categories_changed_cb),
(setup_widgets), (e_tasks_init), (e_tasks_destroy):
Listen for changes in categories setup and propagate them to UI.
Note: be sure you've eds revision 8718 or better
svn path=/trunk/; revision=35458
Diffstat (limited to 'addressbook/gui/widgets')
-rw-r--r-- | addressbook/gui/widgets/e-addressbook-view.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 8c659f58c0..98576a9c2f 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -102,11 +102,12 @@ static void selection_get (GtkWidget *invisible, GtkSelectionData *selection_dat guint info, guint time_stamp, EABView *view); static void invisible_destroyed (gpointer data, GObject *where_object_was); +static void categories_changed_cb (gpointer object, gpointer user_data); static void make_suboptions (EABView *view); static void query_changed (ESearchBar *esb, EABView *view); static void search_activated (ESearchBar *esb, EABView *view); static void search_menu_activated (ESearchBar *esb, int id, EABView *view); -static GList *get_master_list (void); +static GList *get_master_list (gboolean force_rebuild); #define PARENT_TYPE GTK_TYPE_VBOX static GtkVBoxClass *parent_class = NULL; @@ -315,6 +316,8 @@ eab_view_dispose (GObject *object) { EABView *eav = EAB_VIEW(object); + e_categories_unregister_change_listener (G_CALLBACK (categories_changed_cb), eav); + if (eav->model) { g_signal_handlers_disconnect_matched (eav->model, G_SIGNAL_MATCH_DATA, @@ -476,6 +479,8 @@ eab_view_new (void) gtk_widget_show (GTK_WIDGET (eav->search)); make_suboptions (eav); + e_categories_register_change_listener (G_CALLBACK (categories_changed_cb), eav); + g_signal_connect (eav->search, "query_changed", G_CALLBACK (query_changed), eav); g_signal_connect (eav->search, "search_activated", @@ -1403,7 +1408,7 @@ search_activated (ESearchBar *esb, EABView *v) subid = e_search_bar_get_viewitem_id (esb); if (subid) { - master_list = get_master_list (); + master_list = get_master_list (FALSE); category_name = g_list_nth_data (master_list, subid-1); view_sexp = g_strdup_printf ("(is \"category_list\" \"%s\")", category_name); search_query = g_strconcat ("(and ", view_sexp, search_query, ")", NULL); @@ -1496,6 +1501,13 @@ generate_viewoption_menu (EABSearchBarItem *subitems) } static void +categories_changed_cb (gpointer object, gpointer user_data) +{ + get_master_list (TRUE); + make_suboptions (user_data); +} + +static void make_suboptions (EABView *view) { EABSearchBarItem *subitems, *s; @@ -1503,7 +1515,7 @@ make_suboptions (EABView *view) gint i, N; GtkWidget *menu; - master_list = get_master_list (); + master_list = get_master_list (FALSE); N = g_list_length (master_list); subitems = g_new (EABSearchBarItem, N+2); @@ -1534,10 +1546,15 @@ make_suboptions (EABView *view) } static GList * -get_master_list (void) +get_master_list (gboolean force_rebuild) { static GList *category_list = NULL; + if (force_rebuild) { + g_list_free (category_list); + category_list = NULL; + } + if (category_list == NULL) { GList *l, *p = e_categories_get_list (); |