diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/colorlabel.c | 37 | ||||
-rw-r--r-- | src/gtkutils.c | 10 | ||||
-rw-r--r-- | src/gtkutils.h | 4 | ||||
-rw-r--r-- | src/prefs_filter_edit.c | 24 |
4 files changed, 54 insertions, 21 deletions
diff --git a/src/colorlabel.c b/src/colorlabel.c index 40b27d06..5de4fe43 100644 --- a/src/colorlabel.c +++ b/src/colorlabel.c @@ -34,6 +34,7 @@ #include <gtk/gtkmenuitem.h> #include <gtk/gtkalignment.h> #include <gtk/gtkhbox.h> +#include <gtk/gtkvbox.h> #include <gtk/gtkwindow.h> #include <gtk/gtkdrawingarea.h> @@ -228,7 +229,7 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index) { GtkWidget *label; GtkWidget *hbox; - GtkWidget *align; + GtkWidget *vbox; GtkWidget *item; G_RETURN_VAL_IF_INVALID_COLOR(color_index, NULL); @@ -241,22 +242,20 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index) * how to create pixmap menus */ label = gtk_label_new(label_colors[color_index].label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(item), hbox); - align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); - gtk_widget_show(align); - gtk_container_set_border_width(GTK_CONTAINER(align), 1); + vbox = gtk_vbox_new(TRUE, 0); + gtk_widget_show(vbox); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 1); - gtk_container_add(GTK_CONTAINER(align), label_colors[color_index].widget); + gtk_container_add(GTK_CONTAINER(vbox), + label_colors[color_index].widget); gtk_widget_show(label_colors[color_index].widget); - gtk_widget_set_size_request - (align, LABEL_COLOR_WIDTH, LABEL_COLOR_HEIGHT); - gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4); return item; @@ -267,8 +266,6 @@ GtkWidget *colorlabel_create_check_color_menu_item(gint color_index) GtkWidget *colorlabel_create_color_menu(void) { GtkWidget *label; - GtkWidget *hbox; - GtkWidget *align; GtkWidget *item; GtkWidget *menu; gint i; @@ -288,7 +285,9 @@ GtkWidget *colorlabel_create_color_menu(void) /* and the color items */ for (i = 0; i < LABEL_COLORS_ELEMS; i++) { - GtkWidget *widget = colorlabel_create_color_widget(label_colors[i].color); + GtkWidget *hbox; + GtkWidget *vbox; + GtkWidget *widget; item = gtk_menu_item_new(); g_object_set_data(G_OBJECT(item), "color", @@ -296,22 +295,20 @@ GtkWidget *colorlabel_create_color_menu(void) label = gtk_label_new(label_colors[i].label); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_widget_show(label); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); gtk_container_add(GTK_CONTAINER(item), hbox); - align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0); - gtk_widget_show(align); - gtk_container_set_border_width(GTK_CONTAINER(align), 1); + vbox = gtk_vbox_new(TRUE, 0); + gtk_widget_show(vbox); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 1); - gtk_container_add(GTK_CONTAINER(align), widget); + widget = colorlabel_create_color_widget(label_colors[i].color); gtk_widget_show(widget); - gtk_widget_set_size_request - (align, LABEL_COLOR_WIDTH, LABEL_COLOR_HEIGHT); + gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), align, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 4); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); diff --git a/src/gtkutils.c b/src/gtkutils.c index 211cd1f5..96f99762 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -441,6 +441,16 @@ void gtkut_container_remove(GtkContainer *container, GtkWidget *widget) gtk_container_remove(container, widget); } +void gtkut_scrolled_window_reset_position(GtkScrolledWindow *window) +{ + GtkAdjustment *adj; + + adj = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(window)); + gtk_adjustment_set_value(adj, adj->lower); + adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(window)); + gtk_adjustment_set_value(adj, adj->lower); +} + gboolean gtkut_text_buffer_match_string(GtkTextBuffer *textbuf, const GtkTextIter *iter, gunichar *wcs, gint len, diff --git a/src/gtkutils.h b/src/gtkutils.h index 55cdf957..927e2db4 100644 --- a/src/gtkutils.h +++ b/src/gtkutils.h @@ -32,6 +32,7 @@ #include <gtk/gtkeditable.h> #include <gtk/gtkctree.h> #include <gtk/gtkcombo.h> +#include <gtk/gtkscrolledwindow.h> #include <gtk/gtktextview.h> #include <gtk/gtkitemfactory.h> #include <stdlib.h> @@ -134,6 +135,9 @@ void gtkut_editable_disable_im (GtkEditable *editable); void gtkut_container_remove (GtkContainer *container, GtkWidget *widget); +void gtkut_scrolled_window_reset_position + (GtkScrolledWindow *window); + gboolean gtkut_text_buffer_match_string (GtkTextBuffer *buffer, const GtkTextIter *iter, gunichar *wcs, diff --git a/src/prefs_filter_edit.c b/src/prefs_filter_edit.c index 3808917a..9a03d1ef 100644 --- a/src/prefs_filter_edit.c +++ b/src/prefs_filter_edit.c @@ -260,8 +260,14 @@ static void prefs_filter_action_add_cb (GtkWidget *widget, FilterRule *prefs_filter_edit_open(FilterRule *rule, const gchar *header) { + static gboolean lock = FALSE; FilterRule *new_rule; + if (lock) + return NULL; + + lock = TRUE; + if (!rule_edit_window.window) prefs_filter_edit_create(); @@ -271,6 +277,7 @@ FilterRule *prefs_filter_edit_open(FilterRule *rule, const gchar *header) prefs_filter_edit_rule_to_dialog(rule); if (header) prefs_filter_edit_activate_cond_header(header); + GTK_EVENTS_FLUSH(); gtk_widget_show(rule_edit_window.window); rule_edit_window.new_rule = NULL; @@ -278,9 +285,9 @@ FilterRule *prefs_filter_edit_open(FilterRule *rule, const gchar *header) while (rule_edit_window.edit_finished == FALSE) gtk_main_iteration(); + gtk_widget_hide(rule_edit_window.window); prefs_filter_edit_clear(); prefs_filter_set_msg_header_list(NULL); - gtk_widget_hide(rule_edit_window.window); new_rule = rule_edit_window.new_rule; rule_edit_window.new_rule = NULL; @@ -288,6 +295,8 @@ FilterRule *prefs_filter_edit_open(FilterRule *rule, const gchar *header) if (new_rule) debug_print("new rule created: %s\n", new_rule->name); + lock = FALSE; + return new_rule; } @@ -367,6 +376,7 @@ static void prefs_filter_edit_create(void) gtk_box_pack_start(GTK_BOX(hbox), bool_op_optmenu, FALSE, FALSE, 0); menu = gtk_menu_new(); + gtk_widget_show(menu); MENUITEM_ADD(menu, menuitem, _("If any of the following condition matches"), FLT_OR); MENUITEM_ADD(menu, menuitem, @@ -468,6 +478,11 @@ static void prefs_filter_edit_rule_to_dialog(FilterRule *rule) index); } + gtkut_scrolled_window_reset_position + (GTK_SCROLLED_WINDOW(rule_edit_window.cond_scrolled_win)); + gtkut_scrolled_window_reset_position + (GTK_SCROLLED_WINDOW(rule_edit_window.action_scrolled_win)); + prefs_filter_edit_add_rule_cond(rule); prefs_filter_edit_add_rule_action(rule); } @@ -558,6 +573,7 @@ static CondHBox *prefs_filter_edit_cond_hbox_create(void) } menu = gtk_menu_new(); + gtk_widget_show(menu); MENUITEM_ADD(menu, menuitem, NULL, PF_COND_SEPARATOR); COND_MENUITEM_ADD(_("To or Cc"), PF_COND_TO_OR_CC); COND_MENUITEM_ADD(_("Any header"), PF_COND_ANY_HEADER); @@ -579,6 +595,7 @@ static CondHBox *prefs_filter_edit_cond_hbox_create(void) gtk_box_pack_start(GTK_BOX(hbox), match_type_optmenu, FALSE, FALSE, 0); menu = gtk_menu_new(); + gtk_widget_show(menu); MENUITEM_ADD(menu, menuitem, _("contains"), PF_MATCH_CONTAIN); MENUITEM_ADD(menu, menuitem, _("doesn't contain"), @@ -594,17 +611,21 @@ static CondHBox *prefs_filter_edit_cond_hbox_create(void) gtk_option_menu_set_menu(GTK_OPTION_MENU(match_type_optmenu), menu); size_match_optmenu = gtk_option_menu_new(); + gtk_widget_show(size_match_optmenu); gtk_box_pack_start(GTK_BOX(hbox), size_match_optmenu, FALSE, FALSE, 0); menu = gtk_menu_new(); + gtk_widget_show(menu); MENUITEM_ADD(menu, menuitem, _("is larger than"), PF_SIZE_LARGER); MENUITEM_ADD(menu, menuitem, _("is smaller than"), PF_SIZE_SMALLER); gtk_option_menu_set_menu(GTK_OPTION_MENU(size_match_optmenu), menu); age_match_optmenu = gtk_option_menu_new(); + gtk_widget_show(age_match_optmenu); gtk_box_pack_start(GTK_BOX(hbox), age_match_optmenu, FALSE, FALSE, 0); menu = gtk_menu_new(); + gtk_widget_show(menu); MENUITEM_ADD(menu, menuitem, _("is longer than"), PF_AGE_LONGER); MENUITEM_ADD(menu, menuitem, _("is shorter than"), PF_AGE_SHORTER); gtk_option_menu_set_menu(GTK_OPTION_MENU(age_match_optmenu), menu); @@ -704,6 +725,7 @@ static ActionHBox *prefs_filter_edit_action_hbox_create(void) } menu = gtk_menu_new(); + gtk_widget_show(menu); ACTION_MENUITEM_ADD(_("Move to"), PF_ACTION_MOVE); ACTION_MENUITEM_ADD(_("Copy to"), PF_ACTION_COPY); ACTION_MENUITEM_ADD(_("Don't receive"), PF_ACTION_NOT_RECEIVE); |