Commit 9f46a89e authored by Alexander Larsson's avatar Alexander Larsson Committed by Alexander Larsson

Add handle_url signal Fix argument list for handle_uri_list

2005-01-13  Alexander Larsson  <alexl@redhat.com>

	* libnautilus-private/nautilus-icon-container.[ch]:
	* libnautilus-private/nautilus-marshal.list:
	Add handle_url signal
	Fix argument list for handle_uri_list

	* libnautilus-private/nautilus-dnd.[ch]:
	Add nautilus_drag_default_drop_action_for_url

	* libnautilus-private/nautilus-icon-dnd.c: (receive_dropped_url),
	(nautilus_icon_container_get_drop_action),
	(drag_data_received_callback):
	Handle URL drops separately from URI_LIST
	Set different actions for URL drop

	* libnautilus-private/nautilus-tree-view-drag-dest.[ch]:
	(get_drop_action), (receive_dropped_uri_list),
	(receive_dropped_url), (drag_data_received_callback),
	(nautilus_tree_view_drag_dest_class_init):
	Add handle_url and handle_uri lists
	Set different actions for URL drop
	Fix bug that made url_list & url drops not work

	* src/file-manager/fm-directory-view.[ch]: (revert_slashes),
	(ask_link_action), (fm_directory_view_handle_url_drop),
	(fm_directory_view_handle_uri_list_drop):
	Move url and uri_list drop handling here. Make it handle
	url drops better.

	* src/file-manager/fm-icon-view.c: (icon_view_handle_url),
	(icon_view_handle_uri_list), (fm_icon_view_init):
	* src/file-manager/fm-list-view.c: (list_view_handle_url),
	(list_view_handle_uri_list), (create_and_set_up_tree_view):
	Call up to the drop code in directory view.

	The above is based on a patch from Jorn Baayen <jbaayen@gnome.org>

	* libnautilus-private/nautilus-directory.c:
	(nautilus_directory_schedule_metadata_copy):
	Handle source_directory being NULL. (happens on toplevel uri)

	* libnautilus-private/nautilus-file-operations.c:
	(nautilus_file_operations_copy_move):
	Handle source_dir_uri being NULL. (happens on toplevel uri)

	* libnautilus-private/nautilus-link-desktop-file.c:
	(nautilus_link_desktop_file_local_create):
	Use right icon field
