diff options
author | Olivier Le Thanh Duong <olivier@lethanh.be> | 2010-03-05 07:45:01 +0800 |
---|---|---|
committer | Olivier Le Thanh Duong <olivier@lethanh.be> | 2010-03-16 00:55:07 +0800 |
commit | c7085dce8076c1e98049adc7dbcb593b16ac5df8 (patch) | |
tree | 73d665b3bfd4ea79eb9b53f6c65970aa83e6d5b5 /src/empathy-chat-window.c | |
parent | f0555970a6dd57a4494c295f1e29e42d8aafec2d (diff) | |
download | gsoc2013-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.
Diffstat (limited to 'src/empathy-chat-window.c')
-rw-r--r-- | src/empathy-chat-window.c | 19 |
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; } |