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;