summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkdnd.c4
-rw-r--r--gtk/gtkdnd.h4
2 files changed, 6 insertions, 2 deletions
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index e227b69477..31d1d9233e 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -1520,7 +1520,9 @@ gtk_drag_dest_find_target (GtkWidget *widget,
if (tmp_source->data == GUINT_TO_POINTER (pair->target))
{
if ((!(pair->flags & GTK_TARGET_SAME_APP) || source_widget) &&
- (!(pair->flags & GTK_TARGET_SAME_WIDGET) || (source_widget == widget)))
+ (!(pair->flags & GTK_TARGET_SAME_WIDGET) || (source_widget == widget)) &&
+ (!(pair->flags & GTK_TARGET_OTHER_APP) || !source_widget) &&
+ (!(pair->flags & GTK_TARGET_OTHER_WIDGET) || (source_widget != widget)))
return pair->target;
else
break;
diff --git a/gtk/gtkdnd.h b/gtk/gtkdnd.h
index 626ef00597..f9119060b5 100644
--- a/gtk/gtkdnd.h
+++ b/gtk/gtkdnd.h
@@ -46,7 +46,9 @@ typedef enum {
*/
typedef enum {
GTK_TARGET_SAME_APP = 1 << 0, /*< nick=same-app >*/
- GTK_TARGET_SAME_WIDGET = 1 << 1 /*< nick=same-widget >*/
+ GTK_TARGET_SAME_WIDGET = 1 << 1, /*< nick=same-widget >*/
+ GTK_TARGET_OTHER_APP = 1 << 2, /*< nick=other-app >*/
+ GTK_TARGET_OTHER_WIDGET = 1 << 3 /*< nick=other-widget >*/
} GtkTargetFlags;
/* Destination side */