[libwnck/wip/muktupavels/wnck-handle: 24/29] screen: move screen handling to WnckHandle




commit 9e5f1f927303204d49ca1806b2b3912c77ea4d9f
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Aug 19 21:41:48 2019 +0300

    screen: move screen handling to WnckHandle
    
    And update libwnck to use new functions.

 libwnck/pager.c               | 24 +++++++++++++++++++--
 libwnck/pager.h               |  2 ++
 libwnck/screen.c              |  8 +++----
 libwnck/selector.c            | 24 +++++++++++++++++++--
 libwnck/selector.h            |  8 +++++--
 libwnck/tasklist.c            | 24 +++++++++++++++++++--
 libwnck/tasklist.h            |  2 ++
 libwnck/window.c              |  4 ++--
 libwnck/wnck-handle-private.h |  8 -------
 libwnck/wnck-handle.c         | 50 +++++++++++++++++++++++++++++++++++++------
 libwnck/wnck-handle.h         | 19 +++++++++++-----
 libwnck/wnck-resource-usage.c |  2 +-
 12 files changed, 140 insertions(+), 35 deletions(-)
---
diff --git a/libwnck/pager.c b/libwnck/pager.c
index 8561546c..3a97f63f 100644
--- a/libwnck/pager.c
+++ b/libwnck/pager.c
@@ -303,8 +303,8 @@ _wnck_pager_set_screen (WnckPager *pager)
   gdkscreen = gtk_widget_get_screen (GTK_WIDGET (pager));
   screen_number = gdk_x11_screen_get_screen_number (gdkscreen);
 
-  pager->priv->screen = _wnck_handle_get_screen (pager->priv->handle,
-                                                 screen_number);
+  pager->priv->screen = wnck_handle_get_screen (pager->priv->handle,
+                                                screen_number);
 
   if (!wnck_pager_set_layout_hint (pager))
     {
@@ -2207,6 +2207,26 @@ wnck_pager_new (void)
   return GTK_WIDGET (pager);
 }
 
