Description: When using Drag'n'Drop from Places menu, install a link launcher (.desktop file) instead of copying the entire directory.
Author: Marcel Stimberg
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=357934
Bug-Ubuntu: https://launchpad.net/bugs/62529 

Index: gnome-panel-3.0.0.1/gnome-panel/menu.c
===================================================================
--- gnome-panel-3.0.0.1.orig/gnome-panel/menu.c	2011-03-29 10:20:47.000000000 -0400
+++ gnome-panel-3.0.0.1/gnome-panel/menu.c	2011-05-06 05:17:51.743035471 -0400
@@ -816,7 +816,8 @@
 void
 setup_uri_drag (GtkWidget  *menuitem,
 		const char *uri,
-		const char *icon)
+		const char *icon,
+		GdkDragAction action)
 {
 	static GtkTargetEntry menu_item_targets[] = {
 		{ "text/uri-list", 0, 0 }
@@ -828,7 +829,7 @@
 	gtk_drag_source_set (menuitem,
 			     GDK_BUTTON1_MASK|GDK_BUTTON2_MASK,
 			     menu_item_targets, 1,
-			     GDK_ACTION_COPY);
+			     action);
 
 	if (icon != NULL)
 		gtk_drag_source_set_icon_name (menuitem, icon);
Index: gnome-panel-3.0.0.1/gnome-panel/menu.h
===================================================================
--- gnome-panel-3.0.0.1.orig/gnome-panel/menu.h	2010-02-09 07:32:08.000000000 -0500
+++ gnome-panel-3.0.0.1/gnome-panel/menu.h	2011-05-06 05:17:51.743035471 -0400
@@ -51,7 +51,8 @@
 					    PanelActionButtonType  type);
 void            setup_uri_drag             (GtkWidget  *menuitem,
 					    const char *uri,
-					    const char *icon);
+					    const char *icon,
+						GdkDragAction action);
 
 GtkWidget *	panel_create_menu              (void);
 
Index: gnome-panel-3.0.0.1/gnome-panel/panel-menu-items.c
===================================================================
--- gnome-panel-3.0.0.1.orig/gnome-panel/panel-menu-items.c	2011-04-04 17:47:29.000000000 -0400
+++ gnome-panel-3.0.0.1/gnome-panel/panel-menu-items.c	2011-05-06 05:19:44.066367958 -0400
@@ -348,7 +348,7 @@
 
 	uri = g_filename_to_uri (full_path, NULL, NULL);
 
-	setup_uri_drag (item, uri, icon);
+	setup_uri_drag (item, uri, icon, GDK_ACTION_COPY);
 	g_free (uri);
 
 	g_key_file_free (key_file);
@@ -395,6 +395,8 @@
 			  G_CALLBACK (menu_dummy_button_press_event), NULL);
 
 	setup_uri_drag (item, uri, icon_name);
+	if (g_str_has_prefix (uri, "file:")) /*Links only work for local files*/
+		setup_uri_drag (item, uri, icon_name, GDK_ACTION_LINK);
 
 	return item;
 }
