From ea02b70707ee796848d28b9b676a112e32ee6e77 Mon Sep 17 00:00:00 2001
From: Andrzej <ndrwrdck@gmail.com>
Date: Sat, 29 Oct 2016 00:33:37 +0100
Subject: [PATCH] Fixes to the panel sizing.

Issue exposed by the pager plugin, which somehow forces
use of width_for_height and height_for_width functions.
---
 panel/panel-itembar.c |  7 ++++---
 panel/panel-window.c  | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/panel/panel-itembar.c b/panel/panel-itembar.c
index 2a254295c..6f646a4b5 100644
--- a/panel/panel-itembar.c
+++ b/panel/panel-itembar.c
@@ -344,7 +344,6 @@ panel_itembar_get_preferred_length (GtkWidget      *widget,
             gtk_widget_get_preferred_width (child->widget, &child_len_min, &child_len);
           else
             gtk_widget_get_preferred_height (child->widget, &child_len_min, &child_len);
-
           /* check if the small child fits in a row */
           if (child->option == CHILD_OPTION_SMALL
               && itembar->nrows > 1)
@@ -388,12 +387,14 @@ panel_itembar_get_preferred_length (GtkWidget      *widget,
 
   /* return the total size */
   border_width = gtk_container_get_border_width (GTK_CONTAINER (widget)) * 2;
+  total_len += border_width;
+  total_len_min += border_width;
 
   if (natural_length != NULL)
-    *natural_length = total_len + border_width;
+    *natural_length = total_len;
 
   if (minimum_length != NULL)
-    *minimum_length = total_len + border_width;
+    *minimum_length = total_len_min;
 }
 
 
diff --git a/panel/panel-window.c b/panel/panel-window.c
index b090eb7f2..cd96dd16e 100644
--- a/panel/panel-window.c
+++ b/panel/panel-window.c
@@ -115,6 +115,14 @@ static void         panel_window_get_preferred_width        (GtkWidget        *w
 static void         panel_window_get_preferred_height       (GtkWidget        *widget,
                                                              gint             *minimum_height,
                                                              gint             *natural_height);
+static void         panel_window_get_preferred_width_for_height (GtkWidget        *widget,
+                                                                 gint              height,
+                                                                 gint             *minimum_width,
+                                                                 gint             *natural_width);
+static void         panel_window_get_preferred_height_for_width (GtkWidget        *widget,
+                                                                 gint              width,
+                                                                 gint             *minimum_height,
+                                                                 gint             *natural_height);
 static void         panel_window_size_allocate              (GtkWidget        *widget,
                                                              GtkAllocation    *alloc);
 static void         panel_window_size_allocate_set_xy       (PanelWindow      *window,
@@ -352,6 +360,8 @@ panel_window_class_init (PanelWindowClass *klass)
   gtkwidget_class->grab_notify = panel_window_grab_notify;
   gtkwidget_class->get_preferred_width = panel_window_get_preferred_width;
   gtkwidget_class->get_preferred_height = panel_window_get_preferred_height;
+  gtkwidget_class->get_preferred_width_for_height = panel_window_get_preferred_width_for_height;
+  gtkwidget_class->get_preferred_height_for_width = panel_window_get_preferred_height_for_width;
   gtkwidget_class->size_allocate = panel_window_size_allocate;
   gtkwidget_class->screen_changed = panel_window_screen_changed;
   gtkwidget_class->style_set = panel_window_style_set;
@@ -1256,6 +1266,28 @@ panel_window_get_preferred_height (GtkWidget *widget,
 
 
 
+static void
+panel_window_get_preferred_width_for_height (GtkWidget *widget,
+                                             gint       height,
+                                             gint      *minimum_width,
+                                             gint      *natural_width)
+{
+  panel_window_get_preferred_width (widget, minimum_width, natural_width);
+}
+
+
+
+static void
+panel_window_get_preferred_height_for_width (GtkWidget *widget,
+                                             gint       width,
+                                             gint      *minimum_height,
+                                             gint      *natural_height)
+{
+  panel_window_get_preferred_height (widget, minimum_height, natural_height);
+}
+
+
+
 static void
 panel_window_size_allocate (GtkWidget     *widget,
                             GtkAllocation *alloc)
-- 
GitLab