diff options
author | Matthias Clasen <maclas@gmx.de> | 2003-12-12 23:40:58 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2003-12-12 23:40:58 +0000 |
commit | 802e094bd3500fa9a0f9591b5347346a5d3e2efc (patch) | |
tree | 2168b7780f61feee354c26d2773c85255f82b694 /gtk/gtkviewport.c | |
parent | 375ccb28b329d28453b9cf8de66be7d000640736 (diff) | |
download | gtk+-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.c | 8 |
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); } |