st/viewport: Fix horizontal translation in RTL locales
In RTL locales, the lowest value should correspond to the right-most position and vice-versa. That this went unnoticed for so long shows how we have avoided horizontal scrolling so far :-) https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1318
This commit is contained in:
parent
e4cbe5126a
commit
3f4b253dac
@ -301,6 +301,26 @@ st_viewport_allocate (ClutterActor *actor,
|
||||
}
|
||||
}
|
||||
|
||||
static double
|
||||
get_hadjustment_value (StViewport *viewport)
|
||||
{
|
||||
StViewportPrivate *priv = st_viewport_get_instance_private (viewport);
|
||||
ClutterTextDirection direction;
|
||||
double x, upper, page_size;
|
||||
|
||||
if (!priv->hadjustment)
|
||||
return 0;
|
||||
|
||||
st_adjustment_get_values (priv->hadjustment,
|
||||
&x, NULL, &upper, NULL, NULL, &page_size);
|
||||
|
||||
direction = clutter_actor_get_text_direction (CLUTTER_ACTOR (viewport));
|
||||
if (direction == CLUTTER_TEXT_DIRECTION_RTL)
|
||||
return upper - page_size - x;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
static void
|
||||
st_viewport_apply_transform (ClutterActor *actor,
|
||||
CoglMatrix *matrix)
|
||||
@ -314,7 +334,7 @@ st_viewport_apply_transform (ClutterActor *actor,
|
||||
parent_class->apply_transform (actor, matrix);
|
||||
|
||||
if (priv->hadjustment)
|
||||
x = st_adjustment_get_value (priv->hadjustment);
|
||||
x = get_hadjustment_value (viewport);
|
||||
else
|
||||
x = 0;
|
||||
|
||||
@ -336,7 +356,7 @@ get_border_paint_offsets (StViewport *viewport,
|
||||
StViewportPrivate *priv = st_viewport_get_instance_private (viewport);
|
||||
|
||||
if (priv->hadjustment)
|
||||
*x = st_adjustment_get_value (priv->hadjustment);
|
||||
*x = get_hadjustment_value (viewport);
|
||||
else
|
||||
*x = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user