The attached patch partially fixes bug 47944 [1] by checking whether a file/folder creation was triggered from a popup menu and - if that is true - places them below the popup menu. It still lacks move/copy integration, but is IMHO in a good enough shape to be included. [1] http://bugzilla.gnome.org/show_bug.cgi?id=47944 -- Christian Neumair <chris gnome-de org>
Index: libnautilus-private/nautilus-file-operations.c =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-operations.c,v retrieving revision 1.195 diff -u -p -r1.195 nautilus-file-operations.c --- libnautilus-private/nautilus-file-operations.c 8 Aug 2005 21:12:52 -0000 1.195 +++ libnautilus-private/nautilus-file-operations.c 21 Aug 2005 14:41:38 -0000 @@ -42,6 +42,7 @@ #include <gdk/gdkdnd.h> #include <gtk/gtklabel.h> #include <gtk/gtkmessagedialog.h> +#include <gtk/gtkwidget.h> #include <libgnomevfs/gnome-vfs-async-ops.h> #include <libgnomevfs/gnome-vfs-find-directory.h> #include <libgnomevfs/gnome-vfs-ops.h> @@ -56,7 +57,11 @@ #include "nautilus-link.h" #include "nautilus-trash-monitor.h" -typedef enum { +typedef enum TransferKind TransferKind; +typedef struct TransferInfo TransferInfo; +typedef struct IconPositionIterator IconPositionIterator; + +enum TransferKind { TRANSFER_MOVE, TRANSFER_COPY, TRANSFER_DUPLICATE, @@ -64,10 +69,10 @@ typedef enum { TRANSFER_EMPTY_TRASH, TRANSFER_DELETE, TRANSFER_LINK -} TransferKind; +}; /* Copy engine callback state */ -typedef struct { +struct TransferInfo { GnomeVFSAsyncHandle *handle; NautilusFileOperationsProgress *progress_dialog; const char *operation_title; /* "Copying files" */ @@ -83,7 +88,8 @@ typedef struct { gpointer done_callback_data; GHashTable *debuting_uris; gboolean cancelled; -} TransferInfo; + IconPositionIterator *iterator; +}; static TransferInfo * transfer_info_new (GtkWidget *parent_view) @@ -118,17 +124,20 @@ transfer_info_destroy (TransferInfo *tra * top level items during a copy, drag, new folder creation and * link creation */ -typedef struct { +struct IconPositionIterator { GdkPoint *icon_positions; int last_icon_position_index; GList *uris; const GList *last_uri; int screen; -} IconPositionIterator; + gboolean is_source_iterator; +}; static IconPositionIterator * -icon_position_iterator_new (GArray *icon_positions, const GList *uris, - int screen) +icon_position_iterator_new (GArray *icon_positions, + const GList *uris, + int screen, + gboolean is_source_iterator) { IconPositionIterator *result; guint index; @@ -146,10 +155,38 @@ icon_position_iterator_new (GArray *icon result->uris = eel_g_str_list_copy ((GList *)uris); result->last_uri = result->uris; result->screen = screen; + result->is_source_iterator = is_source_iterator; return result; } +static IconPositionIterator * +icon_position_iterator_new_single (GdkPoint *icon_position, + const char *uri, + int screen, + gboolean is_source_iterator) +{ + IconPositionIterator *iterator; + GArray *icon_positions; + GList *uris; + + if (icon_position == NULL || uri == NULL) { + return NULL; + } + + icon_positions = g_array_sized_new (FALSE, FALSE, sizeof (GdkPoint), 1); + g_array_insert_val (icon_positions, 0, *icon_position); + + uris = g_list_append (NULL, (char *) uri); + + iterator = icon_position_iterator_new (icon_positions, uris, screen, is_source_iterator); + + g_list_free (uris); + g_array_free (icon_positions, TRUE); + + return iterator; +} + static void icon_position_iterator_free (IconPositionIterator *position_iterator) { @@ -164,13 +201,22 @@ icon_position_iterator_free (IconPositio static gboolean icon_position_iterator_get_next (IconPositionIterator *position_iterator, - const char *next_uri, + const char *next_source_uri, + const char *next_target_uri, GdkPoint *point) { + const char *next_uri; + if (position_iterator == NULL) { return FALSE; } - + + if (position_iterator->is_source_iterator) { + next_uri = next_source_uri; + } else { + next_uri = next_target_uri; + } + for (;;) { if (position_iterator->last_uri == NULL) { /* we are done, no more points left */ @@ -204,6 +250,38 @@ icon_position_iterator_get_next (IconPos return TRUE; } +static void +icon_position_iterator_update_uri (IconPositionIterator *position_iterator, + const char *old_uri, + const char *new_uri_fragment) +{ + GnomeVFSURI *uri, *parent_uri; + GList *l; + + if (position_iterator == NULL) { + return; + } + + l = g_list_find_custom (position_iterator->uris, + old_uri, + (GCompareFunc) strcmp); + if (l == NULL) { + return; + } + + uri = gnome_vfs_uri_new (old_uri); + parent_uri = gnome_vfs_uri_get_parent (uri); + gnome_vfs_uri_unref (uri); + + uri = gnome_vfs_uri_append_string (parent_uri, new_uri_fragment); + + g_free (l->data); + l->data = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE); + + gnome_vfs_uri_unref (uri); + gnome_vfs_uri_unref (parent_uri); +} + static char * ellipsize_string_for_dialog (PangoContext *context, const char *str) { @@ -1620,7 +1698,7 @@ apply_one_position (IconPositionIterator { GdkPoint point; - if (icon_position_iterator_get_next (position_iterator, source_name, &point)) { + if (icon_position_iterator_get_next (position_iterator, source_name, target_name, &point)) { nautilus_file_changes_queue_schedule_position_set (target_name, point, position_iterator->screen); } else { nautilus_file_changes_queue_schedule_position_remove (target_name); @@ -1665,10 +1743,12 @@ sync_transfer_callback (GnomeVFSXferProg nautilus_file_changes_queue_schedule_metadata_copy (progress_info->source_name, progress_info->target_name); - apply_one_position (position_iterator, - progress_info->source_name, - progress_info->target_name); } + + apply_one_position (position_iterator, + progress_info->source_name, + progress_info->target_name); + if (debuting_uris != NULL) { g_hash_table_replace (debuting_uris, g_strdup (progress_info->target_name), @@ -1696,12 +1776,12 @@ sync_transfer_callback (GnomeVFSXferProg if (really_moved) { nautilus_file_changes_queue_schedule_metadata_move (progress_info->source_name, progress_info->target_name); - - apply_one_position (position_iterator, - progress_info->source_name, - progress_info->target_name); } - + + apply_one_position (position_iterator, + progress_info->source_name, + progress_info->target_name); + if (debuting_uris != NULL) { g_hash_table_replace (debuting_uris, g_strdup (progress_info->target_name), @@ -1935,7 +2015,7 @@ nautilus_file_operations_copy_move (cons * here at all. */ icon_position_iterator = icon_position_iterator_new - (relative_item_points, item_uris, screen_num); + (relative_item_points, item_uris, screen_num, TRUE); } else { icon_position_iterator = NULL; } @@ -2098,6 +2178,8 @@ nautilus_file_operations_copy_move (cons sync_transfer_info->iterator = icon_position_iterator; sync_transfer_info->debuting_uris = transfer_info->debuting_uris; + transfer_info->iterator = sync_transfer_info->iterator; + if (result == GNOME_VFS_OK) { gnome_vfs_async_xfer (&transfer_info->handle, source_uri_list, target_uri_list, move_options, GNOME_VFS_XFER_ERROR_MODE_QUERY, @@ -2120,6 +2202,7 @@ typedef struct { NautilusNewFolderCallback done_callback; gpointer data; GtkWidget *parent_view; + IconPositionIterator *iterator; } NewFolderTransferState; static int @@ -2199,6 +2282,12 @@ new_folder_transfer_callback (GnomeVFSAs progress_info->duplicate_count); } g_free (temp_string); + + icon_position_iterator_update_uri + (state->iterator, + progress_info->target_name, + progress_info->duplicate_name); + return GNOME_VFS_XFER_ERROR_ACTION_SKIP; case GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR: @@ -2216,20 +2305,16 @@ new_folder_transfer_callback (GnomeVFSAs void nautilus_file_operations_new_folder (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir, NautilusNewFolderCallback done_callback, gpointer data) { GList *target_uri_list; GnomeVFSURI *uri, *parent_uri; - char *dirname; + char *text_uri, *dirname; NewFolderTransferState *state; - - state = g_new (NewFolderTransferState, 1); - state->done_callback = done_callback; - state->data = data; - state->parent_view = parent_view; - eel_add_weak_pointer (&state->parent_view); + SyncTransferInfo *sync_transfer_info; /* pass in the target directory and the new folder name as a destination URI */ parent_uri = gnome_vfs_uri_new (parent_dir); @@ -2239,14 +2324,32 @@ nautilus_file_operations_new_folder (Gtk uri = gnome_vfs_uri_append_file_name (parent_uri, dirname); g_free (dirname); target_uri_list = g_list_prepend (NULL, uri); - + + text_uri = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE); + + sync_transfer_info = g_new (SyncTransferInfo, 1); + sync_transfer_info->iterator = icon_position_iterator_new_single + (target_point, text_uri, + gdk_screen_get_number (gtk_widget_get_screen (parent_view)), + FALSE); + sync_transfer_info->debuting_uris = NULL; + + g_free (text_uri); + + state = g_new (NewFolderTransferState, 1); + state->done_callback = done_callback; + state->data = data; + state->parent_view = parent_view; + state->iterator = sync_transfer_info->iterator; + eel_add_weak_pointer (&state->parent_view); + gnome_vfs_async_xfer (&state->handle, NULL, target_uri_list, GNOME_VFS_XFER_NEW_UNIQUE_DIRECTORY, GNOME_VFS_XFER_ERROR_MODE_QUERY, GNOME_VFS_XFER_OVERWRITE_MODE_QUERY, GNOME_VFS_PRIORITY_DEFAULT, new_folder_transfer_callback, state, - sync_transfer_callback, NULL); + sync_transfer_callback, sync_transfer_info); gnome_vfs_uri_list_free (target_uri_list); gnome_vfs_uri_unref (parent_uri); @@ -2258,6 +2361,7 @@ typedef struct { gpointer data; GtkWidget *parent_view; GHashTable *debuting_uris; + IconPositionIterator *iterator; } NewFileTransferState; @@ -2366,6 +2470,7 @@ new_file_transfer_callback (GnomeVFSAsyn g_strfreev (temp_strings); } g_free (temp_string); + return GNOME_VFS_XFER_ERROR_ACTION_SKIP; case GNOME_VFS_XFER_PROGRESS_STATUS_VFSERROR: @@ -2383,6 +2488,7 @@ new_file_transfer_callback (GnomeVFSAsyn void nautilus_file_operations_new_file_from_template (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir, const char *target_filename, const char *template_uri, @@ -2401,18 +2507,12 @@ nautilus_file_operations_new_file_from_t g_assert (parent_dir != NULL); g_assert (template_uri != NULL); - state = g_new (NewFileTransferState, 1); - state->done_callback = done_callback; - state->data = data; - state->parent_view = parent_view; - /* pass in the target directory and the new folder name as a destination URI */ parent_uri = gnome_vfs_uri_new (parent_dir); source_uri = gnome_vfs_uri_new (template_uri); if (source_uri == NULL) { (*done_callback) (NULL, data); - g_free (state); return; } @@ -2424,16 +2524,24 @@ nautilus_file_operations_new_file_from_t g_free (tmp); } - state->debuting_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + sync_transfer_info = g_new (SyncTransferInfo, 1); + sync_transfer_info->iterator = icon_position_iterator_new_single + (target_point, template_uri, + gdk_screen_get_number (gtk_widget_get_screen (parent_view)), + TRUE); + sync_transfer_info->debuting_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + + state = g_new (NewFileTransferState, 1); + state->done_callback = done_callback; + state->data = data; + state->parent_view = parent_view; + state->iterator = sync_transfer_info->iterator; + state->debuting_uris = sync_transfer_info->debuting_uris; eel_add_weak_pointer (&state->parent_view); target_uri_list = g_list_prepend (NULL, target_uri); source_uri_list = g_list_prepend (NULL, source_uri); - sync_transfer_info = g_new (SyncTransferInfo, 1); - sync_transfer_info->iterator = NULL; - sync_transfer_info->debuting_uris = state->debuting_uris; - options = GNOME_VFS_XFER_USE_UNIQUE_NAMES; if (move_template) { options |= GNOME_VFS_XFER_REMOVESOURCE; @@ -2454,6 +2562,7 @@ nautilus_file_operations_new_file_from_t void nautilus_file_operations_new_file (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir, const char *initial_contents, NautilusNewFileCallback done_callback, @@ -2485,6 +2594,7 @@ nautilus_file_operations_new_file (GtkWi source_file_uri = gnome_vfs_get_uri_from_local_path (source_file_str); nautilus_file_operations_new_file_from_template (parent_view, + target_point, parent_dir, target_filename, source_file_uri, Index: libnautilus-private/nautilus-file-operations.h =================================================================== RCS file: /cvs/gnome/nautilus/libnautilus-private/nautilus-file-operations.h,v retrieving revision 1.20 diff -u -p -r1.20 nautilus-file-operations.h --- libnautilus-private/nautilus-file-operations.h 5 Jul 2005 12:23:34 -0000 1.20 +++ libnautilus-private/nautilus-file-operations.h 21 Aug 2005 14:41:38 -0000 @@ -41,7 +41,7 @@ typedef void (* NautilusNewFileCallback) /* FIXME: int copy_action should be an enum */ void nautilus_file_operations_copy_move (const GList *item_uris, - GArray *target_item_points, + GArray *relative_item_points, const char *target_dir_uri, GdkDragAction copy_action, GtkWidget *parent_view, @@ -49,15 +49,18 @@ void nautilus_file_operations_copy_move gpointer done_callback_data); void nautilus_file_operations_empty_trash (GtkWidget *parent_view); void nautilus_file_operations_new_folder (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir_uri, NautilusNewFolderCallback done_callback, gpointer done_callback_data); void nautilus_file_operations_new_file (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir, const char *initial_contents, NautilusNewFileCallback done_callback, gpointer data); void nautilus_file_operations_new_file_from_template (GtkWidget *parent_view, + GdkPoint *target_point, const char *parent_dir, const char *target_filename, const char *template_uri,
Index: src/file-manager/fm-directory-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.c,v retrieving revision 1.703 diff -u -p -r1.703 fm-directory-view.c --- src/file-manager/fm-directory-view.c 1 Aug 2005 22:08:55 -0000 1.703 +++ src/file-manager/fm-directory-view.c 21 Aug 2005 14:10:15 -0000 @@ -253,6 +253,8 @@ struct FMDirectoryViewDetails guint open_with_merge_id; GList *subdirectory_list; + + GdkPoint context_menu_position; }; typedef enum { @@ -3655,11 +3657,41 @@ new_folder_data_new (FMDirectoryView *di return data; } +static GdkPoint * +context_menu_to_file_operation_position (FMDirectoryView *directory_view) +{ + g_return_val_if_fail (FM_IS_DIRECTORY_VIEW (directory_view), NULL); + + if (fm_directory_view_using_manual_layout (directory_view) + && directory_view->details->context_menu_position.x >= 0 + && directory_view->details->context_menu_position.y >= 0) { + return &directory_view->details->context_menu_position; + } else { + return NULL; + } +} + +static void +update_context_menu_position_from_event (FMDirectoryView *view, + GdkEventButton *event) +{ + g_return_if_fail (FM_IS_DIRECTORY_VIEW (view)); + + if (event != NULL) { + view->details->context_menu_position.x = event->x; + view->details->context_menu_position.y = event->y; + } else { + view->details->context_menu_position.x = -1; + view->details->context_menu_position.y = -1; + } +} + void fm_directory_view_new_folder (FMDirectoryView *directory_view) { char *parent_uri; NewFolderData *data; + GdkPoint *pos; data = new_folder_data_new (directory_view); @@ -3670,9 +3702,11 @@ fm_directory_view_new_folder (FMDirector (GClosureNotify)NULL, G_CONNECT_AFTER); + pos = context_menu_to_file_operation_position (directory_view); + parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_folder (GTK_WIDGET (directory_view), - parent_uri, + pos, parent_uri, new_folder_done, data); g_free (parent_uri); @@ -3699,15 +3733,17 @@ static void fm_directory_view_new_file_with_initial_contents (FMDirectoryView *directory_view, const char *initial_contents) { + GdkPoint *pos; NewFolderData *data; char *parent_uri; data = setup_new_folder_data (directory_view); - parent_uri = fm_directory_view_get_backing_uri (directory_view); + pos = context_menu_to_file_operation_position (directory_view); + parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file (GTK_WIDGET (directory_view), - parent_uri, + pos, parent_uri, initial_contents, new_folder_done, data); @@ -3718,6 +3754,7 @@ void fm_directory_view_new_file (FMDirectoryView *directory_view, NautilusFile *source) { + GdkPoint *pos; NewFolderData *data; char *parent_uri; char *source_uri; @@ -3729,12 +3766,15 @@ fm_directory_view_new_file (FMDirectoryV g_return_if_fail (nautilus_file_is_local (source)); + pos = context_menu_to_file_operation_position (directory_view); + data = setup_new_folder_data (directory_view); source_uri = nautilus_file_get_uri (source); parent_uri = fm_directory_view_get_backing_uri (directory_view); nautilus_file_operations_new_file_from_template (GTK_WIDGET (directory_view), + pos, parent_uri, NULL, source_uri, @@ -6278,6 +6318,44 @@ connect_proxy (FMDirectoryView *view, } static void +pre_activate (FMDirectoryView *view, + GtkAction *action, + GtkActionGroup *action_group) +{ + GdkEvent *event; + GtkWidget *proxy, *shell; + gboolean unset_pos; + + /* check whether action was activated through a popup menu. + * If not, unset the last stored context menu popup position */ + unset_pos = TRUE; + + event = gtk_get_current_event (); + proxy = gtk_get_event_widget (event); + + if (proxy != NULL && GTK_IS_MENU_ITEM (proxy)) { + shell = proxy->parent; + + unset_pos = FALSE; + + do { + if (!GTK_IS_MENU (shell)) { + /* popup menus are GtkMenu-only menu shell hierarchies */ + unset_pos = TRUE; + break; + } + + shell = GTK_MENU_SHELL (shell)->parent_menu_shell; + } while (GTK_IS_MENU_SHELL (shell) + && GTK_MENU_SHELL (shell)->parent_menu_shell != NULL); + } + + if (unset_pos) { + update_context_menu_position_from_event (view, NULL); + } +} + +static void real_merge_menus (FMDirectoryView *view) { GtkActionGroup *action_group; @@ -6311,6 +6389,9 @@ real_merge_menus (FMDirectoryView *view) g_signal_connect_object (action_group, "connect-proxy", G_CALLBACK (connect_proxy), G_OBJECT (view), G_CONNECT_SWAPPED); + g_signal_connect_object (action_group, "pre-activate", + G_CALLBACK (pre_activate), G_OBJECT (view), + G_CONNECT_SWAPPED); /* Insert action group at end so clipboard action group ends up before it */ gtk_ui_manager_insert_action_group (ui_manager, action_group, -1); @@ -6881,6 +6962,8 @@ fm_directory_view_pop_up_selection_conte */ update_menus_if_pending (view); + update_context_menu_position_from_event (view, event); + eel_pop_up_context_menu (create_popup_menu (view, FM_DIRECTORY_VIEW_POPUP_PATH_SELECTION), EEL_DEFAULT_POPUP_MENU_DISPLACEMENT, @@ -6908,6 +6991,8 @@ fm_directory_view_pop_up_background_cont */ update_menus_if_pending (view); + update_context_menu_position_from_event (view, event); + eel_pop_up_context_menu (create_popup_menu (view, FM_DIRECTORY_VIEW_POPUP_PATH_BACKGROUND), EEL_DEFAULT_POPUP_MENU_DISPLACEMENT, @@ -6932,6 +7017,8 @@ fm_directory_view_pop_up_location_contex /* always update the menu before showing it. Shouldn't be too expensive. */ real_update_location_menu (view); + update_context_menu_position_from_event (view, event); + eel_pop_up_context_menu (create_popup_menu (view, FM_DIRECTORY_VIEW_POPUP_PATH_LOCATION), EEL_DEFAULT_POPUP_MENU_DISPLACEMENT, @@ -8035,6 +8122,24 @@ real_supports_zooming (FMDirectoryView * return TRUE; } +gboolean +fm_directory_view_using_manual_layout (FMDirectoryView *view) +{ + g_return_val_if_fail (FM_IS_DIRECTORY_VIEW (view), FALSE); + + return EEL_CALL_METHOD_WITH_RETURN_VALUE + (FM_DIRECTORY_VIEW_CLASS, view, + using_manual_layout, (view)); +} + +static gboolean +real_using_manual_layout (FMDirectoryView *view) +{ + g_return_val_if_fail (FM_IS_DIRECTORY_VIEW (view), FALSE); + + return FALSE; +} + /** * fm_directory_view_update_menus: * @@ -8794,6 +8899,7 @@ fm_directory_view_class_init (FMDirector klass->supports_creating_files = real_supports_creating_files; klass->supports_properties = real_supports_properties; klass->supports_zooming = real_supports_zooming; + klass->using_manual_layout = real_using_manual_layout; klass->merge_menus = real_merge_menus; klass->update_menus = real_update_menus; Index: src/file-manager/fm-directory-view.h =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-directory-view.h,v retrieving revision 1.141 diff -u -p -r1.141 fm-directory-view.h --- src/file-manager/fm-directory-view.h 5 Jul 2005 12:23:35 -0000 1.141 +++ src/file-manager/fm-directory-view.h 21 Aug 2005 14:10:15 -0000 @@ -246,6 +246,13 @@ struct FMDirectoryViewClass { */ gboolean (* supports_zooming) (FMDirectoryView *view); + /* using_manual_layout is a function pointer that subclasses may + * override to control whether or not items can be freely positioned + * on the user-visible area. + * Note that this value is not guaranteed to be constant within the + * view's lifecycle. */ + gboolean (* using_manual_layout) (FMDirectoryView *view); + /* is_read_only is a function pointer that subclasses may * override to control whether or not the user is allowed to * change the contents of the currently viewed directory. The @@ -338,6 +345,7 @@ gboolean fm_directory_view_su gboolean fm_directory_view_accepts_dragged_files (FMDirectoryView *view); gboolean fm_directory_view_supports_properties (FMDirectoryView *view); gboolean fm_directory_view_supports_zooming (FMDirectoryView *view); +gboolean fm_directory_view_using_manual_layout (FMDirectoryView *view); void fm_directory_view_move_copy_items (const GList *item_uris, GArray *relative_item_points, const char *target_uri, Index: src/file-manager/fm-icon-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-icon-view.c,v retrieving revision 1.313 diff -u -p -r1.313 fm-icon-view.c --- src/file-manager/fm-icon-view.c 12 Aug 2005 18:11:30 -0000 1.313 +++ src/file-manager/fm-icon-view.c 21 Aug 2005 14:10:16 -0000 @@ -1641,6 +1641,14 @@ fm_icon_view_set_selection (FMDirectoryV (get_icon_container (FM_ICON_VIEW (view)), selection); } +static gboolean +fm_icon_view_using_manual_layout (FMDirectoryView *view) +{ + g_return_val_if_fail (FM_IS_ICON_VIEW (view), FALSE); + + return !fm_icon_view_using_auto_layout (FM_ICON_VIEW (view)); +} + static void icon_container_activate_callback (NautilusIconContainer *container, GList *file_list, @@ -2604,6 +2612,7 @@ fm_icon_view_class_init (FMIconViewClass fm_directory_view_class->start_renaming_file = fm_icon_view_start_renaming_file; fm_directory_view_class->text_attribute_names_changed = fm_icon_view_text_attribute_names_changed; fm_directory_view_class->update_menus = fm_icon_view_update_menus; + fm_directory_view_class->using_manual_layout = fm_icon_view_using_manual_layout; klass->clean_up = fm_icon_view_real_clean_up; klass->supports_auto_layout = real_supports_auto_layout; Index: src/file-manager/fm-list-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-list-view.c,v retrieving revision 1.256 diff -u -p -r1.256 fm-list-view.c --- src/file-manager/fm-list-view.c 12 Aug 2005 18:11:30 -0000 1.256 +++ src/file-manager/fm-list-view.c 21 Aug 2005 14:10:18 -0000 @@ -2449,6 +2449,14 @@ fm_list_view_sort_files (FMDirectoryView fm_list_model_sort_files (list_view->details->model, files); } +static gboolean +fm_list_view_using_manual_layout (FMDirectoryView *view) +{ + g_return_val_if_fail (FM_IS_LIST_VIEW (view), FALSE); + + return FALSE; +} + static void fm_list_view_dispose (GObject *object) { @@ -2629,6 +2637,7 @@ fm_list_view_class_init (FMListViewClass fm_directory_view_class->zoom_to_level = fm_list_view_zoom_to_level; fm_directory_view_class->emblems_changed = fm_list_view_emblems_changed; fm_directory_view_class->end_file_changes = fm_list_view_end_file_changes; + fm_directory_view_class->using_manual_layout = fm_list_view_using_manual_layout; eel_preferences_add_auto_enum (NAUTILUS_PREFERENCES_CLICK_POLICY, &click_policy_auto_value); Index: src/file-manager/fm-tree-view.c =================================================================== RCS file: /cvs/gnome/nautilus/src/file-manager/fm-tree-view.c,v retrieving revision 1.17 diff -u -p -r1.17 fm-tree-view.c --- src/file-manager/fm-tree-view.c 11 Jul 2005 10:12:47 -0000 1.17 +++ src/file-manager/fm-tree-view.c 21 Aug 2005 14:10:18 -0000 @@ -832,6 +832,7 @@ fm_tree_view_create_folder_cb (GtkWidget parent_uri = nautilus_file_get_uri (view->details->popup_file); nautilus_file_operations_new_folder (GTK_WIDGET (view->details->tree_widget), + NULL, parent_uri, new_folder_done, view->details->tree_widget);
Attachment:
signature.asc
Description: This is a digitally signed message part