From f54327b748170a6e771dc0cd87eff918d7f64b2d Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Wed, 10 Jan 2001 05:44:23 +0000 Subject: Attach to the "activate" signal - this should now make it so that a 2001-01-10 Jeffrey Stedfast * filter-option.c (get_widget): Attach to the "activate" signal - this should now make it so that a filter-option will "remember" what a user changed. * filter-system-flag.c (get_widget): Don't reset fsf->value to the first system flag, this should already be defaulted to the appropriate flag. This should fix the problem of always defaulting to the first menu option and thus "forgetting" the user's settings. svn path=/trunk/; revision=7356 --- filter/filter-option.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'filter/filter-option.c') diff --git a/filter/filter-option.c b/filter/filter-option.c index 658136f0cb..3b3660dd5c 100644 --- a/filter/filter-option.c +++ b/filter/filter-option.c @@ -239,6 +239,14 @@ xml_decode (FilterElement *fe, xmlNodePtr node) return 0; } +static void +option_changed (GtkWidget *widget, FilterElement *fe) +{ + FilterOption *fo = (FilterOption *)fe; + + fo->current = gtk_object_get_data (GTK_OBJECT (widget), "option"); +} + static GtkWidget * get_widget (FilterElement *fe) { @@ -246,6 +254,7 @@ get_widget (FilterElement *fe) GtkWidget *menu; GtkWidget *omenu; GtkWidget *item; + GtkWidget *first = NULL; GList *l = fo->options; struct _filter_option *op; int index = 0, current = 0; @@ -253,12 +262,16 @@ get_widget (FilterElement *fe) menu = gtk_menu_new (); while (l) { op = l->data; - item = gtk_menu_item_new_with_label (_(op->title)); + item = gtk_menu_item_new_with_label (op->title); gtk_object_set_data (GTK_OBJECT (item), "option", op); + gtk_signal_connect (GTK_OBJECT (item), "activate", option_changed, fe); gtk_menu_append (GTK_MENU (menu), item); gtk_widget_show (item); if (op == fo->current) { current = index; + first = item; + } else if (!first) { + first = item; } l = g_list_next (l); @@ -267,6 +280,10 @@ get_widget (FilterElement *fe) omenu = gtk_option_menu_new (); gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); + + if (first) + gtk_signal_emit_by_name (GTK_OBJECT (first), "activate", fe); + gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), current); return omenu; -- cgit v1.2.3