summaryrefslogtreecommitdiff
path: root/gtk/gtkviewport.c
diff options
context:
space:
mode:
authorMatthias Clasen <maclas@gmx.de>2003-12-12 23:40:58 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2003-12-12 23:40:58 +0000
commit802e094bd3500fa9a0f9591b5347346a5d3e2efc (patch)
tree2168b7780f61feee354c26d2773c85255f82b694 /gtk/gtkviewport.c
parent375ccb28b329d28453b9cf8de66be7d000640736 (diff)
downloadgtk+-802e094bd3500fa9a0f9591b5347346a5d3e2efc.tar.gz
Implement "gravity" for RTL mode in a better way: Keep the distance from
Sat Dec 13 00:39:24 2003 Matthias Clasen <maclas@gmx.de> * gtk/gtkviewport.c (viewport_set_hadjustment_values): Implement "gravity" for RTL mode in a better way: Keep the distance from the upper end of the page to the upper bound constant. This also fixes problems with the initial position of the viewport in RTL mode. (#129063)
Diffstat (limited to 'gtk/gtkviewport.c')
-rw-r--r--gtk/gtkviewport.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c
index 4977865ff5..084a7a00b5 100644
--- a/gtk/gtkviewport.c
+++ b/gtk/gtkviewport.c
@@ -383,10 +383,14 @@ viewport_set_hadjustment_values (GtkViewport *viewport,
GtkAllocation view_allocation;
GtkAdjustment *hadjustment = gtk_viewport_get_hadjustment (viewport);
gdouble old_page_size;
+ gdouble old_upper;
+ gdouble old_value;
viewport_get_view_allocation (viewport, &view_allocation);
old_page_size = hadjustment->page_size;
+ old_upper = hadjustment->upper;
+ old_value = hadjustment->value;
hadjustment->page_size = view_allocation.width;
hadjustment->step_increment = view_allocation.width * 0.1;
hadjustment->page_increment = view_allocation.width * 0.9;
@@ -405,8 +409,8 @@ viewport_set_hadjustment_values (GtkViewport *viewport,
if (gtk_widget_get_direction (GTK_WIDGET (viewport)) == GTK_TEXT_DIR_RTL)
{
- gdouble old_value = hadjustment->value;
- hadjustment->value = hadjustment->value + old_page_size - hadjustment->page_size;
+ gdouble dist = old_upper - (old_value + old_page_size);
+ hadjustment->value = hadjustment->upper - dist - hadjustment->page_size;
viewport_reclamp_adjustment (hadjustment, value_changed);
*value_changed = (old_value != hadjustment->value);
}