[Xfce4-commits] [apps/xfdashboard] 10/19: Move virtual function get_stage_window() of XfdashboardWindowTrackerWindow to new window tracker backend and redirect moved virtual function to new ones in window tracker backend.
noreply at xfce.org
noreply at xfce.org
Fri Jun 16 10:56:41 CEST 2017
This is an automated email from the git hooks/post-receive script.
n o m a d p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/xfdashboard.
commit 0b1b99259751dfcc99c7581ee04f944651b0a30e
Author: Stephan Haller <nomad at froevel.de>
Date: Tue Jun 13 17:06:14 2017 +0200
Move virtual function get_stage_window() of XfdashboardWindowTrackerWindow to new window tracker backend and redirect moved virtual function to new ones in window tracker backend.
Enhancement for issue GH #129
---
libxfdashboard/gdk/window-tracker-backend-gdk.c | 34 +++++++++++++++++++++++
libxfdashboard/gdk/window-tracker-gdk.c | 31 ---------------------
libxfdashboard/window-tracker-backend.c | 32 +++++++++++++++++++++
libxfdashboard/window-tracker-backend.h | 4 +++
libxfdashboard/window-tracker.c | 37 +++++++++++++++++--------
libxfdashboard/window-tracker.h | 1 -
libxfdashboard/x11/window-tracker-backend-x11.c | 32 +++++++++++++++++++++
libxfdashboard/x11/window-tracker-x11.c | 29 -------------------
8 files changed, 127 insertions(+), 73 deletions(-)
diff --git a/libxfdashboard/gdk/window-tracker-backend-gdk.c b/libxfdashboard/gdk/window-tracker-backend-gdk.c
index dade87d..0f73f8a 100644
--- a/libxfdashboard/gdk/window-tracker-backend-gdk.c
+++ b/libxfdashboard/gdk/window-tracker-backend-gdk.c
@@ -387,6 +387,39 @@ static XfdashboardWindowTracker* _xfdashboard_window_tracker_backend_gdk_window_
return(XFDASHBOARD_WINDOW_TRACKER(priv->windowTracker));
}
+/* Get window of stage */
+static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_backend_gdk_window_tracker_backend_get_window_for_stage(XfdashboardWindowTrackerBackend *inBackend,
+ ClutterStage *inStage)
+{
+ XfdashboardWindowTrackerBackendGDK *self;
+ XfdashboardWindowTrackerBackendGDKPrivate *priv;
+ GdkWindow *stageGdkWindow;
+ Window stageXWindow;
+ WnckWindow *wnckWindow;
+ XfdashboardWindowTrackerWindow *window;
+
+ g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_BACKEND_GDK(inBackend), NULL);
+ g_return_val_if_fail(CLUTTER_IS_STAGE(inStage), NULL);
+
+ self=XFDASHBOARD_WINDOW_TRACKER_BACKEND_GDK(inBackend);
+ priv=self->priv;
+
+ /* Get stage window and translate to needed window type */
+ stageGdkWindow=clutter_gdk_get_stage_window(inStage);
+ stageXWindow=gdk_x11_window_get_xid(stageGdkWindow);
+ wnckWindow=wnck_window_get(stageXWindow);
+
+ /* Get or create window object for wnck background window */
+ window=xfdashboard_window_tracker_x11_get_window_for_wnck(priv->windowTracker, wnckWindow);
+ XFDASHBOARD_DEBUG(self, WINDOWS,
+ "Resolved stage wnck window %s@%p of stage %s@%p to window object %s@%p",
+ G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
+ G_OBJECT_TYPE_NAME(inStage), inStage,
+ G_OBJECT_TYPE_NAME(window), window);
+
+ return(window);
+}
+
/* Get associated stage of window */
static ClutterStage* _xfdashboard_window_tracker_backend_gdk_window_tracker_backend_get_stage_from_window(XfdashboardWindowTrackerBackend *inBackend,
XfdashboardWindowTrackerWindow *inStageWindow)
@@ -668,6 +701,7 @@ static void _xfdashboard_window_tracker_backend_gdk_window_tracker_backend_iface
iface->get_window_tracker=_xfdashboard_window_tracker_backend_gdk_window_tracker_backend_get_window_tracker;
+ iface->get_window_for_stage=_xfdashboard_window_tracker_backend_gdk_window_tracker_backend_get_window_for_stage;
iface->get_stage_from_window=_xfdashboard_window_tracker_backend_gdk_window_tracker_backend_get_stage_from_window;
iface->show_stage_window=_xfdashboard_window_tracker_backend_gdk_window_tracker_backend_show_stage_window;
iface->hide_stage_window=_xfdashboard_window_tracker_backend_gdk_window_tracker_backend_hide_stage_window;
diff --git a/libxfdashboard/gdk/window-tracker-gdk.c b/libxfdashboard/gdk/window-tracker-gdk.c
index 9aa4cc5..8d07875 100644
--- a/libxfdashboard/gdk/window-tracker-gdk.c
+++ b/libxfdashboard/gdk/window-tracker-gdk.c
@@ -1574,36 +1574,6 @@ static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_gdk_window_tr
return(NULL);
}
-/* Get window of stage */
-static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_gdk_window_tracker_get_stage_window(XfdashboardWindowTracker *inWindowTracker,
- ClutterStage *inStage)
-{
- XfdashboardWindowTrackerGDK *self;
- GdkWindow *stageGdkWindow;
- Window stageXWindow;
- WnckWindow *wnckWindow;
- XfdashboardWindowTrackerWindowGDK *window;
-
- g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_GDK(inWindowTracker), NULL);
- g_return_val_if_fail(CLUTTER_IS_STAGE(inStage), NULL);
-
- self=XFDASHBOARD_WINDOW_TRACKER_GDK(inWindowTracker);
-
- /* Get stage window and translate to needed window type */
- stageGdkWindow=clutter_gdk_get_stage_window(inStage);
- stageXWindow=gdk_x11_window_get_xid(stageGdkWindow);
- wnckWindow=wnck_window_get(stageXWindow);
-
- /* Get or create window object for wnck background window */
- window=_xfdashboard_window_tracker_gdk_create_window_for_wnck(self, wnckWindow);
- XFDASHBOARD_DEBUG(self, WINDOWS,
- "Resolved stage window %s@%p to window object %s@%p",
- G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
- G_OBJECT_TYPE_NAME(window), window);
-
- return(XFDASHBOARD_WINDOW_TRACKER_WINDOW(window));
-}
-
/* Interface initialization
* Set up default functions
*/
@@ -1630,7 +1600,6 @@ static void _xfdashboard_window_tracker_gdk_window_tracker_iface_init(Xfdashboar
iface->get_window_manager_name=_xfdashboard_window_tracker_gdk_window_tracker_get_window_manager_name;
iface->get_root_window=_xfdashboard_window_tracker_gdk_window_tracker_get_root_window;
- iface->get_stage_window=_xfdashboard_window_tracker_gdk_window_tracker_get_stage_window;
}
diff --git a/libxfdashboard/window-tracker-backend.c b/libxfdashboard/window-tracker-backend.c
index 23b80b1..8b7bcae 100644
--- a/libxfdashboard/window-tracker-backend.c
+++ b/libxfdashboard/window-tracker-backend.c
@@ -177,6 +177,38 @@ XfdashboardWindowTracker* xfdashboard_window_tracker_backend_get_window_tracker(
}
/**
+ * xfdashboard_window_tracker_backend_get_window_for_stage:
+ * @self: A #XfdashboardWindowTrackerBackend
+ * @inStage: A #ClutterStage
+ *
+ * Retrieves the window created for the requested stage @inStage from window
+ * tracker backend @self.
+ *
+ * Return value: (transfer none): The #XfdashboardWindowTrackerWindow representing
+ * the window of requested stage or %NULL if not available. The returned object
+ * is owned by Xfdashboard and it should not be referenced or unreferenced.
+ */
+XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_backend_get_window_for_stage(XfdashboardWindowTrackerBackend *self,
+ ClutterStage *inStage)
+{
+ XfdashboardWindowTrackerBackendInterface *iface;
+
+ g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_BACKEND(self), NULL);
+
+ iface=XFDASHBOARD_WINDOW_TRACKER_BACKEND_GET_IFACE(self);
+
+ /* Call virtual function */
+ if(iface->get_window_for_stage)
+ {
+ return(iface->get_window_for_stage(self, inStage));
+ }
+
+ /* If we get here the virtual function was not overridden */
+ XFDASHBOARD_WINDOWS_TRACKER_BACKEND_WARN_NOT_IMPLEMENTED(self, "get_window_for_stage");
+ return(NULL);
+}
+
+/**
* xfdashboard_window_tracker_backend_get_stage_from_window:
* @self: A #XfdashboardWindowTrackerBackend
* @inWindow: A #XfdashboardWindowTrackerWindow defining the stage window
diff --git a/libxfdashboard/window-tracker-backend.h b/libxfdashboard/window-tracker-backend.h
index a5fcd50..e583bb6 100644
--- a/libxfdashboard/window-tracker-backend.h
+++ b/libxfdashboard/window-tracker-backend.h
@@ -64,6 +64,8 @@ struct _XfdashboardWindowTrackerBackendInterface
XfdashboardWindowTracker* (*get_window_tracker)(XfdashboardWindowTrackerBackend *self);
+ XfdashboardWindowTrackerWindow* (*get_window_for_stage)(XfdashboardWindowTrackerBackend *self,
+ ClutterStage *inStage);
ClutterStage* (*get_stage_from_window)(XfdashboardWindowTrackerBackend *self,
XfdashboardWindowTrackerWindow *inWindow);
void (*show_stage_window)(XfdashboardWindowTrackerBackend *self,
@@ -82,6 +84,8 @@ const gchar* xfdashboard_window_tracker_backend_get_name(XfdashboardWindowTracke
XfdashboardWindowTracker* xfdashboard_window_tracker_backend_get_window_tracker(XfdashboardWindowTrackerBackend *self);
+XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_backend_get_window_for_stage(XfdashboardWindowTrackerBackend *self,
+ ClutterStage *inStage);
ClutterStage* xfdashboard_window_tracker_backend_get_stage_from_window(XfdashboardWindowTrackerBackend *self,
XfdashboardWindowTrackerWindow *inWindow);
void xfdashboard_window_tracker_backend_show_stage_window(XfdashboardWindowTrackerBackend *self,
diff --git a/libxfdashboard/window-tracker.c b/libxfdashboard/window-tracker.c
index 39f71e5..18aa1f6 100644
--- a/libxfdashboard/window-tracker.c
+++ b/libxfdashboard/window-tracker.c
@@ -1107,6 +1107,16 @@ XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_get_root_window(Xfdas
*
* Retrieves the window created for the requested stage @inStage.
*
+ * This function is the logical equivalent of:
+ *
+ * |[<!-- language="C" -->
+ * XfdashboardWindowTrackerBackend *backend;
+ * XfdashboardWindowTrackerWindow *stageWindow;
+ *
+ * backend=xfdashboard_window_tracker_backend_get_default();
+ * stageWindow=xfdashboard_window_tracker_backend_get_window_for_stage(backend, inStage);
+ * ]|
+ *
* Return value: (transfer none): The #XfdashboardWindowTrackerWindow representing
* the window of requested stage or %NULL if not available. The returned object
* is owned by Xfdashboard and it should not be referenced or unreferenced.
@@ -1114,20 +1124,23 @@ XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_get_root_window(Xfdas
XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_get_stage_window(XfdashboardWindowTracker *self,
ClutterStage *inStage)
{
- XfdashboardWindowTrackerInterface *iface;
-
- g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(self), NULL);
- g_return_val_if_fail(CLUTTER_IS_STAGE(inStage), NULL);
-
- iface=XFDASHBOARD_WINDOW_TRACKER_GET_IFACE(self);
+ XfdashboardWindowTrackerBackend *backend;
+ XfdashboardWindowTrackerWindow *stageWindow;
- /* Call virtual function */
- if(iface->get_stage_window)
+ /* Get default window tracker backend */
+ backend=xfdashboard_window_tracker_backend_get_default();
+ if(!backend)
{
- return(iface->get_stage_window(self, inStage));
+ g_critical(_("Could not get default window tracker backend"));
+ return(NULL);
}
- /* If we get here the virtual function was not overridden */
- XFDASHBOARD_WINDOWS_TRACKER_WARN_NOT_IMPLEMENTED(self, "get_stage_window");
- return(NULL);
+ /* Get window for requested stage from backend */
+ stageWindow=xfdashboard_window_tracker_backend_get_window_for_stage(backend, inStage);
+
+ /* Release allocated resources */
+ if(backend) g_object_unref(backend);
+
+ /* Return window object instance */
+ return(stageWindow);
}
diff --git a/libxfdashboard/window-tracker.h b/libxfdashboard/window-tracker.h
index ed1fc2f..6f1f7c3 100644
--- a/libxfdashboard/window-tracker.h
+++ b/libxfdashboard/window-tracker.h
@@ -128,7 +128,6 @@ struct _XfdashboardWindowTrackerInterface
const gchar* (*get_window_manager_name)(XfdashboardWindowTracker *self);
XfdashboardWindowTrackerWindow* (*get_root_window)(XfdashboardWindowTracker *self);
- XfdashboardWindowTrackerWindow* (*get_stage_window)(XfdashboardWindowTracker *self, ClutterStage *inStage);
/* Signals */
void (*window_stacking_changed)(XfdashboardWindowTracker *self);
diff --git a/libxfdashboard/x11/window-tracker-backend-x11.c b/libxfdashboard/x11/window-tracker-backend-x11.c
index 8d368d4..77baba3 100644
--- a/libxfdashboard/x11/window-tracker-backend-x11.c
+++ b/libxfdashboard/x11/window-tracker-backend-x11.c
@@ -386,6 +386,37 @@ static XfdashboardWindowTracker* _xfdashboard_window_tracker_backend_x11_window_
return(XFDASHBOARD_WINDOW_TRACKER(priv->windowTracker));
}
+/* Get window of stage */
+static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_backend_x11_window_tracker_backend_get_window_for_stage(XfdashboardWindowTrackerBackend *inBackend,
+ ClutterStage *inStage)
+{
+ XfdashboardWindowTrackerBackendX11 *self;
+ XfdashboardWindowTrackerBackendX11Private *priv;
+ Window stageXWindow;
+ WnckWindow *wnckWindow;
+ XfdashboardWindowTrackerWindow *window;
+
+ g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_BACKEND_X11(inBackend), NULL);
+ g_return_val_if_fail(CLUTTER_IS_STAGE(inStage), NULL);
+
+ self=XFDASHBOARD_WINDOW_TRACKER_BACKEND_X11(inBackend);
+ priv=self->priv;
+
+ /* Get stage X window and translate to needed window type */
+ stageXWindow=clutter_x11_get_stage_window(inStage);
+ wnckWindow=wnck_window_get(stageXWindow);
+
+ /* Get or create window object for wnck background window */
+ window=xfdashboard_window_tracker_x11_get_window_for_wnck(priv->windowTracker, wnckWindow);
+ XFDASHBOARD_DEBUG(self, WINDOWS,
+ "Resolved stage wnck window %s@%p of stage %s@%p to window object %s@%p",
+ G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
+ G_OBJECT_TYPE_NAME(inStage), inStage,
+ G_OBJECT_TYPE_NAME(window), window);
+
+ return(window);
+}
+
/* Get associated stage of window */
static ClutterStage* _xfdashboard_window_tracker_backend_x11_window_tracker_backend_get_stage_from_window(XfdashboardWindowTrackerBackend *inBackend,
XfdashboardWindowTrackerWindow *inStageWindow)
@@ -658,6 +689,7 @@ static void _xfdashboard_window_tracker_backend_x11_window_tracker_backend_iface
iface->get_window_tracker=_xfdashboard_window_tracker_backend_x11_window_tracker_backend_get_window_tracker;
+ iface->get_window_for_stage=_xfdashboard_window_tracker_backend_x11_window_tracker_backend_get_window_for_stage;
iface->get_stage_from_window=_xfdashboard_window_tracker_backend_x11_window_tracker_backend_get_stage_from_window;
iface->show_stage_window=_xfdashboard_window_tracker_backend_x11_window_tracker_backend_show_stage_window;
iface->hide_stage_window=_xfdashboard_window_tracker_backend_x11_window_tracker_backend_hide_stage_window;
diff --git a/libxfdashboard/x11/window-tracker-x11.c b/libxfdashboard/x11/window-tracker-x11.c
index b92d3e6..f387835 100644
--- a/libxfdashboard/x11/window-tracker-x11.c
+++ b/libxfdashboard/x11/window-tracker-x11.c
@@ -1573,34 +1573,6 @@ static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_x11_window_tr
return(NULL);
}
-/* Get window of stage */
-static XfdashboardWindowTrackerWindow* _xfdashboard_window_tracker_x11_window_tracker_get_stage_window(XfdashboardWindowTracker *inWindowTracker,
- ClutterStage *inStage)
-{
- XfdashboardWindowTrackerX11 *self;
- Window stageXWindow;
- WnckWindow *wnckWindow;
- XfdashboardWindowTrackerWindowX11 *window;
-
- g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_X11(inWindowTracker), NULL);
- g_return_val_if_fail(CLUTTER_IS_STAGE(inStage), NULL);
-
- self=XFDASHBOARD_WINDOW_TRACKER_X11(inWindowTracker);
-
- /* Get stage X window and translate to needed window type */
- stageXWindow=clutter_x11_get_stage_window(inStage);
- wnckWindow=wnck_window_get(stageXWindow);
-
- /* Get or create window object for wnck background window */
- window=_xfdashboard_window_tracker_x11_create_window_for_wnck(self, wnckWindow);
- XFDASHBOARD_DEBUG(self, WINDOWS,
- "Resolved stage window %s@%p to window object %s@%p",
- G_OBJECT_TYPE_NAME(wnckWindow), wnckWindow,
- G_OBJECT_TYPE_NAME(window), window);
-
- return(XFDASHBOARD_WINDOW_TRACKER_WINDOW(window));
-}
-
/* Interface initialization
* Set up default functions
*/
@@ -1627,7 +1599,6 @@ static void _xfdashboard_window_tracker_x11_window_tracker_iface_init(Xfdashboar
iface->get_window_manager_name=_xfdashboard_window_tracker_x11_window_tracker_get_window_manager_name;
iface->get_root_window=_xfdashboard_window_tracker_x11_window_tracker_get_root_window;
- iface->get_stage_window=_xfdashboard_window_tracker_x11_window_tracker_get_stage_window;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list