summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-09-01 18:54:47 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-09-01 18:54:47 +0000
commitee71d172f01cefdff9f90182e55b72da2306972d (patch)
treefb969c77b90ba25bf0a16e017f915659866018c5
parente7a3621fe3bf02f0a59b6ddddbd04dbd8e83d856 (diff)
downloadnautilus-ee71d172f01cefdff9f90182e55b72da2306972d.tar.gz
Adapt manual layout borders to auto layout borders, improve horizontal RTL
2008-09-01 Christian Neumair <cneumair@gnome.org> * libnautilus-private/nautilus-icon-container.c (nautilus_icon_container_update_scroll_region), (nautilus_icon_container_get_first_visible_icon), (nautilus_icon_container_scroll_to_icon): Adapt manual layout borders to auto layout borders, improve horizontal RTL scrolling to items. Unfortunately, programmatical scrolling is still somewhat broken due to subsequent relayouts as the horizontal scroll bar is shown/hidden. svn path=/trunk/; revision=14568
-rw-r--r--ChangeLog11
-rw-r--r--libnautilus-private/nautilus-icon-container.c40
2 files changed, 38 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 299fac11d..d1bb404c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,17 @@
2008-09-01 Christian Neumair <cneumair@gnome.org>
* libnautilus-private/nautilus-icon-container.c
+ (nautilus_icon_container_update_scroll_region),
+ (nautilus_icon_container_get_first_visible_icon),
+ (nautilus_icon_container_scroll_to_icon):
+ Adapt manual layout borders to auto layout borders, improve horizontal
+ RTL scrolling to items. Unfortunately, programmatical scrolling is
+ still somewhat broken due to subsequent relayouts as the horizontal
+ scroll bar is shown/hidden.
+
+2008-09-01 Christian Neumair <cneumair@gnome.org>
+
+ * libnautilus-private/nautilus-icon-container.c
(rightmost_in_top_row), (keyboard_right), (keyboard_left),
(keyboard_down), (keyboard_up):
In LTR mode, always jump to the top-left icon if no icon is selected.
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c
index 66ce01e69..3c7e432ae 100644
--- a/libnautilus-private/nautilus-icon-container.c
+++ b/libnautilus-private/nautilus-icon-container.c
@@ -1073,17 +1073,13 @@ nautilus_icon_container_update_scroll_region (NautilusIconContainer *container)
/* Auto-layout assumes a 0, 0 scroll origin */
if (nautilus_icon_container_is_auto_layout (container)) {
- if (nautilus_icon_container_is_layout_rtl (container)) {
- allocation = &GTK_WIDGET (container)->allocation;
- x2 = allocation->width;
- y2 = allocation->height;
- } else {
+ if (!nautilus_icon_container_is_layout_rtl (container)) {
x1 = 0;
- y1 = 0;
}
+ y1 = 0;
} else {
- x1 -= CONTAINER_PAD_LEFT;
- y1 -= CONTAINER_PAD_TOP;
+ x1 -= ICON_PAD_LEFT + CONTAINER_PAD_LEFT;
+ y1 -= ICON_PAD_TOP + CONTAINER_PAD_TOP;
}
x2 -= 1;
@@ -1099,6 +1095,7 @@ nautilus_icon_container_update_scroll_region (NautilusIconContainer *container)
*/
if (nautilus_icon_container_is_layout_vertical (container)) {
if (nautilus_icon_container_is_layout_rtl (container)) {
+ x2 += ICON_PAD_LEFT + CONTAINER_PAD_LEFT;
x1 -= ICON_PAD_RIGHT + CONTAINER_PAD_RIGHT;
} else {
x2 += ICON_PAD_RIGHT + CONTAINER_PAD_RIGHT;
@@ -6444,8 +6441,16 @@ nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container
hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (container));
vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (container));
+ if (nautilus_icon_container_is_layout_rtl (container)) {
+ x = hadj->value + hadj->page_size;
+ y = vadj->value;
+ } else {
+ x = hadj->value;
+ y = vadj->value;
+ }
+
eel_canvas_c2w (EEL_CANVAS (container),
- hadj->value, vadj->value,
+ x, y,
&x, &y);
l = container->details->icons;
@@ -6457,12 +6462,17 @@ nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container
if (icon_is_positioned (icon)) {
eel_canvas_item_get_bounds (EEL_CANVAS_ITEM (icon->item),
&x1, &y1, &x2, &y2);
+
if (nautilus_icon_container_is_layout_vertical (container)) {
pos = &x1;
- better_icon = x2 > x;
+ if (nautilus_icon_container_is_layout_rtl (container)) {
+ better_icon = x1 < x + ICON_PAD_LEFT;
+ } else {
+ better_icon = x2 > x + ICON_PAD_LEFT;
+ }
} else {
pos = &y1;
- better_icon = y2 > y;
+ better_icon = y2 > y + ICON_PAD_TOP;
}
if (better_icon) {
better_icon = (best_icon == NULL ||
@@ -6516,9 +6526,13 @@ nautilus_icon_container_scroll_to_icon (NautilusIconContainer *container,
}
if (nautilus_icon_container_is_layout_vertical (container)) {
- eel_gtk_adjustment_set_value (hadj, bounds.x0);
+ if (nautilus_icon_container_is_layout_rtl (container)) {
+ eel_gtk_adjustment_set_value (hadj, bounds.x1 - GTK_WIDGET (container)->allocation.width);
+ } else {
+ eel_gtk_adjustment_set_value (hadj, bounds.x0);
+ }
} else {
- eel_gtk_adjustment_set_value (vadj, bounds.x0);
+ eel_gtk_adjustment_set_value (vadj, bounds.y0);
}
}