summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2007-04-28 15:34:39 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2007-04-28 15:34:39 +0000
commit065d1560e603642e5dc5cfd094d31f28d941bbb8 (patch)
treef07198851a27471f50e1a2b0478587e02d5aa130
parent2dcdcfe4df5fa93ebb202a0fa2e61a5a8535b4cd (diff)
downloadgtk+-065d1560e603642e5dc5cfd094d31f28d941bbb8.tar.gz
Add GTK_TARGET_OTHER_{APP,WIDGET} to restrict drags within an
2007-04-28 Matthias Clasen <mclasen@redhat.com> * gtk/gtkdnd.[hc]: Add GTK_TARGET_OTHER_{APP,WIDGET} to restrict drags within an application/widget. (#163141, Jorn Baayen) svn path=/trunk/; revision=17676
-rw-r--r--ChangeLog6
-rw-r--r--docs/reference/ChangeLog4
-rw-r--r--docs/reference/gtk/tmpl/gtkdnd.sgml6
-rw-r--r--gtk/gtkdnd.c4
-rw-r--r--gtk/gtkdnd.h4
5 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c29fb4aada..24cee1cfa7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2007-04-28 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkdnd.[hc]: Add GTK_TARGET_OTHER_{APP,WIDGET} to
+ restrict drags within an application/widget. (#163141,
+ Jorn Baayen)
+
+2007-04-28 Matthias Clasen <mclasen@redhat.com>
+
* docs/tools/Makefile.am:
* gtk/Makefile.am: Make make clean clean. (#410160, Tommi
Komulainen)
diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog
index f4bbd1553d..65d951a117 100644
--- a/docs/reference/ChangeLog
+++ b/docs/reference/ChangeLog
@@ -1,3 +1,7 @@
+2007-04-28 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/tmpl/gtkdnd.sgml: Document GTK_TARGET_OTHER_*
+
2007-04-26 Matthias Clasen <mclasen@redhat.com>
* gtk/tmpl/gtkcomboboxentry.sgml: Mention that the entry
diff --git a/docs/reference/gtk/tmpl/gtkdnd.sgml b/docs/reference/gtk/tmpl/gtkdnd.sgml
index 91aa05f8ce..f804becdc9 100644
--- a/docs/reference/gtk/tmpl/gtkdnd.sgml
+++ b/docs/reference/gtk/tmpl/gtkdnd.sgml
@@ -69,6 +69,12 @@ constraints on an entry in a #GtkTargetTable.
@GTK_TARGET_SAME_WIDGET:
If this is set, the target will only be selected
for drags within a single widget.
+@GTK_TARGET_OTHER_APP:
+ If this is set, the target will not be selected
+ for drags within a single application. Since 2.12
+@GTK_TARGET_OTHER_WIDGET:
+ If this is set, the target will not be selected
+ for drags withing a single widget. Since 2.12
<!-- ##### FUNCTION gtk_drag_dest_set ##### -->
<para>
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 */