[gtk+/wip/attach-params] 92a79e78 gdkattachparams: GObjectify



commit 0a5a8ec3d498e7419cea5d57f1c87b1278bf3aec
Author: William Hua <william hua canonical com>
Date:   Sat Jan 30 01:20:04 2016 -0500

    92a79e78 gdkattachparams: GObjectify

 docs/reference/gdk/gdk3-sections.txt |    1 -
 gdk/gdkattachparams.c                |  115 +++++++++++++++++-----------------
 gdk/gdkattachparams.h                |   72 +++++++++++----------
 gdk/gdkattachparamsprivate.h         |    7 ++-
 4 files changed, 99 insertions(+), 96 deletions(-)
---
diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt
index 2001c98..c9fc713 100644
--- a/docs/reference/gdk/gdk3-sections.txt
+++ b/docs/reference/gdk/gdk3-sections.txt
@@ -556,7 +556,6 @@ gdk_fullscreen_mode_get_type
 <FILE>gdkattachparams</FILE>
 GdkAttachParams
 gdk_attach_params_new
-gdk_attach_params_free
 gdk_attach_params_set_attach_rect
 gdk_attach_params_set_anchors
 gdk_attach_params_get_anchors
diff --git a/gdk/gdkattachparams.c b/gdk/gdkattachparams.c
index 719bdc2..ff5affa 100644
--- a/gdk/gdkattachparams.c
+++ b/gdk/gdkattachparams.c
@@ -74,53 +74,52 @@
  * Since: 3.20
  */
 
+G_DEFINE_TYPE (GdkAttachParams, gdk_attach_params, G_TYPE_INITIALLY_UNOWNED)
+
+static void
+gdk_attach_params_dispose (GObject *object)
+{
+  GdkAttachParams *self = GDK_ATTACH_PARAMS (object);
+
+  if (self->attach_destroy_notify)
+    g_clear_pointer (&self->attach_user_data, self->attach_destroy_notify);
+
+  g_clear_object (&self->attach_parent);
+
+  G_OBJECT_CLASS (gdk_attach_params_parent_class)->dispose (object);
+}
+
+static void
+gdk_attach_params_class_init (GdkAttachParamsClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = gdk_attach_params_dispose;
+}
+
+static void
+gdk_attach_params_init (GdkAttachParams *self)
+{
+  self->attach_anchor = GDK_WINDOW_EDGE_CENTER;
+  self->window_anchor = GDK_WINDOW_EDGE_CENTER;
+  self->flip_x = TRUE;
+  self->flip_y = TRUE;
+}
+
 /**
  * gdk_attach_params_new:
  *
  * Creates a new #GdkAttachParams for describing the position of a window
  * relative to an attachment rectangle.
  *
- * Returns: (transfer full): a new #GdkAttachParams, to be freed with
- *          gdk_attach_params_free()
+ * Returns: (transfer floating): a new #GdkAttachParams
  *
  * Since: 3.20
  */
 GdkAttachParams *
 gdk_attach_params_new (void)
 {
-  GdkAttachParams *params = g_new0 (GdkAttachParams, 1);
-
-  params->attach_anchor = GDK_WINDOW_EDGE_CENTER;
-  params->window_anchor = GDK_WINDOW_EDGE_CENTER;
-  params->flip_x = TRUE;
-  params->flip_y = TRUE;
-
-  return params;
-}
-
-/**
- * gdk_attach_params_free:
- * @data: the #GdkAttachParams to free
- *
- * Releases @data.
- *
- * Since: 3.20
- */
-void
-gdk_attach_params_free (gpointer data)
-{
-  GdkAttachParams *params;
-
-  g_return_if_fail (data);
-
-  params = data;
-
-  if (params->attach_user_data && params->attach_destroy_notify)
-    params->attach_destroy_notify (params->attach_user_data);
-
-  g_clear_object (&params->attach_parent);
-
-  g_free (params);
+  return g_object_new (GDK_TYPE_ATTACH_PARAMS, NULL);
 }
 
 /**
@@ -191,9 +190,9 @@ gdk_attach_params_set_anchors (GdkAttachParams *params,
  * Since: 3.20
  */
 void
