From dcff8874ae3ca319d1f305e038f6b619128b095d Mon Sep 17 00:00:00 2001 From: Eric Koegel Date: Sat, 26 Nov 2011 10:44:24 +0300 Subject: [PATCH 6/6] Added link here functionality to the dnd menu --- src/xfce-desktop.c | 4 ---- src/xfdesktop-file-icon-manager.c | 7 ++++--- src/xfdesktop-icon-view-manager.c | 6 +++--- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c index 2628065..c46c078 100644 --- a/src/xfce-desktop.c +++ b/src/xfce-desktop.c @@ -861,10 +861,6 @@ xfce_desktop_button_press_event(GtkWidget *w, xfce_desktop_popup_secondary_root_menu(XFCE_DESKTOP(w), button, evt->time); return TRUE; - } else if(button == 3) { - xfce_desktop_popup_root_menu(XFCE_DESKTOP(w), - button, evt->time); - return TRUE; } } diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c index d3ca2eb..44ada5f 100644 --- a/src/xfdesktop-file-icon-manager.c +++ b/src/xfdesktop-file-icon-manager.c @@ -2912,9 +2912,11 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager if(dest_basename && *dest_basename != '\0') { /* If we copy a file, we need to use the new absolute filename - * as the destination. If we move, we need to use the destination + * as the destination. If we move or link, we need to use the destination * directory. */ - if(copy_only) { + if(context->action == GDK_ACTION_LINK) { + dest_file_list = g_list_prepend(dest_file_list, base_dest_file); + } else if(copy_only) { GFile *dest_file = g_file_get_child(base_dest_file, dest_basename); dest_file_list = g_list_prepend(dest_file_list, dest_file); } else { @@ -2935,7 +2937,6 @@ xfdesktop_file_icon_manager_drag_data_received(XfdesktopIconViewManager *manager dest_file_list, fmanager->priv->gscreen); } - xfdesktop_file_utils_file_list_free(dest_file_list); } } diff --git a/src/xfdesktop-icon-view-manager.c b/src/xfdesktop-icon-view-manager.c index b49d9c9..b702ae6 100644 --- a/src/xfdesktop-icon-view-manager.c +++ b/src/xfdesktop-icon-view-manager.c @@ -120,7 +120,7 @@ static void xfdesktop_dnd_menu (XfdesktopIconViewManager *manager, GtkWidget *item; static GdkDragAction action_copy = GDK_ACTION_COPY; static GdkDragAction action_move = GDK_ACTION_MOVE; - /*static GdkDragAction action_link = GDK_ACTION_LINK;*/ + static GdkDragAction action_link = GDK_ACTION_LINK; guint16 *temp_row, *temp_col; guint *temp_time; menu = gtk_menu_new(); @@ -139,6 +139,7 @@ static void xfdesktop_dnd_menu (XfdesktopIconViewManager *manager, *temp_time = time_; item = gtk_image_menu_item_new_with_mnemonic(_("Copy _Here")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU)); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(xfdesktop_dnd_item), &action_copy); g_object_set_data(G_OBJECT(item), "manager", manager); @@ -160,7 +161,6 @@ static void xfdesktop_dnd_menu (XfdesktopIconViewManager *manager, g_object_set_data(G_OBJECT(item), "time", temp_time); gtk_widget_show (item); - /* FIXME: Linking doesn't currently work. item = gtk_image_menu_item_new_with_mnemonic(_("_Link Here")); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(xfdesktop_dnd_item), &action_link); @@ -170,7 +170,7 @@ static void xfdesktop_dnd_menu (XfdesktopIconViewManager *manager, g_object_set_data(G_OBJECT(item), "row", temp_row); g_object_set_data(G_OBJECT(item), "col", temp_col); g_object_set_data(G_OBJECT(item), "time", temp_time); - gtk_widget_show (item);*/ + gtk_widget_show (item); item = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); -- 1.7.5.4