From: Jose Dapena Paz Date: Thu, 10 Jan 2008 14:54:42 +0000 (+0000) Subject: * src/widgets/modest-folder-view.c: X-Git-Tag: git_migration_finished~1831 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=3fc6a4ed4a5e2597bc80f6c4372d574f399c80d7 * src/widgets/modest-folder-view.c: * Now we select the destination folder on finishing DnD of folders (fixes NB#78939). * src/modest-ui-actions.c: * (..._on_folder_display_name_changed): improve the check for the old folder name. pmo-trunk-r4012 --- diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 959b79c..f18f369 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -3810,16 +3810,16 @@ modest_ui_actions_on_folder_display_name_changed (ModestFolderView *folder_view, * updating the display name apparently is expensive */ const gchar* old_name = gtk_window_get_title (window); + if (display_name == NULL) + display_name = " "; + if (old_name && display_name && strcmp (old_name, display_name) == 0) return; /* don't do anything */ /* This is usually used to change the title of the main window, which * is the one that holds the folder view. Note that this change can * happen even when the widget doesn't have the focus. */ - if (display_name) - gtk_window_set_title (window, display_name); - else - gtk_window_set_title (window, " "); + gtk_window_set_title (window, display_name); } diff --git a/src/widgets/modest-folder-view.c b/src/widgets/modest-folder-view.c index 1bcca85..cb9436a 100644 --- a/src/widgets/modest-folder-view.c +++ b/src/widgets/modest-folder-view.c @@ -1656,6 +1656,8 @@ on_selection_changed (GtkTreeSelection *sel, gpointer user_data) selected = gtk_tree_selection_get_selected (sel, &model, &iter); /* Notify the display name observers */ + /* TODO: this is redundant, and it's only required because we sometimes lose the focus of the folder + view */ g_signal_emit (G_OBJECT(user_data), signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0, NULL); @@ -1915,6 +1917,7 @@ on_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData * } typedef struct _DndHelper { + ModestFolderView *folder_view; gboolean delete_source; GtkTreePath *source_row; GdkDragContext *context; @@ -1925,6 +1928,7 @@ static void dnd_helper_destroyer (DndHelper *helper) { /* Free the helper */ + g_object_unref (helper->folder_view); gtk_tree_path_free (helper->source_row); g_slice_free (DndHelper, helper); } @@ -2088,6 +2092,7 @@ cleanup: typedef struct { TnyFolderStore *src_folder; TnyFolderStore *dst_folder; + ModestFolderView *folder_view; DndHelper *helper; } DndFolderInfo; @@ -2098,6 +2103,8 @@ dnd_folder_info_destroyer (DndFolderInfo *info) g_object_unref (info->src_folder); if (info->dst_folder) g_object_unref (info->dst_folder); + if (info->folder_view) + g_object_unref (info->folder_view); g_slice_free (DndFolderInfo, info); } @@ -2155,6 +2162,9 @@ drag_and_drop_from_folder_view_src_folder_performer (gboolean canceled, xfer_cb, info->helper); + modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view), + TNY_FOLDER (info->dst_folder), TRUE); + g_object_unref (G_OBJECT (mail_op)); } @@ -2257,6 +2267,7 @@ drag_and_drop_from_folder_view (GtkTreeModel *source_model, info = g_slice_new (DndFolderInfo); info->src_folder = g_object_ref (folder); info->dst_folder = g_object_ref (dest_folder); + info->folder_view = g_object_ref (helper->folder_view); info->helper = helper; /* Connect to the destination folder and perform the copy/move */ @@ -2337,6 +2348,7 @@ on_drag_data_received (GtkWidget *widget, helper->delete_source = delete_source; helper->context = context; helper->time = time; + helper->folder_view = g_object_ref (widget); /* Drags from the header view */ if (source_widget != widget) {