summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnautilus-private/nautilus-canvas-container.c25
-rw-r--r--libnautilus-private/nautilus-canvas-container.h2
-rw-r--r--libnautilus-private/nautilus-canvas-dnd.c2
-rw-r--r--libnautilus-private/nautilus-canvas-private.h2
-rw-r--r--src/nautilus-canvas-view.c14
-rw-r--r--src/nautilus-list-view.c2
6 files changed, 45 insertions, 2 deletions
diff --git a/libnautilus-private/nautilus-canvas-container.c b/libnautilus-private/nautilus-canvas-container.c
index ce3ae9702..145056552 100644
--- a/libnautilus-private/nautilus-canvas-container.c
+++ b/libnautilus-private/nautilus-canvas-container.c
@@ -226,6 +226,7 @@ enum {
MIDDLE_CLICK,
GET_CONTAINER_URI,
GET_ICON_URI,
+ GET_ICON_ACTIVATION_URI,
GET_ICON_DROP_TARGET_URI,
GET_STORED_ICON_POSITION,
ICON_POSITION_CHANGED,
@@ -4847,6 +4848,16 @@ nautilus_canvas_container_class_init (NautilusCanvasContainerClass *class)
g_cclosure_marshal_generic,
G_TYPE_STRING, 1,
G_TYPE_POINTER);
+ signals[GET_ICON_ACTIVATION_URI]
+ = g_signal_new ("get-icon-activation-uri",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (NautilusCanvasContainerClass,
+ get_icon_activation_uri),
+ NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_STRING, 1,
+ G_TYPE_POINTER);
signals[GET_ICON_DROP_TARGET_URI]
= g_signal_new ("get-icon-drop-target-uri",
G_TYPE_FROM_CLASS (class),
@@ -6964,6 +6975,20 @@ nautilus_canvas_container_get_icon_uri (NautilusCanvasContainer *container,
}
char *
+nautilus_canvas_container_get_icon_activation_uri (NautilusCanvasContainer *container,
+ NautilusCanvasIcon *icon)
+{
+ char *uri;
+
+ uri = NULL;
+ g_signal_emit (container,
+ signals[GET_ICON_ACTIVATION_URI], 0,
+ icon->data,
+ &uri);
+ return uri;
+}
+
+char *
nautilus_canvas_container_get_icon_drop_target_uri (NautilusCanvasContainer *container,
NautilusCanvasIcon *icon)
{
diff --git a/libnautilus-private/nautilus-canvas-container.h b/libnautilus-private/nautilus-canvas-container.h
index d5ec7a09f..ff534a76b 100644
--- a/libnautilus-private/nautilus-canvas-container.h
+++ b/libnautilus-private/nautilus-canvas-container.h
@@ -180,6 +180,8 @@ typedef struct {
NautilusCanvasPosition *position);
char * (* get_icon_uri) (NautilusCanvasContainer *container,
NautilusCanvasIconData *data);
+ char * (* get_icon_activation_uri) (NautilusCanvasContainer *container,
+ NautilusCanvasIconData *data);
char * (* get_icon_drop_target_uri) (NautilusCanvasContainer *container,
NautilusCanvasIconData *data);
diff --git a/libnautilus-private/nautilus-canvas-dnd.c b/libnautilus-private/nautilus-canvas-dnd.c
index b4eb5868e..b85d635b3 100644
--- a/libnautilus-private/nautilus-canvas-dnd.c
+++ b/libnautilus-private/nautilus-canvas-dnd.c
@@ -238,7 +238,7 @@ icon_get_data_binder (NautilusCanvasIcon *icon, gpointer data)
canvas_rect_world_to_widget (EEL_CANVAS (container), &world_rect, &widget_rect);
- uri = nautilus_canvas_container_get_icon_uri (container, icon);
+ uri = nautilus_canvas_container_get_icon_activation_uri (container, icon);
if (uri == NULL) {
g_warning ("no URI for one of the iterated icons");
return TRUE;
diff --git a/libnautilus-private/nautilus-canvas-private.h b/libnautilus-private/nautilus-canvas-private.h
index 79154dbaf..3753ad191 100644
--- a/libnautilus-private/nautilus-canvas-private.h
+++ b/libnautilus-private/nautilus-canvas-private.h
@@ -272,6 +272,8 @@ void nautilus_canvas_container_select_list_unselect_others (NautilusCan
GList *icons);
char * nautilus_canvas_container_get_icon_uri (NautilusCanvasContainer *container,
NautilusCanvasIcon *canvas);
+char * nautilus_canvas_container_get_icon_activation_uri (NautilusCanvasContainer *container,
+ NautilusCanvasIcon *canvas);
char * nautilus_canvas_container_get_icon_drop_target_uri (NautilusCanvasContainer *container,
NautilusCanvasIcon *canvas);
void nautilus_canvas_container_update_icon (NautilusCanvasContainer *container,
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index 2cfe145d7..5ffc9ec25 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -1699,6 +1699,18 @@ get_icon_uri_callback (NautilusCanvasContainer *container,
}
static char *
+get_icon_activation_uri_callback (NautilusCanvasContainer *container,
+ NautilusFile *file,
+ NautilusCanvasView *canvas_view)
+{
+ g_assert (NAUTILUS_IS_CANVAS_CONTAINER (container));
+ g_assert (NAUTILUS_IS_FILE (file));
+ g_assert (NAUTILUS_IS_CANVAS_VIEW (canvas_view));
+
+ return nautilus_file_get_activation_uri (file);
+}
+
+static char *
get_icon_drop_target_uri_callback (NautilusCanvasContainer *container,
NautilusFile *file,
NautilusCanvasView *canvas_view)
@@ -1930,6 +1942,8 @@ create_canvas_container (NautilusCanvasView *canvas_view)
/* FIXME: many of these should move into fm-canvas-container as virtual methods */
g_signal_connect_object (canvas_container, "get-icon-uri",
G_CALLBACK (get_icon_uri_callback), canvas_view, 0);
+ g_signal_connect_object (canvas_container, "get-icon-activation-uri",
+ G_CALLBACK (get_icon_activation_uri_callback), canvas_view, 0);
g_signal_connect_object (canvas_container, "get-icon-drop-target-uri",
G_CALLBACK (get_icon_drop_target_uri_callback), canvas_view, 0);
g_signal_connect_object (canvas_container, "move-copy-items",
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 72e78e8dd..989c40a41 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -450,7 +450,7 @@ item_get_data_binder (GtkTreeModel *model,
column,
&cell_area);
- uri = nautilus_file_get_uri (file);
+ uri = nautilus_file_get_activation_uri (file);
nautilus_file_unref (file);
/* pass the uri, mouse-relative x/y and icon width/height */