[gtk+/wip/dboles/scrolledwindow-measure: 3/4] ScrolledWindow: Don’t req size for autohidden bars
- From: Daniel Boles <dboles src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/dboles/scrolledwindow-measure: 3/4] ScrolledWindow: Don’t req size for autohidden bars
- Date: Fri, 2 Jun 2017 18:03:17 +0000 (UTC)
commit 2a1b1997579a3503bc4bc9aa55f9c710a75bde7a
Author: Daniel Boles <dboles src gnome org>
Date: Fri Feb 24 22:46:05 2017 +0000
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.
https://bugzilla.gnome.org/show_bug.cgi?id=778853
gtk/gtkscrolledwindow.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index c2788cf..7b9ee1c 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1867,7 +1867,7 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget,
minimum_req = MAX (minimum_req, hscrollbar_requisition.width + sborder.left + sborder.right);
natural_req = MAX (natural_req, hscrollbar_requisition.width + sborder.left + sborder.right);
}
- else if (!priv->use_indicators)
+ else if (!priv->use_indicators && priv->hscrollbar_policy == GTK_POLICY_ALWAYS)
{
minimum_req += scrollbar_spacing + hscrollbar_requisition.height;
natural_req += scrollbar_spacing + hscrollbar_requisition.height;
@@ -1884,7 +1884,7 @@ gtk_scrolled_window_measure (GtkCssGadget *gadget,
minimum_req = MAX (minimum_req, vscrollbar_requisition.height + sborder.top + sborder.bottom);
natural_req = MAX (natural_req, vscrollbar_requisition.height + sborder.top + sborder.bottom);
}
- else if (!priv->use_indicators)
+ else if (!priv->use_indicators && priv->vscrollbar_policy == GTK_POLICY_ALWAYS)
{
minimum_req += scrollbar_spacing + vscrollbar_requisition.width;
natural_req += scrollbar_spacing + vscrollbar_requisition.width;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]