st-scroll-view: Unconditionally allocate scrollbars
Commit cfecd063c9ca3d18cd changed the allocation logic to not allocate scrollbars when the *_visible booleans are false. This breaks the fade effect as well as the NEVER policy. We do not paint scrollbars when they are not supposed to be visible, so not allocating them and thus leaving them in a "needs allocation" state just causes problems. I am not convinced that it solved any problem to begin with (we don't paint them anyway). As the previous condition has basically always been true, just do it unconditionally. https://bugzilla.gnome.org/show_bug.cgi?id=705664
This commit is contained in:
parent
8191e10665
commit
52417a8363
@ -598,42 +598,36 @@ st_scroll_view_allocate (ClutterActor *actor,
|
||||
*/
|
||||
|
||||
/* Vertical scrollbar */
|
||||
if (vscrollbar_visible)
|
||||
{
|
||||
if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL)
|
||||
{
|
||||
child_box.x1 = content_box.x1;
|
||||
child_box.x2 = content_box.x1 + sb_width;
|
||||
}
|
||||
else
|
||||
{
|
||||
child_box.x1 = content_box.x2 - sb_width;
|
||||
child_box.x2 = content_box.x2;
|
||||
}
|
||||
child_box.y1 = content_box.y1;
|
||||
child_box.y2 = content_box.y2 - (hscrollbar_visible ? sb_height : 0);
|
||||
if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL)
|
||||
{
|
||||
child_box.x1 = content_box.x1;
|
||||
child_box.x2 = content_box.x1 + sb_width;
|
||||
}
|
||||
else
|
||||
{
|
||||
child_box.x1 = content_box.x2 - sb_width;
|
||||
child_box.x2 = content_box.x2;
|
||||
}
|
||||
child_box.y1 = content_box.y1;
|
||||
child_box.y2 = content_box.y2 - (hscrollbar_visible ? sb_height : 0);
|
||||
|
||||
clutter_actor_allocate (priv->vscroll, &child_box, flags);
|
||||
}
|
||||
clutter_actor_allocate (priv->vscroll, &child_box, flags);
|
||||
|
||||
/* Horizontal scrollbar */
|
||||
if (hscrollbar_visible)
|
||||
{
|
||||
if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL)
|
||||
{
|
||||
child_box.x1 = content_box.x1 + (vscrollbar_visible ? sb_width : 0);
|
||||
child_box.x2 = content_box.x2;
|
||||
}
|
||||
else
|
||||
{
|
||||
child_box.x1 = content_box.x1;
|
||||
child_box.x2 = content_box.x2 - (vscrollbar_visible ? sb_width : 0);
|
||||
}
|
||||
child_box.y1 = content_box.y2 - sb_height;
|
||||
child_box.y2 = content_box.y2;
|
||||
if (clutter_actor_get_text_direction (actor) == CLUTTER_TEXT_DIRECTION_RTL)
|
||||
{
|
||||
child_box.x1 = content_box.x1 + (vscrollbar_visible ? sb_width : 0);
|
||||
child_box.x2 = content_box.x2;
|
||||
}
|
||||
else
|
||||
{
|
||||
child_box.x1 = content_box.x1;
|
||||
child_box.x2 = content_box.x2 - (vscrollbar_visible ? sb_width : 0);
|
||||
}
|
||||
child_box.y1 = content_box.y2 - sb_height;
|
||||
child_box.y2 = content_box.y2;
|
||||
|
||||
clutter_actor_allocate (priv->hscroll, &child_box, flags);
|
||||
}
|
||||
clutter_actor_allocate (priv->hscroll, &child_box, flags);
|
||||
|
||||
/* In case the scrollbar policy is NEVER or scrollbars should be
|
||||
* overlayed, we don't trim the content box allocation by the
|
||||
|
Loading…
x
Reference in New Issue
Block a user