? make-location-entry-better-drop-target-for-urls-and-text.patch
? help/it/.xml2po.mo
? help/it/epiphany.xml
? lib/egg/libegg.la
? src/ephy-middle-click-on-buttons-open-tabs-in-fg.patch
? src/fix-middle-click-on-toolbar-dirty.patch
Index: lib/widgets/ephy-location-entry.c
===================================================================
RCS file: /cvs/gnome/epiphany/lib/widgets/ephy-location-entry.c,v
retrieving revision 1.82
diff -u -5 -p -r1.82 ephy-location-entry.c
--- lib/widgets/ephy-location-entry.c	13 Sep 2006 21:11:34 -0000	1.82
+++ lib/widgets/ephy-location-entry.c	17 Nov 2006 15:10:06 -0000
@@ -926,10 +926,16 @@ ephy_location_entry_construct_contents (
 			  G_CALLBACK (favicon_drag_begin_cb), entry);
 
 	g_signal_connect (priv->lock_ebox, "button-press-event",
 			  G_CALLBACK (lock_button_press_event_cb), entry);
 
+	gtk_drag_dest_set (priv->icon_entry->entry,
+			   GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
+			   url_drag_types,
+			   G_N_ELEMENTS (url_drag_types),
+			   GDK_ACTION_MOVE | GDK_ACTION_COPY);
+
 	g_signal_connect (priv->icon_entry->entry, "populate_popup",
 			  G_CALLBACK (entry_populate_popup_cb), entry);
 	g_signal_connect (priv->icon_entry->entry, "key-press-event",
 			  G_CALLBACK (entry_key_press_cb), entry);
 	g_signal_connect_after (priv->icon_entry->entry, "key-press-event",
Index: src/ephy-location-action.c
===================================================================
RCS file: /cvs/gnome/epiphany/src/ephy-location-action.c,v
retrieving revision 1.48
diff -u -5 -p -r1.48 ephy-location-action.c
--- src/ephy-location-action.c	22 Oct 2006 17:08:06 -0000	1.48
+++ src/ephy-location-action.c	17 Nov 2006 15:10:06 -0000
@@ -1,5 +1,6 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  *  Copyright © 2003, 2004 Marco Pesenti Gritti
  *  Copyright © 2003, 2004 Christian Persch
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -19,12 +20,15 @@
  *  $Id: ephy-location-action.c,v 1.48 2006/10/22 17:08:06 jframeau Exp $
  */
 
 #include "config.h"
 
+#include "eel-gconf-extensions.h"
+#include "ephy-dnd.h"
 #include "ephy-location-action.h"
 #include "ephy-location-entry.h"
+#include "ephy-prefs.h"
 #include "ephy-shell.h"
 #include "ephy-completion-model.h"
 #include "ephy-link.h"
 #include "ephy-debug.h"
 
@@ -352,10 +356,64 @@ add_completion_actions (GtkAction *gacti
 	g_signal_connect (completion, "action_activated",
 			  G_CALLBACK (action_activated_cb), action);
 }
 
 static void
+loc_entry_drag_data_received_cb (GtkWidget *widget, GdkDragContext *context,
+                                 gint x, gint y,
+                                 GtkSelectionData *selection_data,
+                                 guint info, guint time)
+{
+	EphyWindow *window;
+	GtkEntry *entry;
+	GdkAtom target, url_type, text_type, uri_list_type;
+	guchar *sel_data = selection_data->data;
+    
+	uri_list_type = gdk_atom_intern (EPHY_DND_URL_TYPE, FALSE);
+	text_type = gdk_atom_intern (EPHY_DND_TEXT_TYPE, FALSE);
+	url_type = gdk_atom_intern (EPHY_DND_URL_TYPE, FALSE);
+	target = selection_data->target;
+
+	g_signal_stop_emission_by_name (widget, "drag_data_received");
+
+	if (eel_gconf_get_boolean (CONF_LOCKDOWN_DISABLE_ARBITRARY_URL))
+		return;
+
+	if (selection_data->length <= 0 || sel_data == NULL)
+		return;
+
+	window = EPHY_WINDOW (gtk_widget_get_toplevel (widget));
+	entry = GTK_ENTRY (widget);
+
+	if (target == url_type)
+	{
+		char **split;
+
+		/* URL_TYPE has format: url \n title */
+		split = g_strsplit ((const gchar *)sel_data, "\n", 2);
+		if (split != NULL && split[0] != NULL &&
+		    split[0][0] != '\0')
+		{
+			gtk_entry_set_text (entry, (char *)split[0]);
+			ephy_link_open (EPHY_LINK (window),
+					split[0],
+					ephy_window_get_active_tab (window),
+					0);
+		}
+		g_strfreev (split);
+	}
+	else if (target == text_type)
+	{
+		gtk_entry_set_text (entry, (char *)sel_data);
+	}
+	else if (target == uri_list_type)
+	{
+		printf ("URI list\n");
+	}
+}
+
+static void
 connect_proxy (GtkAction *action, GtkWidget *proxy)
 {
 	if (EPHY_IS_LOCATION_ENTRY (proxy))
 	{
 		EphyLocationEntry *lentry = EPHY_LOCATION_ENTRY (proxy);
@@ -391,12 +449,16 @@ connect_proxy (GtkAction *action, GtkWid
 		g_signal_connect_object (action, "notify::secure",
 					 G_CALLBACK (sync_secure), proxy, 0);
 		sync_show_lock (action, NULL, proxy);
 		g_signal_connect_object (action, "notify::show-lock",
 					 G_CALLBACK (sync_show_lock), proxy, 0);
-
+		
 		entry = ephy_location_entry_get_entry (lentry);
+		g_signal_connect(entry, "drag-data-received",
+				 G_CALLBACK (loc_entry_drag_data_received_cb),
+                                 NULL);
+
 		g_signal_connect_object (entry, "activate",
 					 G_CALLBACK (entry_activate_cb),
 					 action, 0);
 		g_signal_connect_object (proxy, "user-changed",
 					 G_CALLBACK (user_changed_cb), action, 0);
