[gtk+] dnd: Move GdkDragProtocol to X11



commit bdd2f68ab58d372b27aacb5f03dd0543b3addf6e
Author: Benjamin Otte <otte redhat com>
Date:   Sun Dec 17 20:36:40 2017 +0100

    dnd: Move GdkDragProtocol to X11
    
    It's not needed in the generic implementation, so don't have it there.

 gdk/gdkdndprivate.h  |   29 ---------------------
 gdk/x11/gdkdnd-x11.c |   69 ++++++++++++++++++++++++-------------------------
 2 files changed, 34 insertions(+), 64 deletions(-)
---
diff --git a/gdk/gdkdndprivate.h b/gdk/gdkdndprivate.h
index fdf544a..2abc9fb 100644
--- a/gdk/gdkdndprivate.h
+++ b/gdk/gdkdndprivate.h
@@ -23,33 +23,6 @@
 G_BEGIN_DECLS
 
 
-/*
- * GdkDragProtocol:
- * @GDK_DRAG_PROTO_NONE: no protocol.
- * @GDK_DRAG_PROTO_MOTIF: The Motif DND protocol. No longer supported
- * @GDK_DRAG_PROTO_XDND: The Xdnd protocol.
- * @GDK_DRAG_PROTO_ROOTWIN: An extension to the Xdnd protocol for
- *  unclaimed root window drops.
- * @GDK_DRAG_PROTO_WIN32_DROPFILES: The simple WM_DROPFILES protocol.
- * @GDK_DRAG_PROTO_OLE2: The complex OLE2 DND protocol (not implemented).
- * @GDK_DRAG_PROTO_LOCAL: Intra-application DND.
- * @GDK_DRAG_PROTO_WAYLAND: Wayland DND protocol.
- *
- * Used in #GdkDragContext to indicate the protocol according to
- * which DND is done.
- */
-typedef enum
-{
-  GDK_DRAG_PROTO_NONE = 0,
-  GDK_DRAG_PROTO_MOTIF,
-  GDK_DRAG_PROTO_XDND,
-  GDK_DRAG_PROTO_ROOTWIN,
-  GDK_DRAG_PROTO_WIN32_DROPFILES,
-  GDK_DRAG_PROTO_OLE2,
-  GDK_DRAG_PROTO_LOCAL,
-  GDK_DRAG_PROTO_WAYLAND
-} GdkDragProtocol;
-
 #define GDK_DRAG_CONTEXT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DRAG_CONTEXT, 
GdkDragContextClass))
 #define GDK_IS_DRAG_CONTEXT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DRAG_CONTEXT))
 #define GDK_DRAG_CONTEXT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DRAG_CONTEXT, 
