summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-12-15 20:18:59 -0500
committerMatthias Clasen <mclasen@redhat.com>2015-12-15 21:58:45 -0500
commit5aec427c1a45c8932810dc0774194a3a8e37e5ad (patch)
tree553ac15bdbbbb54e3264c30c450463a7c88c3c6f
parent26d42771efc66a4224e96bd80d9dc13ce8c10220 (diff)
downloadgtk+-5aec427c1a45c8932810dc0774194a3a8e37e5ad.tar.gz
paned: Fix size allocation
We were passing negative widths to height-for-width calls that didn't expect this.
-rw-r--r--gtk/gtkpaned.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index dbd60cc6bf..7a5940ef36 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -1178,36 +1178,28 @@ gtk_paned_measure_handle (GtkCssGadget *gadget,
gpointer data)
{
GtkWidget *widget = gtk_css_gadget_get_owner (gadget);
- GtkPaned *paned = GTK_PANED (widget);
- GtkPanedPrivate *priv = paned->priv;
- GtkStyleContext *context;
- gint handle_size;
GtkCssStyle *style;
gint min_size;
style = gtk_css_gadget_get_style (gadget);
- if (orientation == priv->orientation)
+ if (orientation == GTK_ORIENTATION_HORIZONTAL)
+ min_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH);
+ else
+ min_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+
+ if (min_size != 0)
+ *minimum = *natural = min_size;
+ else
{
- if (orientation == GTK_ORIENTATION_HORIZONTAL)
- min_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH);
- else
- min_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);
+ GtkStyleContext *context;
- if (min_size != 0)
- *minimum = *natural = min_size;
- else
- {
- context = gtk_widget_get_style_context (widget);
- gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
- gtk_widget_style_get (widget, "handle-size", &handle_size, NULL);
- gtk_style_context_restore (context);
- *minimum = *natural = handle_size;
- }
+ context = gtk_widget_get_style_context (widget);
+ gtk_style_context_save_to_node (context, gtk_css_gadget_get_node (gadget));
+ gtk_widget_style_get (widget, "handle-size", &min_size, NULL);
+ gtk_style_context_restore (context);
+
+ *minimum = *natural = min_size;
}
- else if (orientation == GTK_ORIENTATION_HORIZONTAL)
- *minimum = *natural = gtk_widget_get_allocated_width (widget);
- else
- *minimum = *natural = gtk_widget_get_allocated_height(widget);
}
static void
@@ -1411,7 +1403,7 @@ gtk_paned_allocate (GtkCssGadget *gadget,
window1_allocation.y = window2_allocation.y = allocation->y;
window2_allocation.x = window1_allocation.x + priv->child1_size + priv->handle_pos.width;
- window2_allocation.width = MAX (1, allocation->x + allocation->width - window2_allocation.x);
+ window2_allocation.width = MAX (1, allocation->width - priv->child1_size - priv->handle_pos.width);
if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL)
{