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