[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