Blame SOURCES/evolution-3.12.11-filter-rules-scroll.patch

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