diff options
author | Darin Adler <darin@src.gnome.org> | 2000-08-05 02:18:44 +0000 |
---|---|---|
committer | Darin Adler <darin@src.gnome.org> | 2000-08-05 02:18:44 +0000 |
commit | deff23a86ee2c12a52ec89c52ed79d8113fd3362 (patch) | |
tree | 84bb1dd2bcd3acd48ff8069664d17852d9f6e4af /libnautilus-private | |
parent | 96f0134e0e63cf852c35020d110a5462fb0f6670 (diff) | |
download | nautilus-deff23a86ee2c12a52ec89c52ed79d8113fd3362.tar.gz |
Changed relayout so it will update the scroll region. This fixes bug 1907
* libnautilus-extensions/nautilus-icon-container.c: (relayout),
(size_allocate), (finish_adding_new_icons),
(nautilus_icon_container_set_zoom_level),
(nautilus_icon_container_set_auto_layout):
Changed relayout so it will update the scroll region. This fixes
bug 1907 (layout options sometimes move icons out of window).
* libnautilus/nautilus-clipboard.c: (add_menu_items_callback):
Fix leak of remote UI handler. This fixes the rest of bug 1259,
which was just a bug about the FIXME that said "remote UI handler
leaks here, right?".
* libnautilus-extensions/nautilus-directory-async.c: (lacks_info),
(get_info_callback): Fixed infinite loop when you hit a file and
you can't get info for it. Related to the bug Mike Fleming is
looking at.
Diffstat (limited to 'libnautilus-private')
-rw-r--r-- | libnautilus-private/nautilus-directory-async.c | 7 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-container.c | 33 |
2 files changed, 17 insertions, 23 deletions
diff --git a/libnautilus-private/nautilus-directory-async.c b/libnautilus-private/nautilus-directory-async.c index 54acd704f..ae18ae398 100644 --- a/libnautilus-private/nautilus-directory-async.c +++ b/libnautilus-private/nautilus-directory-async.c @@ -1391,7 +1391,8 @@ static gboolean lacks_info (NautilusFile *file) { return file->details->info == NULL - && !file->details->is_gone; + && !file->details->is_gone + && !file->details->get_info_failed; } static gboolean @@ -2118,7 +2119,9 @@ get_info_callback (GnomeVFSAsyncHandle *handle, directory->details->get_info_in_progress = NULL; result = results->data; - if (result->result == GNOME_VFS_OK) { + if (result->result != GNOME_VFS_OK) { + get_info_file->details->get_info_failed = TRUE; + } else { nautilus_file_update_info (get_info_file, result->file_info); nautilus_file_changed (get_info_file); } diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c index 149261189..4c28597e2 100644 --- a/libnautilus-private/nautilus-icon-container.c +++ b/libnautilus-private/nautilus-icon-container.c @@ -611,21 +611,18 @@ relayout (NautilusIconContainer *container) { finish_adding_new_icons (container); - if (!container->details->auto_layout) { - return; - } - /* Don't do any re-laying-out during stretching. Later we * might add smart logic that does this and leaves room for * the stretched icon, but if we do it we want it to be fast * and only re-lay-out when it's really needed. */ - if (container->details->drag_state == DRAG_STATE_STRETCH) { - return; + if (container->details->auto_layout + && container->details->drag_state != DRAG_STATE_STRETCH) { + resort (container); + lay_down_icons (container, container->details->icons, 0); } - resort (container); - lay_down_icons (container, container->details->icons, 0); + update_scroll_region (container); } static void @@ -1664,18 +1661,12 @@ size_request (GtkWidget *widget, } static void -world_width_changed (NautilusIconContainer *container, int new_width) -{ - relayout (container); - update_scroll_region (container); -} - -static void size_allocate (GtkWidget *widget, GtkAllocation *allocation) { NAUTILUS_CALL_PARENT_CLASS (GTK_WIDGET_CLASS, size_allocate, (widget, allocation)); - world_width_changed (NAUTILUS_ICON_CONTAINER (widget), widget->allocation.width); + + relayout (NAUTILUS_ICON_CONTAINER (widget)); } static void @@ -2905,7 +2896,6 @@ finish_adding_new_icons (NautilusIconContainer *container) /* Now the rest of the housekeeping. */ relayout (container); - update_scroll_region (container); } static gboolean @@ -3072,7 +3062,7 @@ nautilus_icon_container_set_zoom_level (NautilusIconContainer *container, int ne nautilus_icon_container_request_update_all (container); - world_width_changed (container, GTK_WIDGET (container)->allocation.width); + relayout (container); } /** @@ -3519,12 +3509,13 @@ nautilus_icon_container_set_auto_layout (NautilusIconContainer *container, container->details->auto_layout = auto_layout; - if (auto_layout) { - relayout (container); - } else { + if (!auto_layout) { reload_icon_positions (container); nautilus_icon_container_freeze_icon_positions (container); } + + relayout (container); + gtk_signal_emit (GTK_OBJECT (container), signals[LAYOUT_CHANGED]); } |