diff options
author | Alexander Larsson <alexl@redhat.com> | 2005-08-29 09:33:28 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2005-08-29 09:33:28 +0000 |
commit | 5d493dc03242c6078d299547ddb560131dd9acce (patch) | |
tree | e478da03cc6eb139352058282c8aabcc6fc6f585 /libnautilus-private/nautilus-icon-container.c | |
parent | a10e3ad78897ad3bef9b8dab6f0f1df74facedca (diff) | |
download | nautilus-5d493dc03242c6078d299547ddb560131dd9acce.tar.gz |
Handle non-sorted-by-y icon containers (manual mode). #157415. Patch from
2005-08-29 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-icon-container.c:
(nautilus_icon_container_get_first_visible_icon):
Handle non-sorted-by-y icon containers (manual mode).
#157415. Patch from Christian Neumair <chris@gnome-de.org>
Diffstat (limited to 'libnautilus-private/nautilus-icon-container.c')
-rw-r--r-- | libnautilus-private/nautilus-icon-container.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c index 4b68ee9a1..1eedafb37 100644 --- a/libnautilus-private/nautilus-icon-container.c +++ b/libnautilus-private/nautilus-icon-container.c @@ -4642,10 +4642,11 @@ NautilusIconData * nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container) { GList *l; - NautilusIcon *icon; + NautilusIcon *icon, *best_icon; GtkAdjustment *vadj; double x, y; double x1, y1, x2, y2; + double best_y1; vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (container)); @@ -4654,6 +4655,8 @@ nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container &x, &y); l = container->details->icons; + best_icon = NULL; + best_y1 = 0; while (l != NULL) { icon = l->data; @@ -4661,13 +4664,22 @@ nautilus_icon_container_get_first_visible_icon (NautilusIconContainer *container eel_canvas_item_get_bounds (EEL_CANVAS_ITEM (icon->item), &x1, &y1, &x2, &y2); if (y2 > y) { - return icon->data; + if (best_icon != NULL) { + if (best_y1 > y1) { + best_icon = icon; + best_y1 = y1; + } + } else { + best_icon = icon; + best_y1 = y1; + } } } l = l->next; } - return NULL; + + return best_icon ? best_icon->data : NULL; } /* puts the icon at the top of the screen */ |