GdkDragContextClass))
@@ -111,8 +84,6 @@ struct _GdkDragContext {
   GObject parent_instance;
 
   /*< private >*/
-  GdkDragProtocol protocol;
-
   GdkDisplay *display;
 
   gboolean is_source;
diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c
index 32c3127..70585c3 100644
--- a/gdk/x11/gdkdnd-x11.c
+++ b/gdk/x11/gdkdnd-x11.c
@@ -58,6 +58,23 @@ typedef enum {
   GDK_DRAG_STATUS_DROP
 } GtkDragStatus;
 
+/*
+ * GdkDragProtocol:
+ * @GDK_DRAG_PROTO_NONE: no protocol.
+ * @GDK_DRAG_PROTO_XDND: The Xdnd protocol.
+ * @GDK_DRAG_PROTO_ROOTWIN: An extension to the Xdnd protocol for
+ *  unclaimed root window drops.
+ *
+ * Used in #GdkDragContext to indicate the protocol according to
+ * which DND is done.
+ */
+typedef enum
+{
+  GDK_DRAG_PROTO_NONE = 0,
+  GDK_DRAG_PROTO_XDND,
+  GDK_DRAG_PROTO_ROOTWIN
+} GdkDragProtocol;
+
 typedef struct {
   guint32 xid;
   gint x, y, width, height;
@@ -80,6 +97,8 @@ struct _GdkX11DragContext
 {
   GdkDragContext context;
 
+  GdkDragProtocol protocol;
+
   gint start_x;                /* Where the drag started */
   gint start_y;
   guint16 last_x;              /* Coordinates from last event */
@@ -408,7 +427,7 @@ gdk_x11_drag_context_finalize (GObject *object)
 
   if (context->source_window)
     {
-      if ((context->protocol == GDK_DRAG_PROTO_XDND) && !context->is_source)
+      if ((x11_context->protocol == GDK_DRAG_PROTO_XDND) && !context->is_source)
         xdnd_manage_source_filter (context, context->source_window, FALSE);
     }
 
@@ -1762,7 +1781,7 @@ xdnd_enter_filter (GdkXEvent *xev,
                               NULL);
   context = (GdkDragContext *)context_x11;
 
-  context->protocol = GDK_DRAG_PROTO_XDND;
+  context_x11->protocol = GDK_DRAG_PROTO_XDND;
   context_x11->version = version;
 
   /* FIXME: Should extend DnD protocol to have device info */
@@ -1859,7 +1878,7 @@ xdnd_leave_filter (GdkXEvent *xev,
   xdnd_precache_atoms (display);
 
   if ((display_x11->current_dest_drag != NULL) &&
-      (display_x11->current_dest_drag->protocol == GDK_DRAG_PROTO_XDND) &&
+      (GDK_X11_DRAG_CONTEXT (display_x11->current_dest_drag)->protocol == GDK_DRAG_PROTO_XDND) &&
       (GDK_WINDOW_XID (display_x11->current_dest_drag->source_window) == source_window))
     {
       event->any.type = GDK_DRAG_LEAVE;
@@ -1908,7 +1927,7 @@ xdnd_position_filter (GdkXEvent *xev,
   context = display_x11->current_dest_drag;
 
   if ((context != NULL) &&
-      (context->protocol == GDK_DRAG_PROTO_XDND) &&
+      (GDK_X11_DRAG_CONTEXT (context)->protocol == GDK_DRAG_PROTO_XDND) &&
       (GDK_WINDOW_XID (context->source_window) == source_window))
     {
       impl = GDK_WINDOW_IMPL_X11 (event->any.window->impl);
@@ -1968,7 +1987,7 @@ xdnd_drop_filter (GdkXEvent *xev,
   context = display_x11->current_dest_drag;
 
   if ((context != NULL) &&
-      (context->protocol == GDK_DRAG_PROTO_XDND) &&
+      (GDK_X11_DRAG_CONTEXT (context)->protocol == GDK_DRAG_PROTO_XDND) &&
       (GDK_WINDOW_XID (context->source_window) == source_window))
     {
       context_x11 = GDK_X11_DRAG_CONTEXT (context);
@@ -2028,17 +2047,12 @@ gdk_drag_do_leave (GdkX11DragContext *context_x11,
 
   if (context->dest_window)
     {
-      switch (context->protocol)
+      switch (context_x11->protocol)
         {
         case GDK_DRAG_PROTO_XDND:
           xdnd_send_leave (context_x11);
           break;
         case GDK_DRAG_PROTO_ROOTWIN:
-        case GDK_DRAG_PROTO_MOTIF:
-        case GDK_DRAG_PROTO_WIN32_DROPFILES:
-        case GDK_DRAG_PROTO_OLE2:
-        case GDK_DRAG_PROTO_LOCAL:
-        case GDK_DRAG_PROTO_WAYLAND:
         case GDK_DRAG_PROTO_NONE:
         default:
           break;
@@ -2182,7 +2196,7 @@ gdk_x11_drag_context_find_window (GdkDragContext  *context,
       dest_window = context->dest_window;
       if (dest_window)
         g_object_ref (dest_window);
-      *protocol = context->protocol;
+      *protocol = context_x11->protocol;
     }
 
   return dest_window;
@@ -2283,7 +2297,7 @@ gdk_x11_drag_context_drag_motion (GdkDragContext *context,
           context->dest_window = dest_window;
           context_x11->drop_xid = context_x11->dest_xid;
           g_object_ref (context->dest_window);
-          context->protocol = protocol;
+          context_x11->protocol = protocol;
 
           switch (protocol)
             {
@@ -2292,11 +2306,6 @@ gdk_x11_drag_context_drag_motion (GdkDragContext *context,
               break;
 
             case GDK_DRAG_PROTO_ROOTWIN:
-            case GDK_DRAG_PROTO_MOTIF:
-            case GDK_DRAG_PROTO_WIN32_DROPFILES:
-            case GDK_DRAG_PROTO_OLE2:
-            case GDK_DRAG_PROTO_LOCAL:
-            case GDK_DRAG_PROTO_WAYLAND:
             case GDK_DRAG_PROTO_NONE:
             default:
               break;
@@ -2338,7 +2347,7 @@ gdk_x11_drag_context_drag_motion (GdkDragContext *context,
 
       if (context_x11->drag_status == GDK_DRAG_STATUS_DRAG)
         {
-          switch (context->protocol)
+          switch (context_x11->protocol)
             {
             case GDK_DRAG_PROTO_XDND:
               xdnd_send_motion (context_x11, x_root * impl->window_scale, y_root * impl->window_scale, 
suggested_action, time);
@@ -2362,13 +2371,8 @@ gdk_x11_drag_context_drag_motion (GdkDragContext *context,
                   }
               }
               break;
-            case GDK_DRAG_PROTO_MOTIF:
-            case GDK_DRAG_PROTO_WIN32_DROPFILES:
-            case GDK_DRAG_PROTO_OLE2:
-            case GDK_DRAG_PROTO_LOCAL:
-            case GDK_DRAG_PROTO_WAYLAND:
             case GDK_DRAG_PROTO_NONE:
-              g_warning ("Invalid drag protocol %u in gdk_x11_drag_context_drag_motion()", 
context->protocol);
+              g_warning ("Invalid drag protocol %u in gdk_x11_drag_context_drag_motion()", 
context_x11->protocol);
               break;
             default:
               break;
@@ -2396,7 +2400,7 @@ gdk_x11_drag_context_drag_drop (GdkDragContext *context,
 
   if (context->dest_window)
     {
-      switch (context->protocol)
+      switch (context_x11->protocol)
         {
         case GDK_DRAG_PROTO_XDND:
           xdnd_send_drop (context_x11, time);
@@ -2408,13 +2412,8 @@ gdk_x11_drag_context_drag_drop (GdkDragContext *context,
         case GDK_DRAG_PROTO_NONE:
           g_warning ("GDK_DRAG_PROTO_NONE is not valid in gdk_drag_drop()");
           break;
-        case GDK_DRAG_PROTO_MOTIF:
-        case GDK_DRAG_PROTO_WIN32_DROPFILES:
-        case GDK_DRAG_PROTO_OLE2:
-        case GDK_DRAG_PROTO_LOCAL:
-        case GDK_DRAG_PROTO_WAYLAND:
         default:
-          g_warning ("Drag protocol %u is not valid in gdk_drag_drop()", context->protocol);
+          g_warning ("Drag protocol %u is not valid in gdk_drag_drop()", context_x11->protocol);
           break;
         }
     }
@@ -2435,7 +2434,7 @@ gdk_x11_drag_context_drag_status (GdkDragContext *context,
 
   context->action = action;
 
-  if (context->protocol == GDK_DRAG_PROTO_XDND)
+  if (context_x11->protocol == GDK_DRAG_PROTO_XDND)
     {
       xev.xclient.type = ClientMessage;
       xev.xclient.message_type = gdk_x11_get_xatom_by_name_for_display (display, "XdndStatus");
@@ -2470,7 +2469,7 @@ gdk_x11_drag_context_drop_finish (GdkDragContext *context,
                                   gboolean        success,
                                   guint32         time)
 {
-  if (context->protocol == GDK_DRAG_PROTO_XDND)
+  if (GDK_X11_DRAG_CONTEXT (context)->protocol == GDK_DRAG_PROTO_XDND)
     {
       GdkDisplay *display = gdk_drag_context_get_display (context);
       XEvent xev;
@@ -2981,7 +2980,7 @@ _gdk_x11_window_drag_begin (GdkWindow          *window,
   x11_context->last_x = x_root;
   x11_context->last_y = y_root;
 
-  context->protocol = GDK_DRAG_PROTO_XDND;
+  x11_context->protocol = GDK_DRAG_PROTO_XDND;
   x11_context->actions = actions;
   x11_context->ipc_window = gdk_window_new_popup (display, &(GdkRectangle) { -99, -99, 1, 1 });
   if (gdk_window_get_group (window))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]