aboutsummaryrefslogtreecommitdiffstats
path: root/filter/filter-option.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-option.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-option.c')
-rw-r--r--filter/filter-option.c19
1 files changed, 18 insertions, 1 deletions
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;