+/**
+ * wnck_pager_new_with_handle:
+ * @handle: a #WnckHandle
+ *
+ * Creates a new #WnckPager. The #WnckPager will show the #WnckWorkspace of the
+ * #WnckScreen it is on.
+ *
+ * Returns: a newly created #WnckPager.
+ */
+GtkWidget *
+wnck_pager_new_with_handle (WnckHandle *handle)
+{
+  WnckPager *pager;
+
+  pager = g_object_new (WNCK_TYPE_PAGER, NULL);
+  pager->priv->handle = g_object_ref (handle);
+
+  return GTK_WIDGET (pager);
+}
+
 static gboolean
 wnck_pager_set_layout_hint (WnckPager *pager)
 {
diff --git a/libwnck/pager.h b/libwnck/pager.h
index c67f2fa3..db830ed2 100644
--- a/libwnck/pager.h
+++ b/libwnck/pager.h
@@ -104,6 +104,8 @@ GType      wnck_pager_get_type           (void) G_GNUC_CONST;
 
 GtkWidget* wnck_pager_new                (void);
 
+GtkWidget* wnck_pager_new_with_handle    (WnckHandle           *handle);
+
 gboolean   wnck_pager_set_orientation    (WnckPager            *pager,
                                           GtkOrientation        orientation);
 gboolean   wnck_pager_set_n_rows         (WnckPager            *pager,
diff --git a/libwnck/screen.c b/libwnck/screen.c
index baf63a82..4f1f97dd 100644
--- a/libwnck/screen.c
+++ b/libwnck/screen.c
@@ -575,7 +575,7 @@ _wnck_screen_construct (WnckScreen *screen,
 WnckScreen*
 wnck_screen_get (int index)
 {
-  return _wnck_handle_get_screen (_wnck_get_handle (), index);
+  return wnck_handle_get_screen (_wnck_get_handle (), index);
 }
 
 /**
@@ -590,7 +590,7 @@ wnck_screen_get (int index)
 WnckScreen*
 wnck_screen_get_default (void)
 {
-  return _wnck_handle_get_default_screen (_wnck_get_handle ());
+  return wnck_handle_get_default_screen (_wnck_get_handle ());
 }
 
 /**
@@ -610,8 +610,8 @@ wnck_screen_get_default (void)
 WnckScreen*
 wnck_screen_get_for_root (gulong root_window_id)
 {
-  return _wnck_handle_get_screen_for_root (_wnck_get_handle (),
-                                           root_window_id);
+  return wnck_handle_get_screen_for_root (_wnck_get_handle (),
+                                          root_window_id);
 }
 
 /**
diff --git a/libwnck/selector.c b/libwnck/selector.c
index 482c614a..04ebfdbf 100644
--- a/libwnck/selector.c
+++ b/libwnck/selector.c
@@ -120,8 +120,8 @@ wnck_selector_get_screen (WnckSelector *selector)
 
   screen = gtk_widget_get_screen (GTK_WIDGET (selector));
 
-  return _wnck_handle_get_screen (selector->priv->handle,
-                                  gdk_x11_screen_get_screen_number (screen));
+  return wnck_handle_get_screen (selector->priv->handle,
+                                 gdk_x11_screen_get_screen_number (screen));
 }
 
 static GdkPixbuf *
@@ -1282,3 +1282,23 @@ wnck_selector_new (void)
 
   return GTK_WIDGET (selector);
 }
+
+/**
+ * wnck_selector_new_with_handle:
+ * @handle: a #WnckHandle
+ *
+ * Creates a new #WnckSelector. The #WnckSelector will list #WnckWindow of the
+ * #WnckScreen it is on.
+ *
+ * Returns: a newly created #WnckSelector.
+ */
+GtkWidget *
+wnck_selector_new_with_handle (WnckHandle *handle)
+{
+  WnckSelector *selector;
+
+  selector = g_object_new (WNCK_TYPE_SELECTOR, NULL);
+  selector->priv->handle = g_object_ref (handle);
+
+  return GTK_WIDGET (selector);
+}
diff --git a/libwnck/selector.h b/libwnck/selector.h
index 4783162b..bb6fceb9 100644
--- a/libwnck/selector.h
+++ b/libwnck/selector.h
@@ -27,6 +27,7 @@
 #define WNCK_SELECTOR_H
 
 #include <gtk/gtk.h>
+#include <libwnck/wnck-handle.h>
 
 G_BEGIN_DECLS
 #define WNCK_TYPE_SELECTOR              (wnck_selector_get_type ())
@@ -62,8 +63,11 @@ struct _WnckSelectorClass
   void (* pad4) (void);
 };
 
-GtkWidget *wnck_selector_new      (void);
-GType      wnck_selector_get_type (void) G_GNUC_CONST;
+GtkWidget *wnck_selector_new             (void);
+
+GtkWidget *wnck_selector_new_with_handle (WnckHandle *handle);
+
+GType      wnck_selector_get_type        (void) G_GNUC_CONST;
 
 G_END_DECLS
 
diff --git a/libwnck/tasklist.c b/libwnck/tasklist.c
index 78a73ff6..61b0e1ab 100644
--- a/libwnck/tasklist.c
+++ b/libwnck/tasklist.c
@@ -2163,8 +2163,8 @@ wnck_tasklist_realize (GtkWidget *widget)
   gdkscreen = gtk_widget_get_screen (widget);
   screen_number = gdk_x11_screen_get_screen_number (gdkscreen);
 
-  tasklist->priv->screen = _wnck_handle_get_screen (tasklist->priv->handle,
-                                                    screen_number);
+  tasklist->priv->screen = wnck_handle_get_screen (tasklist->priv->handle,
+                                                   screen_number);
 
   g_assert (tasklist->priv->screen != NULL);
 
@@ -2565,6 +2565,26 @@ wnck_tasklist_new (void)
   return GTK_WIDGET (tasklist);
 }
 
+/**
+ * wnck_tasklist_new_with_handle:
+ * @handle: a #WnckHandle
+ *
+ * Creates a new #WnckTasklist. The #WnckTasklist will list #WnckWindow of the
+ * #WnckScreen it is on.
+ *
+ * Returns: a newly created #WnckTasklist.
+ */
+GtkWidget *
+wnck_tasklist_new_with_handle (WnckHandle *handle)
+{
+  WnckTasklist *self;
+
+  self = g_object_new (WNCK_TYPE_TASKLIST, NULL);
+  self->priv->handle = g_object_ref (handle);
+
+  return GTK_WIDGET (self);
+}
+
 static void
 wnck_tasklist_free_tasks (WnckTasklist *tasklist)
 {
diff --git a/libwnck/tasklist.h b/libwnck/tasklist.h
index 0659f9d6..b308802b 100644
--- a/libwnck/tasklist.h
+++ b/libwnck/tasklist.h
@@ -89,6 +89,8 @@ GType wnck_tasklist_get_type (void) G_GNUC_CONST;
 
 GtkWidget *wnck_tasklist_new (void);
 
+GtkWidget *wnck_tasklist_new_with_handle (WnckHandle *handle);
+
 G_DEPRECATED
 const int *wnck_tasklist_get_size_hint_list (WnckTasklist  *tasklist,
                                              int           *n_elements);
diff --git a/libwnck/window.c b/libwnck/window.c
index c0ba806d..c9feea9e 100644
--- a/libwnck/window.c
+++ b/libwnck/window.c
@@ -3103,8 +3103,8 @@ update_transient_for (WnckWindow *window)
       window->priv->transient_for = parent;
 
       handle = wnck_screen_get_handle (window->priv->screen);
-      screen = _wnck_handle_get_screen_for_root (handle,
-                                                 window->priv->transient_for);
+      screen = wnck_handle_get_screen_for_root (handle,
+                                                window->priv->transient_for);
 
       if (screen != NULL)
         window->priv->transient_for_root = TRUE;
diff --git a/libwnck/wnck-handle-private.h b/libwnck/wnck-handle-private.h
index 348cbda5..f17b3154 100644
--- a/libwnck/wnck-handle-private.h
+++ b/libwnck/wnck-handle-private.h
@@ -26,14 +26,6 @@ G_BEGIN_DECLS
 
 WnckClientType   _wnck_handle_get_client_type            (WnckHandle     *self);
 
-WnckScreen      *_wnck_handle_get_default_screen         (WnckHandle     *self);
-
-WnckScreen      *_wnck_handle_get_screen                 (WnckHandle     *self,
-                                                          int             index);
-
-WnckScreen      *_wnck_handle_get_screen_for_root        (WnckHandle     *self,
-                                                          gulong          root_window_id);
-
 WnckScreen      *_wnck_handle_get_existing_screen        (WnckHandle     *self,
                                                           int             number);
 
diff --git a/libwnck/wnck-handle.c b/libwnck/wnck-handle.c
index 0eb34244..6782dfd5 100644
--- a/libwnck/wnck-handle.c
+++ b/libwnck/wnck-handle.c
@@ -84,7 +84,7 @@ filter_func (GdkXEvent *gdkxevent,
       {
         WnckScreen *screen;
 
-        screen = _wnck_handle_get_screen_for_root (self, xevent->xany.window);
+        screen = wnck_handle_get_screen_for_root (self, xevent->xany.window);
 
         if (screen != NULL)
           {
@@ -331,8 +331,18 @@ _wnck_handle_get_client_type (WnckHandle *self)
   return self->client_type;
 }
 
+/**
+ * wnck_handle_get_default_screen:
+ * @self: a #WnckHandle
+ *
+ * Gets the default #WnckScreen on the default display.
+ *
+ * Returns: (transfer none) (nullable): the default #WnckScreen. The
+ * returned #WnckScreen is owned by #WnckHandle and must not be referenced
+ * or unreferenced. This can return %NULL if not on X11.
+ */
 WnckScreen *
-_wnck_handle_get_default_screen (WnckHandle *self)
+wnck_handle_get_default_screen (WnckHandle *self)
 {
   Display *display;
 
@@ -342,12 +352,23 @@ _wnck_handle_get_default_screen (WnckHandle *self)
   if (display == NULL)
     return NULL;
 
-  return _wnck_handle_get_screen (self, DefaultScreen (display));
+  return wnck_handle_get_screen (self, DefaultScreen (display));
 }
 
+/**
+ * wnck_handle_get_screen:
+ * @self: a #WnckHandle
+ * @index: screen number, starting from 0.
+ *
+ * Gets the #WnckScreen for a given screen on the default display.
+ *
+ * Returns: (transfer none): the #WnckScreen for screen @index, or %NULL
+ * if no such screen exists. The returned #WnckScreen is owned by #WnckHandle
+ * and must not be referenced or unreferenced.
+ */
 WnckScreen *
-_wnck_handle_get_screen (WnckHandle *self,
-                         int         index)
+wnck_handle_get_screen (WnckHandle *self,
+                        int         index)
 {
   Display *display;
 
@@ -372,9 +393,24 @@ _wnck_handle_get_screen (WnckHandle *self,
   return self->screens[index];
 }
 
+/**
+ * wnck_handle_get_screen_for_root:
+ * @self: a #WnckHandle
+ * @root_window_id: an X window ID.
+ *
+ * Gets the #WnckScreen for the root window at @root_window_id, or
+ * %NULL if no #WnckScreen exists for this root window.
+ *
+ * This function does not work if wnck_handle_get_screen() was not called
+ * for the sought #WnckScreen before, and returns %NULL.
+ *
+ * Returns: (transfer none): the #WnckScreen for the root window at
+ * @root_window_id, or %NULL. The returned #WnckScreen is owned by
+ * #WnckHandle and must not be referenced or unreferenced.
+ */
 WnckScreen *
-_wnck_handle_get_screen_for_root (WnckHandle *self,
-                                  gulong      root_window_id)
+wnck_handle_get_screen_for_root (WnckHandle *self,
+                                 gulong      root_window_id)
 {
   Display *display;
   int i;
diff --git a/libwnck/wnck-handle.h b/libwnck/wnck-handle.h
index 1f7aae15..a7b5c861 100644
--- a/libwnck/wnck-handle.h
+++ b/libwnck/wnck-handle.h
@@ -23,6 +23,7 @@
 #define WNCK_HANDLE_H
 
 #include <glib-object.h>
+#include <libwnck/screen.h>
 #include <libwnck/util.h>
 
 G_BEGIN_DECLS
@@ -30,13 +31,21 @@ G_BEGIN_DECLS
 #define WNCK_TYPE_HANDLE (wnck_handle_get_type ())
 G_DECLARE_FINAL_TYPE (WnckHandle, wnck_handle, WNCK, HANDLE, GObject)
 
-WnckHandle *wnck_handle_new                        (WnckClientType  client_type);
+WnckHandle *wnck_handle_new                        (WnckClientType     client_type);
 
-void        wnck_handle_set_default_icon_size      (WnckHandle     *self,
-                                                    gsize           icon_size);
+WnckScreen *wnck_handle_get_default_screen         (WnckHandle        *self);
 
-void        wnck_handle_set_default_mini_icon_size (WnckHandle     *self,
-                                                    gsize           icon_size);
+WnckScreen *wnck_handle_get_screen                 (WnckHandle        *self,
+                                                    int                index);
+
+WnckScreen *wnck_handle_get_screen_for_root        (WnckHandle        *self,
+                                                    gulong             root_window_id);
+
+void        wnck_handle_set_default_icon_size      (WnckHandle        *self,
+                                                    gsize              icon_size);
+
+void        wnck_handle_set_default_mini_icon_size (WnckHandle        *self,
+                                                    gsize              icon_size);
 
 G_END_DECLS
 
diff --git a/libwnck/wnck-resource-usage.c b/libwnck/wnck-resource-usage.c
index 1bb5f4ed..a845d82b 100644
--- a/libwnck/wnck-resource-usage.c
+++ b/libwnck/wnck-resource-usage.c
@@ -395,7 +395,7 @@ wnck_pid_read_resource_usage_no_cache (GdkDisplay        *gdisplay,
       GList *windows;
       GList *tmp;
 
-      screen = _wnck_handle_get_screen (_wnck_get_handle (), i);
+      screen = wnck_handle_get_screen (_wnck_get_handle (), i);
 
       g_assert (screen != NULL);
 


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