aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Le Thanh Duong <olivier@lethanh.be>2010-03-05 07:45:01 +0800
committerOlivier Le Thanh Duong <olivier@lethanh.be>2010-03-16 00:55:07 +0800
commitc7085dce8076c1e98049adc7dbcb593b16ac5df8 (patch)
tree73d665b3bfd4ea79eb9b53f6c65970aa83e6d5b5
parentf0555970a6dd57a4494c295f1e29e42d8aafec2d (diff)
downloadgsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar.gz
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar.bz2
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar.lz
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar.xz
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.tar.zst
gsoc2013-empathy-c7085dce8076c1e98049adc7dbcb593b16ac5df8.zip
DnD: add a new text/path-list target in chat window
add a new text/path-list drop target to the chat window, it act like the text/uri-list target but is prioritized over it. This is mainly to circumvent Tomboy returning note:// uri in its uri-list.
-rw-r--r--src/empathy-chat-window.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 8a5d50356..7419a720b 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -119,6 +119,7 @@ static const GtkTargetEntry drag_types_dest[] = {
{ "text/contact-id", 0, DND_DRAG_TYPE_CONTACT_ID },
{ "GTK_NOTEBOOK_TAB", GTK_TARGET_SAME_APP, DND_DRAG_TYPE_TAB },
{ "text/uri-list", 0, DND_DRAG_TYPE_URI_LIST },
+ { "text/path-list", 0, DND_DRAG_TYPE_URI_LIST },
};
static const GtkTargetEntry drag_types_dest_contact[] = {
@@ -126,6 +127,9 @@ static const GtkTargetEntry drag_types_dest_contact[] = {
};
static const GtkTargetEntry drag_types_dest_file[] = {
+ /* must be first to be prioritized, in order to receive the
+ * note's file path from Tomboy instead of an URI */
+ { "text/path-list", 0, DND_DRAG_TYPE_URI_LIST },
{ "text/uri-list", 0, DND_DRAG_TYPE_URI_LIST },
};
@@ -1537,15 +1541,18 @@ chat_window_drag_drop (GtkWidget *widget,
int x,
int y,
guint time_,
- gpointer user_data)
+ EmpathyChatWindow *window)
{
- GdkAtom target, uri_target, contact_target;
+ GdkAtom target;
+ EmpathyChatWindowPriv *priv;
- target = gtk_drag_dest_find_target (widget, context, NULL);
- uri_target = gdk_atom_intern_static_string ("text/uri-list");
- contact_target = gdk_atom_intern_static_string ("text/contact-id");
+ priv = GET_PRIV (window);
- if (target == uri_target || target == contact_target) {
+ target = gtk_drag_dest_find_target (widget, context, priv->file_targets);
+ if (target == GDK_NONE)
+ target = gtk_drag_dest_find_target (widget, context, priv->contact_targets);
+
+ if (target != GDK_NONE) {
gtk_drag_get_data (widget, context, target, time_);
return TRUE;
}