dnd: Add a private struct
authorBenjamin Otte <otte@redhat.com>
Mon, 30 Apr 2018 11:14:29 +0000 (13:14 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 2 May 2018 23:31:40 +0000 (01:31 +0200)
And put member veriables into it.

Also fix backends to use accessors instead of direct access.

gdk/gdkdnd.c
gdk/gdkdndprivate.h
gdk/win32/gdkdnd-win32.c
gdk/x11/gdkdnd-x11.c

index d7a58c98501fec528d2350ddd008c4f293bd1e22..545e7cb3caf431e1272242fae4543d8fc966e295 100644 (file)
 #include "gdkenumtypes.h"
 #include "gdkeventsprivate.h"
 
+typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
+
+struct _GdkDragContextPrivate 
+{
+  GdkDisplay *display;
+  GdkDevice *device;
+};
+
 static struct {
   GdkDragAction action;
   const gchar  *name;
@@ -69,6 +77,8 @@ static GParamSpec *properties[N_PROPERTIES] = { NULL, };
 static guint signals[N_SIGNALS] = { 0 };
 static GList *contexts = NULL;
 
+G_DEFINE_TYPE_WITH_PRIVATE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT)
+
 /**
  * SECTION:dnd
  * @title: Drag And Drop
@@ -103,7 +113,11 @@ static GList *contexts = NULL;
 GdkDisplay *
 gdk_drag_context_get_display (GdkDragContext *context)
 {
-  return context->display;
+  GdkDragContextPrivate *priv = gdk_drag_context_get_instance_private (context);
+
+  g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL);
+
+  return priv->display;
 }
 
 /**
@@ -214,13 +228,13 @@ gdk_drag_context_get_dest_surface (GdkDragContext *context)
 GdkDevice *
 gdk_drag_context_get_device (GdkDragContext *context)
 {
+  GdkDragContextPrivate *priv = gdk_drag_context_get_instance_private (context);
+
   g_return_val_if_fail (GDK_IS_DRAG_CONTEXT (context), NULL);
 
-  return context->device;
+  return priv->device;
 }
 
-G_DEFINE_TYPE (GdkDragContext, gdk_drag_context, G_TYPE_OBJECT)
-
 static void
 gdk_drag_context_init (GdkDragContext *context)
 {
@@ -234,6 +248,7 @@ gdk_drag_context_set_property (GObject      *gobject,
                                GParamSpec   *pspec)
 {
   GdkDragContext *context = GDK_DRAG_CONTEXT (gobject);
+  GdkDragContextPrivate *priv = gdk_drag_context_get_instance_private (context);
 
   switch (prop_id)
     {
@@ -244,9 +259,9 @@ gdk_drag_context_set_property (GObject      *gobject,
       break;
 
     case PROP_DEVICE:
-      context->device = g_value_dup_object (value);
-      g_assert (context->device != NULL);
-      context->display = gdk_device_get_display (context->device);
+      priv->device = g_value_dup_object (value);
+      g_assert (priv->device != NULL);
+      priv->display = gdk_device_get_display (priv->device);
       break;
 
     default:
@@ -262,6 +277,7 @@ gdk_drag_context_get_property (GObject    *gobject,
                                GParamSpec *pspec)
 {
   GdkDragContext *context = GDK_DRAG_CONTEXT (gobject);
+  GdkDragContextPrivate *priv = gdk_drag_context_get_instance_private (context);
 
   switch (prop_id)
     {
@@ -270,11 +286,11 @@ gdk_drag_context_get_property (GObject    *gobject,
       break;
 
     case PROP_DEVICE:
-      g_value_set_object (value, context->device);
+      g_value_set_object (value, priv->device);
       break;
 
     case PROP_DISPLAY:
-      g_value_set_object (value, context->display);
+      g_value_set_object (value, priv->display);
       break;
 
     case PROP_FORMATS:
index 5bb20e7b1c5b00649f9ae28115b3902268a5fdca..9778bc00e05eaab6ae4290c419a9fb2d4a3c6fe2 100644 (file)
@@ -80,8 +80,6 @@ struct _GdkDragContext {
   GObject parent_instance;
 
   /*< private >*/
-  GdkDisplay *display;
-
   gboolean is_source;
   GdkSurface *source_surface;
   GdkSurface *dest_surface;
@@ -93,8 +91,6 @@ struct _GdkDragContext {
   GdkDragAction suggested_action;
   GdkDragAction action;
 
-  GdkDevice *device;
-
   guint drop_done : 1; /* Whether gdk_drag_drop_done() was performed */
 };
 
index c82c8381afa55edd81a98902a34c6d5b79dbee74..db6f4e833a458ba5ea8f28b66610a6d8ed359a0b 100644 (file)
@@ -2239,7 +2239,7 @@ gdk_win32_drag_context_find_window (GdkDragContext  *context,
           g_object_ref (dest_surface);
         }
       else
-        dest_surface = gdk_win32_surface_foreign_new_for_display (context->display, a.result);
+        dest_surface = gdk_win32_surface_foreign_new_for_display (gdk_drag_context_get_display (context), a.result);
 
       if (use_ole2_dnd)
         *protocol = GDK_DRAG_PROTO_OLE2;
index 54138c047f4af5d29288ec179ecfd13693d46401..93c39bf532eb5af958d494099b77eab2d1d5d77d 100644 (file)
@@ -2140,7 +2140,7 @@ gdk_x11_drag_context_find_surface (GdkDragContext  *context,
                                    gint             y_root,
                                    GdkDragProtocol *protocol)
 {
-  GdkX11Screen *screen_x11 = GDK_X11_SCREEN(GDK_X11_DISPLAY (context->display)->screen);
+  GdkX11Screen *screen_x11;
   GdkX11DragContext *context_x11 = GDK_X11_DRAG_CONTEXT (context);
   GdkSurfaceCache *window_cache;
   GdkDisplay *display;
@@ -2148,6 +2148,7 @@ gdk_x11_drag_context_find_surface (GdkDragContext  *context,
   GdkSurface *dest_surface;
 
   display = gdk_drag_context_get_display (context);
+  screen_x11 = GDK_X11_SCREEN(GDK_X11_DISPLAY (display)->screen);
 
   window_cache = drag_context_find_window_cache (context_x11, display);
 
@@ -2811,7 +2812,7 @@ drag_context_grab (GdkDragContext *context)
 
   g_set_object (&x11_context->grab_seat, seat);
 
-  gdk_x11_display_error_trap_push (context->display);
+  gdk_x11_display_error_trap_push (display);
 
   for (i = 0; i < G_N_ELEMENTS (grab_keys); ++i)
     {
@@ -2863,7 +2864,7 @@ drag_context_grab (GdkDragContext *context)
         }
     }
 
-  gdk_x11_display_error_trap_pop_ignored (context->display);
+  gdk_x11_display_error_trap_pop_ignored (display);
 
   return TRUE;
 }