diff -up evolution-3.12.11/e-util/e-filter-rule.c.filter-rules-scroll evolution-3.12.11/e-util/e-filter-rule.c --- evolution-3.12.11/e-util/e-filter-rule.c.filter-rules-scroll 2014-06-04 20:27:43.000000000 +0200 +++ evolution-3.12.11/e-util/e-filter-rule.c 2016-08-23 18:38:17.667859747 +0200 @@ -251,6 +251,9 @@ do_grab_focus_cb (GtkWidget *widget, } } +static void parts_mapped_cb (GtkWidget *widget, + GtkScrolledWindow *scrolled_window); + static void more_parts (GtkWidget *button, FilterRuleData *data) @@ -308,6 +311,7 @@ more_parts (GtkWidget *button, gtk_adjustment_set_value (adjustment, upper); } + parts_mapped_cb (NULL, GTK_SCROLLED_WINDOW (w)); } } } @@ -727,6 +731,16 @@ ensure_scrolled_height_cb (GtkAdjustment gtk_scrolled_window_set_min_content_height (scrolled_window, require_scw_height); } +static void +parts_mapped_cb (GtkWidget *widget, + GtkScrolledWindow *scrolled_window) +{ + g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window)); + + ensure_scrolled_width_cb (gtk_scrolled_window_get_hadjustment (scrolled_window), NULL, scrolled_window); + ensure_scrolled_height_cb (gtk_scrolled_window_get_vadjustment (scrolled_window), NULL, scrolled_window); +} + static GtkWidget * filter_rule_get_widget (EFilterRule *rule, ERuleContext *context) @@ -904,6 +918,8 @@ filter_rule_get_widget (EFilterRule *rul vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 1.0, 1.0, 1.0, 1.0)); scrolledwindow = gtk_scrolled_window_new (hadj, vadj); + g_signal_connect (parts, "map", + G_CALLBACK (parts_mapped_cb), scrolledwindow); e_signal_connect_notify ( hadj, "notify::upper", G_CALLBACK (ensure_scrolled_width_cb), scrolledwindow); diff -up evolution-3.12.11/mail/em-filter-rule.c.filter-rules-scroll evolution-3.12.11/mail/em-filter-rule.c --- evolution-3.12.11/mail/em-filter-rule.c.filter-rules-scroll 2016-08-23 18:38:11.923859994 +0200 +++ evolution-3.12.11/mail/em-filter-rule.c 2016-08-23 18:38:17.667859747 +0200 @@ -466,6 +466,8 @@ do_grab_focus_cb (GtkWidget *widget, } } +static void ensure_scrolled_height (GtkScrolledWindow *scrolled_window); + static void more_parts (GtkWidget *button, struct _rule_data *data) @@ -507,14 +509,14 @@ more_parts (GtkWidget *button, upper = gtk_adjustment_get_upper (adjustment); gtk_adjustment_set_value (adjustment, upper); } + + ensure_scrolled_height (GTK_SCROLLED_WINDOW (w)); } } } static void -ensure_scrolled_height_cb (GtkAdjustment *adj, - GParamSpec *param_spec, - GtkScrolledWindow *scrolled_window) +ensure_scrolled_height (GtkScrolledWindow *scrolled_window) { GtkWidget *toplevel; GdkScreen *screen; @@ -564,6 +566,14 @@ ensure_scrolled_height_cb (GtkAdjustment gtk_scrolled_window_set_min_content_height (scrolled_window, require_scw_height); } +static void +ensure_scrolled_height_cb (GtkAdjustment *adj, + GParamSpec *param_spec, + GtkScrolledWindow *scrolled_window) +{ + ensure_scrolled_height (scrolled_window); +} + static GtkWidget * get_widget (EFilterRule *fr, ERuleContext *rc) @@ -663,6 +673,8 @@ get_widget (EFilterRule *fr, vadj, "notify::upper", G_CALLBACK (ensure_scrolled_height_cb), scrolledwindow); + g_signal_connect (scrolledwindow, "map", G_CALLBACK (ensure_scrolled_height), NULL); + gtk_widget_show_all (widget); return widget;