Commit fcfad2dd authored by Daniel Boles's avatar Daniel Boles Committed by Daniel Boles

ScrolledWindow: Don’t req size for autohidden bars

POLICY_AUTOMATIC means scrollbars are only shown when needed, i.e. when
the size of the window is not large enough to show the entire child. So
when measuring the preferred size, such scrollbars should be ignored.

But measure() added size for *any* non-overlay scrollbar of the opposite
orientation, e.g. for horizontal size, it added the width of vscrollbar.
So we requested for child + bar, & having enough for child meant that the
policy hid the bar, leaving extra space empty below/right of the child.

Fix this by only adding size for such bars if they use POLICY_ALWAYS.
parent 7214f4d4
......@@ -1880,7 +1880,7 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget,
minimum_req.width = MAX (minimum_req.width, hscrollbar_requisition.width + sborder.left + sborder.right);
natural_req.width = MAX (natural_req.width, hscrollbar_requisition.width + sborder.left + sborder.right);
if (!priv->use_indicators)
if (!priv->use_indicators && priv->hscrollbar_policy == GTK_POLICY_ALWAYS)
minimum_req.height += scrollbar_spacing + hscrollbar_requisition.height;
natural_req.height += scrollbar_spacing + hscrollbar_requisition.height;
......@@ -1892,7 +1892,7 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget,
minimum_req.height = MAX (minimum_req.height, vscrollbar_requisition.height + + sborder.bottom);
natural_req.height = MAX (natural_req.height, vscrollbar_requisition.height + + sborder.bottom);
if (!priv->use_indicators)
if (!priv->use_indicators && priv->vscrollbar_policy == GTK_POLICY_ALWAYS)
minimum_req.width += scrollbar_spacing + vscrollbar_requisition.width;
natural_req.width += scrollbar_spacing + vscrollbar_requisition.width;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment