Sophie

Sophie

distrib > Mageia > 9 > armv7hl > by-pkgid > 76975bdacd27acb75297b765f97f0e52 > files > 4

light-locker-1.9.0-6.mga9.src.rpm

From 0e8f086703cc119937e02971b83b27ac1942af5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin@elementary.io>
Date: Mon, 1 Apr 2019 08:18:02 +0200
Subject: [PATCH 3/5] GsWindow: use modern GObject syntax

---
 src/gs-window-x11.c | 177 +++++++++++++++++++++-----------------------
 src/gs-window.h     |  24 +-----
 2 files changed, 86 insertions(+), 115 deletions(-)

diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
index 21e5bbc..63476c1 100644
--- a/src/gs-window-x11.c
+++ b/src/gs-window-x11.c
@@ -48,14 +48,13 @@ enum {
 #define MAX_QUEUED_EVENTS 16
 #define INFO_BAR_SECONDS 30
 
-#define GS_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GS_TYPE_WINDOW, GSWindowPrivate))
-
-struct GSWindowPrivate
+struct _GSWindow
 {
-        int        monitor;
+        GObject parent_instance;
+        int     monitor;
 
         GdkRectangle geometry;
-        guint      obscured : 1;
+        gboolean     obscured;
 
         GtkWidget *drawing_area;
         GtkWidget *info_bar;
@@ -69,13 +68,15 @@ struct GSWindowPrivate
 };
 
 enum {
-        PROP_0,
-        PROP_OBSCURED,
-        PROP_MONITOR
+        PROP_OBSCURED = 1,
+        PROP_MONITOR,
+        N_PROPERTIES
 };
 
 G_DEFINE_TYPE (GSWindow, gs_window, GTK_TYPE_WINDOW)
 
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+
 static void
 set_invisible_cursor (GdkWindow *window,
                       gboolean   invisible)
@@ -135,7 +136,7 @@ gs_window_clear (GSWindow *window)
         g_return_if_fail (GS_IS_WINDOW (window));
 
         clear_widget (GTK_WIDGET (window));
-        clear_widget (window->priv->drawing_area);
+        clear_widget (window->drawing_area);
 }
 
 static cairo_region_t *
@@ -145,12 +146,12 @@ get_outside_region (GSWindow *window)
         cairo_region_t *region;
 
         region = cairo_region_create ();
-        for (i = 0; i < window->priv->monitor; i++) {
+        for (i = 0; i < window->monitor; i++) {
                 GdkRectangle geometry;
                 cairo_rectangle_int_t rectangle;
 
                 gdk_screen_get_monitor_geometry (gtk_window_get_screen (GTK_WINDOW (window)),
-                                                   i, &geometry);
+                                                 i, &geometry);
                 rectangle.x = geometry.x;
                 rectangle.y = geometry.y;
                 rectangle.width = geometry.width;
@@ -171,10 +172,10 @@ update_geometry (GSWindow *window)
         outside_region = get_outside_region (window);
 
         gdk_screen_get_monitor_geometry (gtk_window_get_screen (GTK_WINDOW (window)),
-                                         window->priv->monitor,
+                                         window->monitor,
                                          &geometry);
         gs_debug ("got geometry for monitor %d: x=%d y=%d w=%d h=%d",
-                  window->priv->monitor,
+                  window->monitor,
                   geometry.x,
                   geometry.y,
                   geometry.width,
@@ -187,16 +188,16 @@ update_geometry (GSWindow *window)
         cairo_region_destroy (monitor_region);
 
         gs_debug ("using geometry for monitor %d: x=%d y=%d w=%d h=%d",
-                  window->priv->monitor,
+                  window->monitor,
                   geometry.x,
                   geometry.y,
                   geometry.width,
                   geometry.height);
 
-        window->priv->geometry.x = geometry.x;
-        window->priv->geometry.y = geometry.y;
-        window->priv->geometry.width = geometry.width;
-        window->priv->geometry.height = geometry.height;
+        window->geometry.x = geometry.x;
+        window->geometry.y = geometry.y;
+        window->geometry.width = geometry.width;
+        window->geometry.height = geometry.height;
 }
 
 static void
@@ -220,26 +221,26 @@ gs_window_move_resize_window (GSWindow *window,
         g_assert (gtk_widget_get_realized (widget));
 
         gs_debug ("Move and/or resize window on monitor %d: x=%d y=%d w=%d h=%d",
-                  window->priv->monitor,
-                  window->priv->geometry.x,
-                  window->priv->geometry.y,
-                  window->priv->geometry.width,
-                  window->priv->geometry.height);
+                  window->monitor,
+                  window->geometry.x,
+                  window->geometry.y,
+                  window->geometry.width,
+                  window->geometry.height);
 
         if (move && resize) {
                 gdk_window_move_resize (gtk_widget_get_window (widget),
-                                        window->priv->geometry.x,
-                                        window->priv->geometry.y,
-                                        window->priv->geometry.width,
-                                        window->priv->geometry.height);
+                                        window->geometry.x,
+                                        window->geometry.y,
+                                        window->geometry.width,
+                                        window->geometry.height);
         } else if (move) {
                 gdk_window_move (gtk_widget_get_window (widget),
-                                 window->priv->geometry.x,
-                                 window->priv->geometry.y);
+                                 window->geometry.x,
+                                 window->geometry.y);
         } else if (resize) {
                 gdk_window_resize (gtk_widget_get_window (widget),
-                                   window->priv->geometry.width,
-                                   window->priv->geometry.height);
+                                   window->geometry.width,
+                                   window->geometry.height);
         }
 }
 