parent a8e9b71b
2005-01-13 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-icon-container.[ch]:
* libnautilus-private/nautilus-marshal.list:
Add handle_url signal
Fix argument list for handle_uri_list
* libnautilus-private/nautilus-dnd.[ch]:
Add nautilus_drag_default_drop_action_for_url
* libnautilus-private/nautilus-icon-dnd.c: (receive_dropped_url),
(nautilus_icon_container_get_drop_action),
(drag_data_received_callback):
Handle URL drops separately from URI_LIST
Set different actions for URL drop
* libnautilus-private/nautilus-tree-view-drag-dest.[ch]:
(get_drop_action), (receive_dropped_uri_list),
(receive_dropped_url), (drag_data_received_callback),
(nautilus_tree_view_drag_dest_class_init):
Add handle_url and handle_uri lists
Set different actions for URL drop
Fix bug that made url_list & url drops not work
* src/file-manager/fm-directory-view.[ch]: (revert_slashes),
(ask_link_action), (fm_directory_view_handle_url_drop),
(fm_directory_view_handle_uri_list_drop):
Move url and uri_list drop handling here. Make it handle
url drops better.
* src/file-manager/fm-icon-view.c: (icon_view_handle_url),
(icon_view_handle_uri_list), (fm_icon_view_init):
* src/file-manager/fm-list-view.c: (list_view_handle_url),
(list_view_handle_uri_list), (create_and_set_up_tree_view):
Call up to the drop code in directory view.
The above is based on a patch from Jorn Baayen <jbaayen@gnome.org>
* libnautilus-private/nautilus-directory.c:
(nautilus_directory_schedule_metadata_copy):
Handle source_directory being NULL. (happens on toplevel uri)
* libnautilus-private/nautilus-file-operations.c:
(nautilus_file_operations_copy_move):
Handle source_dir_uri being NULL. (happens on toplevel uri)
* libnautilus-private/nautilus-link-desktop-file.c:
(nautilus_link_desktop_file_local_create):
Use right icon field
2005-01-12 Alexander Larsson <alexl@redhat.com>
* src/file-manager/fm-actions.h:
......
......@@ -1380,11 +1380,13 @@ nautilus_directory_schedule_metadata_copy (GList *uri_pairs)
source_relative_uri = g_path_get_basename (pair->from_uri);
destination_relative_uri = g_path_get_basename (pair->to_uri);
nautilus_directory_copy_file_metadata (source_directory,
source_relative_uri,
destination_directory,
destination_relative_uri);
if (source_directory != NULL && destination_directory != NULL) {
nautilus_directory_copy_file_metadata (source_directory,
source_relative_uri,
destination_directory,
destination_relative_uri);
}
g_free (source_relative_uri);
g_free (destination_relative_uri);
......
......@@ -280,6 +280,22 @@ nautilus_drag_items_on_desktop (const GList *selection_list)
}
GdkDragAction
nautilus_drag_default_drop_action_for_url (GdkDragContext *context)
{
/* Mozilla defaults to copy, but unless thats the
only allowed thing (enforced by ctrl) we want to ASK */
if (context->suggested_action == GDK_ACTION_COPY &&
context->actions != GDK_ACTION_COPY) {
return GDK_ACTION_ASK;
} else if (context->suggested_action == GDK_ACTION_MOVE) {
/* Don't support move */
return GDK_ACTION_COPY;
}
return context->suggested_action;
}
void
nautilus_drag_default_drop_action_for_icons (GdkDragContext *context,
......
......@@ -120,6 +120,7 @@ void nautilus_drag_default_drop_action_for_icons (GdkDrag
const char *target_uri,
const GList *items,
int *action);
GdkDragAction nautilus_drag_default_drop_action_for_url (GdkDragContext *context);
gboolean nautilus_drag_drag_data_get (GtkWidget *widget,
GdkDragContext *context,
GtkSelectionData *selection_data,
......
......@@ -1837,6 +1837,7 @@ nautilus_file_operations_copy_move (const GList *item_uris,
have_nonlocal_source = TRUE;
}
/* Note: this could be null if we're e.g. copying the top level file of a web site */
source_dir_uri = gnome_vfs_uri_get_parent (source_uri);
target_uri = NULL;
if (target_dir != NULL) {
......@@ -1861,12 +1862,14 @@ nautilus_file_operations_copy_move (const GList *item_uris,
target_uri_list = g_list_prepend (target_uri_list, target_uri);
source_uri_list = g_list_prepend (source_uri_list, source_uri);
if (duplicate
&& !gnome_vfs_uri_equal (source_dir_uri, target_dir_uri)) {
if (duplicate && source_dir_uri != NULL &&
!gnome_vfs_uri_equal (source_dir_uri, target_dir_uri)) {
duplicate = FALSE;
}
}
gnome_vfs_uri_unref (source_dir_uri);
if (source_dir_uri != NULL) {
gnome_vfs_uri_unref (source_dir_uri);
}
}
if (target_is_trash) {
......
......@@ -227,6 +227,7 @@ enum {
RENAMING_ICON,
LAYOUT_CHANGED,
MOVE_COPY_ITEMS,
HANDLE_URL,
HANDLE_URI_LIST,
PREVIEW,
SELECTION_CHANGED,
......@@ -4105,6 +4106,19 @@ nautilus_icon_container_class_init (NautilusIconContainerClass *class)
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
signals[HANDLE_URL]
= g_signal_new ("handle_url",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (NautilusIconContainerClass,
handle_url),
NULL, NULL,
nautilus_marshal_VOID__STRING_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
signals[HANDLE_URI_LIST]
= g_signal_new ("handle_uri_list",
G_TYPE_FROM_CLASS (class),
......@@ -4112,9 +4126,9 @@ nautilus_icon_container_class_init (NautilusIconContainerClass *class)
G_STRUCT_OFFSET (NautilusIconContainerClass,
handle_uri_list),
NULL, NULL,
nautilus_marshal_VOID__POINTER_INT_INT_INT,
nautilus_marshal_VOID__STRING_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_POINTER,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
......
......@@ -100,8 +100,12 @@ typedef struct {
int copy_action,
int x,
int y);
void (* handle_url) (NautilusIconContainer *container,
char *url,
int x,
int y);
void (* handle_uri_list) (NautilusIconContainer *container,
GList *item_uris,
char *uri_list,
int x,
int y);
......
......@@ -615,6 +615,20 @@ receive_dropped_keyword (NautilusIconContainer *container, const char *keyword,
nautilus_icon_container_update_icon (container, drop_target_icon);
}
/* handle dropped url */
static void
receive_dropped_url (NautilusIconContainer *container, const char *encoded_url, GdkDragAction action, int x, int y)
{
if (encoded_url == NULL) {
return;
}
g_signal_emit_by_name (container, "handle_url",
encoded_url,
action,
x, y);
}
/* handle dropped uri list */
static void
receive_dropped_uri_list (NautilusIconContainer *container, const char *uri_list, GdkDragAction action, int x, int y)
......@@ -1107,8 +1121,11 @@ nautilus_icon_container_get_drop_action (NautilusIconContainer *container,
}
break;
case NAUTILUS_ICON_DND_URI_LIST:
case NAUTILUS_ICON_DND_URL:
*action = nautilus_drag_default_drop_action_for_url (context);
break;
case NAUTILUS_ICON_DND_URI_LIST:
case NAUTILUS_ICON_DND_ROOTWINDOW_DROP:
*action = context->suggested_action;
break;
......@@ -1590,8 +1607,13 @@ drag_data_received_callback (GtkWidget *widget,
(NAUTILUS_ICON_CONTAINER (widget),
(char *) data->data, x, y);
break;
case NAUTILUS_ICON_DND_URI_LIST:
case NAUTILUS_ICON_DND_URL:
receive_dropped_url
(NAUTILUS_ICON_CONTAINER (widget),
(char *) data->data, context->action, x, y);
success = TRUE;
break;
case NAUTILUS_ICON_DND_URI_LIST:
receive_dropped_uri_list
(NAUTILUS_ICON_CONTAINER (widget),
(char *) data->data, context->action, x, y);
......
......@@ -108,7 +108,7 @@ nautilus_link_desktop_file_local_create (const char *directory_uri,
"%s%s\n",
display_name,
target_uri,
image != NULL ? "X-Nautilus-Icon=" : "",
image != NULL ? "Icon=" : "",
image != NULL ? image : "");
desktop_item = gnome_desktop_item_new_from_string (uri,
......
......@@ -6,7 +6,7 @@ INT:POINTER,BOOLEAN
INT:POINTER,POINTER
POINTER:VOID
VOID:DOUBLE
VOID:POINTER,INT,INT,INT
VOID:STRING,INT,INT,INT
VOID:POINTER,POINTER
VOID:POINTER,POINTER
VOID:POINTER,STRING
......
......@@ -60,6 +60,8 @@ enum {
GET_ROOT_URI,
GET_FILE_FOR_PATH,
MOVE_COPY_ITEMS,
HANDLE_URL,
HANDLE_URI_LIST,
LAST_SIGNAL
};
......@@ -323,7 +325,9 @@ get_drop_action (NautilusTreeViewDragDest *dest,
char *drop_target;
guint action;
if (!dest->details->have_drag_data || !dest->details->drag_list) {
if (!dest->details->have_drag_data ||
(dest->details->drag_type == NAUTILUS_ICON_DND_GNOME_ICON_LIST &&
dest->details->drag_list == NULL)) {
return 0;
}
......@@ -344,8 +348,11 @@ get_drop_action (NautilusTreeViewDragDest *dest,
g_free (drop_target);
return action;
case NAUTILUS_ICON_DND_URL:
return nautilus_drag_default_drop_action_for_url (context);
case NAUTILUS_ICON_DND_URI_LIST :
case NAUTILUS_ICON_DND_URL :
return context->suggested_action;
}
......@@ -508,17 +515,29 @@ receive_dropped_uri_list (NautilusTreeViewDragDest *dest,
GdkDragContext *context,
int x, int y)
{
GList *source_uris;
if (!dest->details->drag_data) {
return;
}
source_uris = nautilus_icon_dnd_uri_list_extract_uris ((char*)dest->details->drag_data->data);
receive_uris (dest, context, source_uris, x, y);
nautilus_icon_dnd_uri_list_free_strings (source_uris);
g_signal_emit (dest, signals[HANDLE_URI_LIST], 0,
(char*)dest->details->drag_data->data,
context->action,
x, y);
}
static void
receive_dropped_url (NautilusTreeViewDragDest *dest,
GdkDragContext *context,
int x, int y)
{
if (!dest->details->drag_data) {
return;
}
g_signal_emit (dest, signals[HANDLE_URL], 0,
(char*)dest->details->drag_data->data,
context->action,
x, y);
}
static gboolean
......@@ -554,8 +573,11 @@ drag_data_received_callback (GtkWidget *widget,
receive_dropped_icons (dest, context, x, y);
success = TRUE;
break;
case NAUTILUS_ICON_DND_URI_LIST :
case NAUTILUS_ICON_DND_URL :
receive_dropped_url (dest, context, x, y);
success = TRUE;
break;
case NAUTILUS_ICON_DND_URI_LIST :
receive_dropped_uri_list (dest, context, x, y);
success = TRUE;
break;
......@@ -690,6 +712,32 @@ nautilus_tree_view_drag_dest_class_init (NautilusTreeViewDragDestClass *class)
G_TYPE_UINT,
G_TYPE_INT,
G_TYPE_INT);
signals[HANDLE_URL] =
g_signal_new ("handle_url",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (NautilusTreeViewDragDestClass,
handle_url),
NULL, NULL,
nautilus_marshal_VOID__STRING_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
signals[HANDLE_URI_LIST] =
g_signal_new ("handle_uri_list",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (NautilusTreeViewDragDestClass,
handle_uri_list),
NULL, NULL,
nautilus_marshal_VOID__STRING_INT_INT_INT,
G_TYPE_NONE, 4,
G_TYPE_STRING,
G_TYPE_INT,
G_TYPE_INT,
G_TYPE_INT);
}
......
......@@ -64,7 +64,14 @@ struct _NautilusTreeViewDragDestClass {
guint action,
int x,
int y);
void (* handle_url) (NautilusTreeViewDragDest *dest,
char *url,
int x,
int y);
void (* handle_uri_list) (NautilusTreeViewDragDest *dest,
char *uri_list,
int x,
int y);
};
GType nautilus_tree_view_drag_dest_get_type (void);
......
......@@ -31,6 +31,7 @@
#include <math.h>
#include "fm-directory-view.h"
#include "fm-list-view.h"
#include "fm-desktop-icon-view.h"
#include "fm-actions.h"
#include "fm-error-reporting.h"
......@@ -76,6 +77,7 @@
#include <libnautilus-private/nautilus-desktop-directory.h>
#include <libnautilus-private/nautilus-directory-background.h>
#include <libnautilus-private/nautilus-directory.h>
#include <libnautilus-private/nautilus-dnd.h>
#include <libnautilus-private/nautilus-file-attributes.h>
#include <libnautilus-private/nautilus-file-dnd.h>
#include <libnautilus-private/nautilus-file-operations.h>
......@@ -330,6 +332,7 @@ static gboolean can_show_default_app (FMDirectoryView
static gboolean activate_check_mime_types (FMDirectoryView *view,
NautilusFile *file,
gboolean warn_on_mismatch);
static GdkDragAction ask_link_action (FMDirectoryView *view);
static void action_open_scripts_folder_callback (GtkAction *action,
......@@ -7747,6 +7750,274 @@ monitor_file_for_open_with (FMDirectoryView *view, NautilusFile *file)
}
static void
revert_slashes (char *string)
{
while (*string != 0) {
if (*string == '/') {
*string = '\\';
}
string++;
}
}
static GdkDragAction
ask_link_action (FMDirectoryView *view)
{
int button_pressed;
GdkDragAction result;
GtkWidget *parent_window;
parent_window = NULL;
/* Don't use desktop window as parent, since that means
we show up an all desktops etc */
if (! FM_IS_DESKTOP_ICON_VIEW (view)) {
parent_window = GTK_WIDGET (fm_directory_view_get_containing_window (view));
}
button_pressed = eel_run_simple_dialog (parent_window,
TRUE,
GTK_MESSAGE_QUESTION,
_("Download location?"),
_("You can download it or make a link to it."),
NULL, /* as per HIG */
_("Make a _Link"),
GTK_STOCK_CANCEL,
_("_Download"),
NULL);
switch (button_pressed) {
case 0:
result = GDK_ACTION_LINK;
break;
case 1:
case GTK_RESPONSE_DELETE_EVENT:
result = 0;
break;
case 2:
result = GDK_ACTION_COPY;
break;
default:
g_assert_not_reached ();
result = 0;
}
return result;
}
void
fm_directory_view_handle_url_drop (FMDirectoryView *view,
const char *encoded_url,
GdkDragAction action,
int x,
int y)
{
GdkPoint point;
GdkScreen *screen;
int screen_num;
char *url, *title;
char *link_name, *link_file_name, *link_display_name;
char *container_uri;
GArray *points;
char **bits;
GList *uri_list = NULL;
if (encoded_url == NULL) {
return;
}
container_uri = fm_directory_view_get_backing_uri (view);
g_return_if_fail (container_uri != NULL);
if (eel_vfs_has_capability (container_uri,
EEL_VFS_CAPABILITY_IS_REMOTE_AND_SLOW)) {
eel_show_warning_dialog (_("Drag and drop is not supported."),
_("Drag and drop is only supported on local file systems."),
_("Drag and Drop Error"),
fm_directory_view_get_containing_window (view));
g_free (container_uri);
return;
}
if (action == GDK_ACTION_ASK) {
action = ask_link_action (view);
if (action == 0) {
g_free (container_uri);
return;
}
}
/* We don't support GDK_ACTION_ASK or GDK_ACTION_PRIVATE
* and we don't support combinations either. */
if ((action != GDK_ACTION_DEFAULT) &&
(action != GDK_ACTION_COPY) &&
(action != GDK_ACTION_MOVE) &&
(action != GDK_ACTION_LINK)) {
eel_show_warning_dialog (_("Drag and drop is not supported."),
_("An invalid drag type was used."),
_("Drag and Drop Error"),
fm_directory_view_get_containing_window (view));
g_free (container_uri);
return;
}
/* _NETSCAPE_URL_ works like this: $URL\n$TITLE */
bits = g_strsplit (encoded_url, "\n", 0);
switch (g_strv_length (bits)) {
case 0:
g_strfreev (bits);
g_free (container_uri);
return;
case 1:
url = bits[0];
title = NULL;
break;
default:
url = bits[0];
title = bits[1];
}
if (action == GDK_ACTION_LINK) {
if (eel_str_is_empty (title)) {
link_name = eel_uri_get_basename (url);
} else {
link_name = g_strdup (title);
}
if (!eel_str_is_empty (link_name)) {
link_display_name = g_strdup_printf (_("link to %s"), link_name);
/* FIXME: Handle name conflicts? */
link_file_name = g_strconcat (link_name, ".desktop", NULL);
/* The filename can't contain slashes, strip em.
(the basename of http://foo/ is http://foo/) */
revert_slashes (link_file_name);
point.x = x;
point.y = y;
screen = gtk_widget_get_screen (GTK_WIDGET (view));
screen_num = gdk_screen_get_number (screen);
nautilus_link_local_create (container_uri,
link_file_name,
link_display_name,
"gnome-fs-bookmark",
url,
&point,
screen_num);
g_free (link_file_name);
g_free (link_display_name);
}
g_free (link_name);
} else {
GdkPoint tmp_point = { 0, 0 };
/* pass in a 1-item array of icon positions, relative to x, y */
points = g_array_new (FALSE, TRUE, sizeof (GdkPoint));
g_array_append_val (points, tmp_point);
uri_list = g_list_append (uri_list, url);
fm_directory_view_move_copy_items (uri_list, points,
container_uri,
action, x, y, view);
g_list_free (uri_list);
g_array_free (points, TRUE);
}
g_strfreev (bits);
g_free (container_uri);
}
void
fm_directory_view_handle_uri_list_drop (FMDirectoryView *view,
const char *item_uris,
GdkDragAction action,
int x,
int y)
{
gchar **uri_list;
GList *real_uri_list = NULL;
char *container_uri;
int n_uris, i;
GArray *points;
if (item_uris == NULL) {
return;
}
container_uri = fm_directory_view_get_backing_uri (view);
g_return_if_fail (container_uri != NULL);
if (action == GDK_ACTION_ASK) {
action = nautilus_drag_drop_action_ask
(GTK_WIDGET (view),
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK);
if (action == 0) {
g_free (container_uri);
return;
}
}
/* We don't support GDK_ACTION_ASK or GDK_ACTION_PRIVATE
* and we don't support combinations either. */
if ((action != GDK_ACTION_DEFAULT) &&
(action != GDK_ACTION_COPY) &&
(action != GDK_ACTION_MOVE) &&
(action != GDK_ACTION_LINK)) {
eel_show_warning_dialog (_("Drag and drop is not supported."),
_("An invalid drag type was used."),
_("Drag and Drop Error"),
fm_directory_view_get_containing_window (view));
g_free (container_uri);
return;
}
/* Most of what comes in here is not really URIs, but rather paths that
* have a file: prefix in them. We try to sanitize the uri list as a
* result.
*/
n_uris = 0;
uri_list = g_uri_list_extract_uris (item_uris);
for (i = 0; uri_list[i] != NULL; i++) {
char *sanitized_uri;
sanitized_uri = eel_make_uri_from_half_baked_uri (uri_list[i]);
if (sanitized_uri != NULL) {
n_uris++;
real_uri_list = g_list_append (real_uri_list, sanitized_uri);
}
}
g_strfreev (uri_list);
if (n_uris == 1) {
GdkPoint tmp_point = { 0, 0 };
/* pass in a 1-item array of icon positions, relative to x, y */
points = g_array_new (FALSE, TRUE, sizeof (GdkPoint));
g_array_append_val (points, tmp_point);
} else {
points = NULL;
}
fm_directory_view_move_copy_items (real_uri_list, points,
container_uri,
action, x, y, view);
eel_g_list_free_deep (real_uri_list);
if (points != NULL)
g_array_free (points, TRUE);
g_free (container_uri);
}
static void
real_sort_files (FMDirectoryView *view, GList **files)
{
......
......@@ -374,5 +374,14 @@ void fm_directory_view_new_file (FMDirect
NautilusFile *source);
void fm_directory_view_ignore_hidden_file_preferences (FMDirectoryView *view);
void fm_directory_view_init_view_iface (NautilusViewIface *iface);
void fm_directory_view_handle_url_drop (FMDirectoryView *view,
const char *encoded_url,
GdkDragAction action,
int x,
int y);
void fm_directory_view_handle_uri_list_drop (FMDirectoryView *view,
const char *item_uris,
GdkDragAction action,
int x,
int y);
#endif /* FM_DIRECTORY_VIEW_H */
......@@ -46,6 +46,7 @@
#include <gtk/gtkradioaction.h>
#include <gtk/gtksignal.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtkstock.h>
#include <libgnome/gnome-i18n.h>
#include <libgnome/gnome-config.h>
#include <libgnome/gnome-desktop-item.h>
......@@ -188,7 +189,6 @@ static void preview_audio (FMIconVie
gboolean start_flag);
static void update_layout_menus (FMIconView *view);
static void fm_icon_view_iface_init (NautilusViewIface *iface);
G_DEFINE_TYPE_WITH_CODE (FMIconView, fm_icon_view, FM_TYPE_DIRECTORY_VIEW,
......@@ -2458,191 +2458,21 @@ create_icon_container (FMIconView *icon_view)
gtk_widget_show (GTK_WIDGET (icon_container));
}
/* Handles an URL received from Mozilla */
static void
icon_view_handle_url (NautilusIconContainer *container, const char *encoded_url,
GdkDragAction action, int x, int y, FMIconView *view)
{
fm_directory_view_handle_url_drop (FM_DIRECTORY_VIEW (view),
encoded_url, action, x, y);