* src/widgets/modest-folder-view.c:
authorJose Dapena Paz <jdapena@igalia.com>
Thu, 10 Jan 2008 14:54:42 +0000 (14:54 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Thu, 10 Jan 2008 14:54:42 +0000 (14:54 +0000)
        * 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

src/modest-ui-actions.c
src/widgets/modest-folder-view.c

index 959b79c..f18f369 100644 (file)
@@ -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);
 
 }
 
index 1bcca85..cb9436a 100644 (file)
@@ -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) {