-gdk_attach_params_get_anchors (const GdkAttachParams *params,
-                               GdkWindowEdge         *attach_anchor,
-                               GdkWindowEdge         *window_anchor)
+gdk_attach_params_get_anchors (GdkAttachParams *params,
+                               GdkWindowEdge   *attach_anchor,
+                               GdkWindowEdge   *window_anchor)
 {
   g_return_if_fail (params);
 
@@ -547,16 +546,16 @@ clamp_with_feedback (gint  val,
  * Since: 3.20
  */
 static void
-gdk_attach_params_choose_position (const GdkAttachParams *params,
-                                   gint                   width,
-                                   gint                   height,
-                                   const GdkRectangle    *bounds,
-                                   gint                  *x,
-                                   gint                  *y,
-                                   gint                  *offset_x,
-                                   gint                  *offset_y,
-                                   gboolean              *flipped_x,
-                                   gboolean              *flipped_y)
+gdk_attach_params_choose_position (GdkAttachParams    *params,
+                                   gint                width,
+                                   gint                height,
+                                   const GdkRectangle *bounds,
+                                   gint               *x,
+                                   gint               *y,
+                                   gint               *offset_x,
+                                   gint               *offset_y,
+                                   gboolean           *flipped_x,
+                                   gboolean           *flipped_y)
 {
   gint tmp_x;
   gint tmp_y;
@@ -773,14 +772,14 @@ gdk_attach_params_choose_position (const GdkAttachParams *params,
  * Since: 3.20
  */
 static void
-gdk_attach_params_choose_position_for_window (const GdkAttachParams *params,
-                                              GdkWindow             *window,
-                                              gint                  *x,
-                                              gint                  *y,
-                                              gint                  *offset_x,
-                                              gint                  *offset_y,
-                                              gboolean              *flipped_x,
-                                              gboolean              *flipped_y)
+gdk_attach_params_choose_position_for_window (GdkAttachParams *params,
+                                              GdkWindow       *window,
+                                              gint            *x,
+                                              gint            *y,
+                                              gint            *offset_x,
+                                              gint            *offset_y,
+                                              gboolean        *flipped_x,
+                                              gboolean        *flipped_y)
 {
   GdkScreen *screen;
   gint origin_x;
@@ -828,8 +827,8 @@ gdk_attach_params_choose_position_for_window (const GdkAttachParams *params,
  * Since: 3.20
  */
 void
-gdk_attach_params_default_move_window (const GdkAttachParams *params,
-                                       GdkWindow             *window)
+gdk_attach_params_default_move_window (GdkAttachParams *params,
+                                       GdkWindow       *window)
 {
   gint x;
   gint y;
diff --git a/gdk/gdkattachparams.h b/gdk/gdkattachparams.h
index 9aeaab1..132be2f 100644
--- a/gdk/gdkattachparams.h
+++ b/gdk/gdkattachparams.h
@@ -31,6 +31,8 @@
 
 G_BEGIN_DECLS
 
+#define GDK_TYPE_ATTACH_PARAMS (gdk_attach_params_get_type ())
+
 /**
  * GdkAttachParams:
  *
@@ -39,7 +41,7 @@ G_BEGIN_DECLS
  *
  * Since: 3.20
  */
-typedef struct _GdkAttachParams GdkAttachParams;
+G_DECLARE_FINAL_TYPE (GdkAttachParams, gdk_attach_params, GDK, ATTACH_PARAMS, GInitiallyUnowned)
 
 /**
  * GdkAttachCallback:
@@ -63,60 +65,60 @@ typedef struct _GdkAttachParams GdkAttachParams;
  *
  * Since: 3.20
  */
-typedef void (*GdkAttachCallback) (GdkWindow             *window,
-                                   const GdkAttachParams *params,
-                                   gint                   x,
-                                   gint                   y,
-                                   gint                   offset_x,
-                                   gint                   offset_y,
-                                   gboolean               flipped_x,
-                                   gboolean               flipped_y,
-                                   gpointer               user_data);
+typedef void (*GdkAttachCallback) (GdkWindow       *window,
+                                   GdkAttachParams *params,
+                                   gint             x,
+                                   gint             y,
+                                   gint             offset_x,
+                                   gint             offset_y,
+                                   gboolean         flipped_x,
+                                   gboolean         flipped_y,
+                                   gpointer         user_data);
 
 GDK_AVAILABLE_IN_3_20
-GdkAttachParams * gdk_attach_params_new                   (void);
+GType             gdk_attach_params_get_type              (void);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_free                  (gpointer               data);
+GdkAttachParams * gdk_attach_params_new                   (void);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_attach_rect       (GdkAttachParams       *params,
-                                                           const GdkRectangle    *rectangle,
-                                                           GdkWindow             *parent);
+void              gdk_attach_params_set_attach_rect       (GdkAttachParams    *params,
+                                                           const GdkRectangle *rectangle,
+                                                           GdkWindow          *parent);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_anchors           (GdkAttachParams       *params,
-                                                           GdkWindowEdge          attach_anchor,
-                                                           GdkWindowEdge          window_anchor);
+void              gdk_attach_params_set_anchors           (GdkAttachParams    *params,
+                                                           GdkWindowEdge       attach_anchor,
+                                                           GdkWindowEdge       window_anchor);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_get_anchors           (const GdkAttachParams *params,
-                                                           GdkWindowEdge         *attach_anchor,
-                                                           GdkWindowEdge         *window_anchor);
+void              gdk_attach_params_get_anchors           (GdkAttachParams    *params,
+                                                           GdkWindowEdge      *attach_anchor,
+                                                           GdkWindowEdge      *window_anchor);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_flip_flags        (GdkAttachParams       *params,
-                                                           gboolean               flip_x,
-                                                           gboolean               flip_y);
+void              gdk_attach_params_set_flip_flags        (GdkAttachParams    *params,
+                                                           gboolean            flip_x,
+                                                           gboolean            flip_y);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_attach_margin     (GdkAttachParams       *params,
-                                                           const GdkBorder       *margin);
+void              gdk_attach_params_set_attach_margin     (GdkAttachParams    *params,
+                                                           const GdkBorder    *margin);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_window_padding    (GdkAttachParams       *params,
-                                                           const GdkBorder       *padding);
+void              gdk_attach_params_set_window_padding    (GdkAttachParams    *params,
+                                                           const GdkBorder    *padding);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_window_offset     (GdkAttachParams       *params,
-                                                           gint                   x,
-                                                           gint                   y);
+void              gdk_attach_params_set_window_offset     (GdkAttachParams    *params,
+                                                           gint                x,
+                                                           gint                y);
 
 GDK_AVAILABLE_IN_3_20
-void              gdk_attach_params_set_position_callback (GdkAttachParams       *params,
-                                                           GdkAttachCallback      callback,
-                                                           gpointer               user_data,
-                                                           GDestroyNotify         destroy_notify);
+void              gdk_attach_params_set_position_callback (GdkAttachParams    *params,
+                                                           GdkAttachCallback   callback,
+                                                           gpointer            user_data,
+                                                           GDestroyNotify      destroy_notify);
 
 G_END_DECLS
 
diff --git a/gdk/gdkattachparamsprivate.h b/gdk/gdkattachparamsprivate.h
index 764f046..5fc9c1b 100644
--- a/gdk/gdkattachparamsprivate.h
+++ b/gdk/gdkattachparamsprivate.h
@@ -28,6 +28,7 @@ G_BEGIN_DECLS
 
 /**
  * GdkAttachParams:
+ * @parent_instance: parent instance
  * @has_attach_rect: %TRUE if @attach_rect is valid
  * @attach_rect: the attachment rectangle to attach the window to
  * @attach_parent: the #GdkWindow that @attach_rect is relative to
@@ -51,6 +52,8 @@ G_BEGIN_DECLS
 struct _GdkAttachParams
 {
   /*< private >*/
+  GInitiallyUnowned parent_instance;
+
   gboolean has_attach_rect;
   GdkRectangle attach_rect;
   GdkWindow *attach_parent;
@@ -70,8 +73,8 @@ struct _GdkAttachParams
   GDestroyNotify attach_destroy_notify;
 };
 
-void gdk_attach_params_default_move_window (const GdkAttachParams *params,
-                                            GdkWindow             *window);
+void gdk_attach_params_default_move_window (GdkAttachParams *params,
+                                            GdkWindow       *window);
 
 G_END_DECLS
 


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