@@ -287,9 +288,9 @@ watchdog_timer (GSWindow *window)
 static void
 remove_watchdog_timer (GSWindow *window)
 {
-        if (window->priv->watchdog_timer_id != 0) {
-                g_source_remove (window->priv->watchdog_timer_id);
-                window->priv->watchdog_timer_id = 0;
+        if (window->watchdog_timer_id != 0) {
+                g_source_remove (window->watchdog_timer_id);
+                window->watchdog_timer_id = 0;
         }
 }
 
@@ -297,9 +298,9 @@ static void
 add_watchdog_timer (GSWindow *window,
                     glong     timeout)
 {
-        window->priv->watchdog_timer_id = g_timeout_add_seconds (timeout,
-                                                                 (GSourceFunc)watchdog_timer,
-                                                                 window);
+        window->watchdog_timer_id = g_timeout_add_seconds (timeout,
+                                                           (GSourceFunc)watchdog_timer,
+                                                           window);
 }
 
 static void
@@ -469,7 +470,7 @@ gs_window_get_drawing_area (GSWindow *window)
 {
         g_return_val_if_fail (GS_IS_WINDOW (window), NULL);
 
-        return window->priv->drawing_area;
+        return window->drawing_area;
 }
 
 
@@ -498,11 +499,11 @@ gs_window_set_monitor (GSWindow *window,
 {
         g_return_if_fail (GS_IS_WINDOW (window));
 
-        if (window->priv->monitor == monitor) {
+        if (window->monitor == monitor) {
                 return;
         }
 
-        window->priv->monitor = monitor;
+        window->monitor = monitor;
 
         gtk_widget_queue_resize (GTK_WIDGET (window));
 
@@ -514,7 +515,7 @@ gs_window_get_monitor (GSWindow *window)
 {
         g_return_val_if_fail (GS_IS_WINDOW (window), -1);
 
-        return window->priv->monitor;
+        return window->monitor;
 }
 
 static void
@@ -549,10 +550,10 @@ gs_window_get_property (GObject    *object,
 
         switch (prop_id) {
         case PROP_MONITOR:
-                g_value_set_int (value, self->priv->monitor);
+                g_value_set_int (value, self->monitor);
                 break;
         case PROP_OBSCURED:
-                g_value_set_boolean (value, self->priv->obscured);
+                g_value_set_boolean (value, self->obscured);
                 break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -609,24 +610,24 @@ gs_window_real_size_request (GtkWidget      *widget,
                 gtk_widget_get_preferred_size(gtk_bin_get_child (bin), NULL, requisition);
         }
 
-        old_geometry = window->priv->geometry;
+        old_geometry = window->geometry;
 
         update_geometry (window);
 
-        requisition->width  = window->priv->geometry.width;
-        requisition->height = window->priv->geometry.height;
+        requisition->width  = window->geometry.width;
+        requisition->height = window->geometry.height;
 
         if (!gtk_widget_get_realized (widget)) {
                 return;
         }
 
-        if (old_geometry.width  != window->priv->geometry.width ||
-            old_geometry.height != window->priv->geometry.height) {
+        if (old_geometry.width  != window->geometry.width ||
+            old_geometry.height != window->geometry.height) {
                 size_changed = TRUE;
         }
 
-        if (old_geometry.x != window->priv->geometry.x ||
-            old_geometry.y != window->priv->geometry.y) {
+        if (old_geometry.x != window->geometry.x ||
+            old_geometry.y != window->geometry.y) {
                 position_changed = TRUE;
         }
 
@@ -656,18 +657,18 @@ gs_window_is_obscured (GSWindow *window)
 {
         g_return_val_if_fail (GS_IS_WINDOW (window), FALSE);
 
-        return window->priv->obscured;
+        return window->obscured;
 }
 
 static void
 window_set_obscured (GSWindow *window,
                      gboolean  obscured)
 {
-        if (window->priv->obscured == obscured) {
+        if (window->obscured == obscured) {
                 return;
         }
 
-        window->priv->obscured = obscured;
+        window->obscured = obscured;
         g_object_notify (G_OBJECT (window), "obscured");
 }
 
@@ -738,25 +739,23 @@ gs_window_class_init (GSWindowClass *klass)
         widget_class->grab_broken_event   = gs_window_real_grab_broken;
         widget_class->visibility_notify_event = gs_window_real_visibility_notify_event;
 
-        g_type_class_add_private (klass, sizeof (GSWindowPrivate));
+        obj_properties[PROP_OBSCURED] =
+                g_param_spec_boolean ("obscured",
+                                      NULL,
+                                      NULL,
+                                      FALSE,
+                                      G_PARAM_READABLE);
 
-        g_object_class_install_property (object_class,
-                                         PROP_OBSCURED,
-                                         g_param_spec_boolean ("obscured",
-                                                               NULL,
-                                                               NULL,
-                                                               FALSE,
-                                                               G_PARAM_READABLE));
+        obj_properties[PROP_MONITOR] =
+                g_param_spec_int ("monitor",
+                                  "Xinerama monitor",
+                                  "The monitor (in terms of Xinerama) which the window is on",
+                                  0, G_MAXINT, 0,
+                                  G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
-        g_object_class_install_property (object_class,
-                                         PROP_MONITOR,
-                                         g_param_spec_int ("monitor",
-                                                           "Xinerama monitor",
-                                                           "The monitor (in terms of Xinerama) which the window is on",
-                                                           0,
-                                                           G_MAXINT,
-                                                           0,
-                                                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+        g_object_class_install_properties (object_class,
+                                           N_PROPERTIES,
+                                           obj_properties);
 
 }
 
@@ -772,15 +771,13 @@ on_drawing_area_realized (GtkWidget *drawing_area)
 static void
 gs_window_init (GSWindow *window)
 {
-        window->priv = GS_WINDOW_GET_PRIVATE (window);
+        window->geometry.x      = -1;
+        window->geometry.y      = -1;
+        window->geometry.width  = -1;
+        window->geometry.height = -1;
 
-        window->priv->geometry.x      = -1;
-        window->priv->geometry.y      = -1;
-        window->priv->geometry.width  = -1;
-        window->priv->geometry.height = -1;
-
-        window->priv->last_x = -1;
-        window->priv->last_y = -1;
+        window->last_x = -1;
+        window->last_y = -1;
 
         gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
 
@@ -803,11 +800,11 @@ gs_window_init (GSWindow *window)
                                | GDK_ENTER_NOTIFY_MASK
                                | GDK_LEAVE_NOTIFY_MASK);
 
-        window->priv->drawing_area = gtk_drawing_area_new ();
-        gtk_widget_show (window->priv->drawing_area);
-        gtk_widget_set_app_paintable (window->priv->drawing_area, TRUE);
-        gtk_container_add (GTK_CONTAINER (window), window->priv->drawing_area);
-        g_signal_connect (window->priv->drawing_area,
+        window->drawing_area = gtk_drawing_area_new ();
+        gtk_widget_show (window->drawing_area);
+        gtk_widget_set_app_paintable (window->drawing_area, TRUE);
+        gtk_container_add (GTK_CONTAINER (window), window->drawing_area);
+        g_signal_connect (window->drawing_area,
                           "realize",
                           G_CALLBACK (on_drawing_area_realized),
                           NULL);
@@ -816,17 +813,11 @@ gs_window_init (GSWindow *window)
 static void
 gs_window_finalize (GObject *object)
 {
-        GSWindow *window;
-
-        g_return_if_fail (object != NULL);
-        g_return_if_fail (GS_IS_WINDOW (object));
-
-        window = GS_WINDOW (object);
-
-        g_return_if_fail (window->priv != NULL);
+        GSWindow *window = GS_WINDOW (object);
 
-        if (window->priv->info_bar_timer_id > 0) {
-                g_source_remove (window->priv->info_bar_timer_id);
+        if (window->info_bar_timer_id > 0) {
+                g_source_remove (window->info_bar_timer_id);
+                window->info_bar_timer_id = 0;
         }
 
         remove_watchdog_timer (window);
diff --git a/src/gs-window.h b/src/gs-window.h
index 9d70e88..e9ec6b5 100644
--- a/src/gs-window.h
+++ b/src/gs-window.h
@@ -28,28 +28,8 @@
 
 G_BEGIN_DECLS
 
-#define GS_TYPE_WINDOW         (gs_window_get_type ())
-#define GS_WINDOW(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GS_TYPE_WINDOW, GSWindow))
-#define GS_WINDOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GS_TYPE_WINDOW, GSWindowClass))
-#define GS_IS_WINDOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GS_TYPE_WINDOW))
-#define GS_IS_WINDOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GS_TYPE_WINDOW))
-#define GS_WINDOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GS_TYPE_WINDOW, GSWindowClass))
-
-typedef struct GSWindowPrivate GSWindowPrivate;
-
-typedef struct
-{
-        GtkWindow        window;
-
-        GSWindowPrivate *priv;
-} GSWindow;
-
-typedef struct
-{
-        GtkWindowClass   parent_class;
-} GSWindowClass;
-
-GType       gs_window_get_type           (void);
+#define GS_TYPE_WINDOW gs_window_get_type ()
+G_DECLARE_FINAL_TYPE (GSWindow, gs_window, GS, WINDOW, GObject)
 
 gboolean    gs_window_is_obscured        (GSWindow  *window);
 
-- 
2.30.0