aboutsummaryrefslogtreecommitdiffstats
path: root/filter/filter-system-flag.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@helixcode.com>2001-01-10 13:44:23 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-01-10 13:44:23 +0800
commitf54327b748170a6e771dc0cd87eff918d7f64b2d (patch)
tree77ad253ada6b454862cffdcaddc4548b460d039e /filter/filter-system-flag.c
parent8f1d09360b6e8d6c07ce44d1a437678b41226524 (diff)
downloadgsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.gz
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.bz2
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.lz
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.xz
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.tar.zst
gsoc2013-evolution-f54327b748170a6e771dc0cd87eff918d7f64b2d.zip
Attach to the "activate" signal - this should now make it so that a
2001-01-10 Jeffrey Stedfast <fejj@helixcode.com> * 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
Diffstat (limited to 'filter/filter-system-flag.c')
-rw-r--r--filter/filter-system-flag.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/filter/filter-system-flag.c b/filter/filter-system-flag.c
index f1eb2a5b10..3667876e23 100644
--- a/filter/filter-system-flag.c
+++ b/filter/filter-system-flag.c
@@ -69,12 +69,12 @@ struct _system_flag {
};
static struct _system_flag *
-find_option (const char *name)
+find_option (const char *value)
{
struct _system_flag *flag;
for (flag = system_flags; flag->title; flag++) {
- if (!g_strcasecmp (name, flag->value))
+ if (!g_strcasecmp (value, flag->value))
return flag;
}
@@ -215,26 +215,36 @@ static GtkWidget *
get_widget (FilterElement *fe)
{
FilterSystemFlag *fsf = (FilterSystemFlag *) fe;
- GtkWidget *omenu, *menu, *item;
+ GtkWidget *omenu, *menu, *item, *first = NULL;
struct _system_flag *flag;
int index = 0, current = 0;
- fsf->value = system_flags[0].value;
-
menu = gtk_menu_new ();
for (flag = system_flags; flag->title; flag++) {
item = gtk_menu_item_new_with_label (flag->title);
gtk_object_set_data (GTK_OBJECT (item), "flag", flag);
- gtk_signal_connect (GTK_OBJECT (item), "select", item_selected, fe);
+ gtk_signal_connect (GTK_OBJECT (item), "activate", item_selected, fe);
+
gtk_menu_append (GTK_MENU (menu), item);
+
gtk_widget_show (item);
- if (!strcmp (fsf->value, flag->value))
+
+ if (fsf->value && !g_strcasecmp (fsf->value, flag->value)) {
current = index;
+ first = item;
+ } else if (!first) {
+ first = item;
+ }
+
index++;
}
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;