[Xfce4-commits] [apps/xfdashboard] 07/19: Redirect interface functions show_stage() and hide_stage() of XfdashboardWindowTrackerWindow to virtual functions of new window tracker backend interface.

noreply at xfce.org noreply at xfce.org
Fri Jun 16 10:56:38 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 71a592cec469b42a6d0e2672d87cce0f25346ec4
Author: Stephan Haller <nomad at froevel.de>
Date:   Tue Jun 13 09:36:00 2017 +0200

    Redirect interface functions show_stage() and hide_stage() of XfdashboardWindowTrackerWindow to virtual functions of new window tracker backend interface.
    
    Enhancement for issue GH #129
---
 libxfdashboard/gdk/window-tracker-window-gdk.c | 480 -------------------------
 libxfdashboard/window-tracker-window.c         |  72 ++--
 libxfdashboard/window-tracker-window.h         |   2 -
 libxfdashboard/x11/window-tracker-window-x11.c | 468 ------------------------
 4 files changed, 52 insertions(+), 970 deletions(-)

diff --git a/libxfdashboard/gdk/window-tracker-window-gdk.c b/libxfdashboard/gdk/window-tracker-window-gdk.c
index 62cd670..ccfff9b 100644
--- a/libxfdashboard/gdk/window-tracker-window-gdk.c
+++ b/libxfdashboard/gdk/window-tracker-window-gdk.c
@@ -219,278 +219,6 @@ static void _xfdashboard_window_tracker_window_gdk_update_actions(XfdashboardWin
 	}
 }
 
-/* Size of screen has changed so resize stage window */
-static void _xfdashboard_window_tracker_window_gdk_on_stage_screen_size_changed(XfdashboardWindowTracker *inWindowTracker,
-																				gint inWidth,
-																				gint inHeight,
-																				gpointer inUserData)
-{
-#ifdef HAVE_XINERAMA
-	XfdashboardWindowTrackerWindowGDK	*realStageWindow;
-	WnckWindow							*stageWindow;
-	GdkDisplay							*display;
-	GdkScreen							*screen;
-	XineramaScreenInfo					*monitors;
-	int									monitorsCount;
-	gint								top, bottom, left, right;
-	gint								topIndex, bottomIndex, leftIndex, rightIndex;
-	gint								i;
-	Atom								atomFullscreenMonitors;
-	XEvent								xEvent;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(inWindowTracker));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_GDK(inUserData));
-
-	realStageWindow=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK(inUserData);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS, "Set fullscreen across all monitors using Xinerama");
-
-	/* Get wnck window for stage window object as it is needed a lot from this
-	 * point on.
-	 */
-	stageWindow=xfdashboard_window_tracker_window_gdk_get_window(realStageWindow);
-
-	/* If window manager does not support fullscreen across all monitors
-	 * return here.
-	 */
-	if(!wnck_screen_net_wm_supports(wnck_window_get_screen(stageWindow), "_NET_WM_FULLSCREEN_MONITORS"))
-	{
-		g_warning(_("Keep window fullscreen on primary monitor because window manager does not support _NET_WM_FULLSCREEN_MONITORS."));
-		return;
-	}
-
-	/* Get display */
-	display=gdk_display_get_default();
-
-	/* Get screen */
-	screen=gdk_screen_get_default();
-
-	/* Check if Xinerama is active on display. If not try to move and resize
-	 * stage window to primary monitor.
-	 */
-	if(!XineramaIsActive(GDK_DISPLAY_XDISPLAY(display)))
-	{
-#if GTK_CHECK_VERSION(3, 22, 0)
-		GdkMonitor			*primaryMonitor;
-#else
-		gint				primaryMonitor;
-#endif
-		GdkRectangle		geometry;
-
-		/* Get position and size of primary monitor and try to move and resize
-		 * stage window to its position and size. Even if it fails it should
-		 * resize the stage to the size of current monitor this window is
-		 * fullscreened to. Tested with xfwm4.
-		 */
-#if GTK_CHECK_VERSION(3, 22, 0)
-		primaryMonitor=gdk_display_get_primary_monitor(gdk_screen_get_display(screen));
-		gdk_monitor_get_geometry(primaryMonitor, &geometry);
-#else
-		primaryMonitor=gdk_screen_get_primary_monitor(screen);
-		gdk_screen_get_monitor_geometry(screen, primaryMonitor, &geometry);
-#endif
-		wnck_window_set_geometry(stageWindow,
-									WNCK_WINDOW_GRAVITY_STATIC,
-									WNCK_WINDOW_CHANGE_X | WNCK_WINDOW_CHANGE_Y | WNCK_WINDOW_CHANGE_WIDTH | WNCK_WINDOW_CHANGE_HEIGHT,
-									geometry.x, geometry.y, geometry.width, geometry.height);
-		return;
-	}
-
-	/* Get monitors from Xinerama */
-	monitors=XineramaQueryScreens(GDK_DISPLAY_XDISPLAY(display), &monitorsCount);
-	if(monitorsCount<=0 || !monitors)
-	{
-		if(monitors) XFree(monitors);
-		return;
-	}
-
-	/* Get monitor indices for each corner of screen */
-	xfdashboard_window_tracker_get_screen_size(inWindowTracker, &left, &top);
-	bottom=0;
-	right=0;
-	topIndex=bottomIndex=leftIndex=rightIndex=0;
-	for(i=0; i<monitorsCount; i++)
-	{
-		XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-							"Checking edges at monitor %d with upper-left at %d,%d and lower-right at %d,%d [size: %dx%d]",
-							i,
-							monitors[i].x_org,
-							monitors[i].y_org,
-							monitors[i].x_org+monitors[i].width, monitors[i].y_org+monitors[i].height,
-							monitors[i].width, monitors[i].height);
-
-		if(left>monitors[i].x_org)
-		{
-			left=monitors[i].x_org;
-			leftIndex=i;
-		}
-
-		if(right<(monitors[i].x_org+monitors[i].width))
-		{
-			right=(monitors[i].x_org+monitors[i].width);
-			rightIndex=i;
-		}
-
-		if(top>monitors[i].y_org)
-		{
-			top=monitors[i].y_org;
-			topIndex=i;
-		}
-
-		if(bottom<(monitors[i].y_org+monitors[i].height))
-		{
-			bottom=(monitors[i].y_org+monitors[i].height);
-			bottomIndex=i;
-		}
-	}
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-						"Found edge monitors: left=%d (monitor %d), right=%d (monitor %d), top=%d (monitor %d), bottom=%d (monitor %d)",
-						left, leftIndex,
-						right, rightIndex,
-						top, topIndex,
-						bottom, bottomIndex);
-
-	/* Get X atom for fullscreen-across-all-monitors */
-	atomFullscreenMonitors=XInternAtom(GDK_DISPLAY_XDISPLAY(display),
-										"_NET_WM_FULLSCREEN_MONITORS",
-										False);
-
-	/* Send event to X to set window to fullscreen over all monitors */
-	memset(&xEvent, 0, sizeof(xEvent));
-	xEvent.type=ClientMessage;
-	xEvent.xclient.window=wnck_window_get_xid(stageWindow);
-	xEvent.xclient.display=GDK_DISPLAY_XDISPLAY(display);
-	xEvent.xclient.message_type=atomFullscreenMonitors;
-	xEvent.xclient.format=32;
-	xEvent.xclient.data.l[0]=topIndex;
-	xEvent.xclient.data.l[1]=bottomIndex;
-	xEvent.xclient.data.l[2]=leftIndex;
-	xEvent.xclient.data.l[3]=rightIndex;
-	xEvent.xclient.data.l[4]=0;
-	XSendEvent(GDK_DISPLAY_XDISPLAY(display),
-				DefaultRootWindow(GDK_DISPLAY_XDISPLAY(display)),
-				False,
-				SubstructureRedirectMask | SubstructureNotifyMask,
-				&xEvent);
-
-	/* Release allocated resources */
-	if(monitors) XFree(monitors);
-#else
-	XfdashboardWindowTrackerWindowGDK	*realStageWindow;
-	WnckWindow							*stageWindow;
-	GdkScreen							*screen;
-	gint								primaryMonitor;
-	GdkRectangle						geometry;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(inWindowTracker));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_GDK(inUserData));
-
-	realStageWindow=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK(inUserData);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS, "No support for multiple monitor: Setting fullscreen on primary monitor");
-
-	/* Get wnck window for stage window object as it is needed a lot from this
-	 * point on.
-	 */
-	stageWindow=xfdashboard_window_tracker_window_gdk_get_window(realStageWindow);
-
-	/* Get screen */
-	screen=gdk_screen_get_default();
-
-	/* Get position and size of primary monitor and try to move and resize
-	 * stage window to its position and size. Even if it fails it should
-	 * resize the stage to the size of current monitor this window is
-	 * fullscreened to. Tested with xfwm4.
-	 */
-	primaryMonitor=gdk_screen_get_primary_monitor(screen);
-	gdk_screen_get_monitor_geometry(screen, primaryMonitor, &geometry);
-	wnck_window_set_geometry(stageWindow,
-								WNCK_WINDOW_GRAVITY_STATIC,
-								WNCK_WINDOW_CHANGE_X | WNCK_WINDOW_CHANGE_Y | WNCK_WINDOW_CHANGE_WIDTH | WNCK_WINDOW_CHANGE_HEIGHT,
-								geometry.x, geometry.y, geometry.width, geometry.height);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-						"Moving stage window to %d,%d and resize to %dx%d",
-						geometry.x, geometry.y,
-						geometry.width, geometry.height);
-#endif
-}
-
-/* State of stage window changed */
-static void _xfdashboard_window_tracker_window_gdk_on_stage_state_changed(WnckWindow *inWindow,
-																			WnckWindowState inChangedMask,
-																			WnckWindowState inNewValue,
-																			gpointer inUserData)
-{
-	g_return_if_fail(WNCK_IS_WINDOW(inWindow));
-
-	/* Set 'skip-tasklist' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_SKIP_TASKLIST) &&
-		!(inNewValue & WNCK_WINDOW_STATE_SKIP_TASKLIST))
-	{
-		wnck_window_set_skip_tasklist(WNCK_WINDOW(inWindow), TRUE);
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'skip-tasklist' for stage window %p needs reset",
-							inWindow);
-	}
-
-	/* Set 'skip-pager' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_SKIP_PAGER) &&
-		!(inNewValue & WNCK_WINDOW_STATE_SKIP_PAGER))
-	{
-		wnck_window_set_skip_pager(WNCK_WINDOW(inWindow), TRUE);
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'skip-pager' for stage window %p needs reset",
-							inWindow);
-	}
-
-	/* Set 'make-above' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_ABOVE) &&
-		!(inNewValue & WNCK_WINDOW_STATE_ABOVE))
-	{
-		wnck_window_make_above(WNCK_WINDOW(inWindow));
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'make-above' for stage window %p needs reset",
-							inWindow);
-	}
-}
-
-/* The active window changed. Reselect stage window as active one if it is visible */
-static void _xfdashboard_window_tracker_window_gdk_on_stage_active_window_changed(WnckScreen *inScreen,
-																					WnckWindow *inPreviousWindow,
-																					gpointer inUserData)
-{
-	XfdashboardWindowTrackerWindowGDK			*self;
-	XfdashboardWindowTrackerWindowGDKPrivate	*priv;
-	WnckWindow									*activeWindow;
-	gboolean									reselect;
-
-	g_return_if_fail(WNCK_IS_SCREEN(inScreen));
-	g_return_if_fail(inPreviousWindow==NULL || WNCK_IS_WINDOW(inPreviousWindow));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_GDK(inUserData));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK(inUserData);
-	priv=self->priv;
-	reselect=FALSE;
-
-	/* Reactive stage window if not hidden */
-	activeWindow=wnck_screen_get_active_window(inScreen);
-
-	if(inPreviousWindow && inPreviousWindow==priv->window) reselect=TRUE;
-	if(!activeWindow || activeWindow!=priv->window) reselect=TRUE;
-	if(!(priv->state & (XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MINIMIZED | XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_HIDDEN))) reselect=TRUE;
-
-	if(reselect)
-	{
-		wnck_window_activate_transient(priv->window, xfdashboard_window_tracker_gdk_get_time());
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Active window changed from %p (%s) to %p (%s) but stage window %p is visible and should be active one",
-							inPreviousWindow, inPreviousWindow ? wnck_window_get_name(inPreviousWindow) : "<nil>",
-							activeWindow, activeWindow ? wnck_window_get_name(activeWindow) : "<nil>",
-							priv->window);
-	}
-}
-
 /* Proxy signal for mapped wnck window which changed name */
 static void _xfdashboard_window_tracker_window_gdk_on_wnck_name_changed(XfdashboardWindowTrackerWindowGDK *self,
 																		gpointer inUserData)
@@ -1454,212 +1182,6 @@ static ClutterStage* _xfdashboard_window_tracker_window_gdk_window_tracker_windo
 	return(foundStage);
 }
 
-/* Set up and show window for use as stage */
-static void _xfdashboard_window_tracker_window_gdk_window_tracker_window_show_stage(XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardWindowTrackerWindowGDK			*self;
-	XfdashboardWindowTrackerWindowGDKPrivate	*priv;
-	XfdashboardWindowTracker					*windowTracker;
-	GdkWindow									*stageWindow;
-	WnckScreen									*screen;
-	guint										signalID;
-	gulong										handlerID;
-	gint										width, height;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_GDK(inWindow));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK(inWindow);
-	priv=self->priv;
-
-	/* A wnck window must be wrapped by this object */
-	if(!priv->window)
-	{
-		XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK_WARN_NO_WINDOW(self);
-		return;
-	}
-
-	/* Get stage window */
-	stageWindow=clutter_gdk_get_stage_window(_xfdashboard_window_tracker_window_gdk_window_tracker_window_get_stage(inWindow));
-
-	/* Get screen of window */
-	screen=wnck_window_get_screen(priv->window);
-
-	/* Window of stage should always be above all other windows, pinned to all
-	 * workspaces, not be listed in window pager and set to fullscreen
-	 */
-	gdk_window_set_skip_taskbar_hint(stageWindow, TRUE);
-	gdk_window_set_skip_pager_hint(stageWindow, TRUE);
-	gdk_window_set_keep_above(stageWindow, TRUE);
-	gdk_window_stick(stageWindow);
-#if GTK_CHECK_VERSION(3, 8, 0)
-	gdk_window_set_fullscreen_mode(stageWindow, GDK_FULLSCREEN_ON_ALL_MONITORS);
-#endif
-	gdk_window_fullscreen(stageWindow);
-
-	/* Connect signals if not already connected */
-	signalID=g_signal_lookup("state-changed", WNCK_TYPE_WINDOW);
-	handlerID=g_signal_handler_find(priv->window,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_state_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(priv->window,
-							"state-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_state_changed),
-							NULL);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'state-changed' at window %p (wnck-window=%p)",
-							self,
-							priv->window);
-	}
-
-	signalID=g_signal_lookup("active-window-changed", WNCK_TYPE_SCREEN);
-	handlerID=g_signal_handler_find(screen,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_active_window_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(screen,
-							"active-window-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_active_window_changed),
-							self);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'active-window-changed' at screen %p of window %p (wnck-window=%p)",
-							screen,
-							self,
-							priv->window);
-	}
-
-	windowTracker=xfdashboard_window_tracker_get_default();
-	signalID=g_signal_lookup("screen-size-changed", XFDASHBOARD_TYPE_WINDOW_TRACKER);
-	handlerID=g_signal_handler_find(windowTracker,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_screen_size_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(windowTracker,
-							"screen-size-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_screen_size_changed),
-							self);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'screen-size-changed' at window %p (wnck-window=%p)",
-							self,
-							priv->window);
-	}
-	xfdashboard_window_tracker_get_screen_size(windowTracker, &width, &height);
-	_xfdashboard_window_tracker_window_gdk_on_stage_screen_size_changed(windowTracker,
-																	width,
-																	height,
-																	self);
-	g_object_unref(windowTracker);
-
-	/* Now the window is set up and we can show it */
-	gdk_window_show(stageWindow);
-}
-
-/* Unset up and hide stage window */
-static void _xfdashboard_window_tracker_window_gdk_window_tracker_window_hide_stage(XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardWindowTrackerWindowGDK			*self;
-	XfdashboardWindowTrackerWindowGDKPrivate	*priv;
-	XfdashboardWindowTracker					*windowTracker;
-	GdkWindow									*stageWindow;
-	WnckScreen									*screen;
-	guint										signalID;
-	gulong										handlerID;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_GDK(inWindow));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK(inWindow);
-	priv=self->priv;
-
-	/* A wnck window must be wrapped by this object */
-	if(!priv->window)
-	{
-		XFDASHBOARD_WINDOW_TRACKER_WINDOW_GDK_WARN_NO_WINDOW(self);
-		return;
-	}
-
-	/* Get stage window */
-	stageWindow=clutter_gdk_get_stage_window(_xfdashboard_window_tracker_window_gdk_window_tracker_window_get_stage(inWindow));
-
-	/* First hide window before removing signals etc. */
-	gdk_window_hide(stageWindow);
-
-	/* Get screen of window */
-	screen=wnck_window_get_screen(WNCK_WINDOW(priv->window));
-
-	/* Disconnect signals */
-	signalID=g_signal_lookup("state-changed", WNCK_TYPE_WINDOW);
-	handlerID=g_signal_handler_find(priv->window,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_state_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(priv->window, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'state-changed' at window %p (wnck-window=%p)",
-							handlerID,
-							self,
-							priv->window);
-	}
-
-	signalID=g_signal_lookup("active-window-changed", WNCK_TYPE_SCREEN);
-	handlerID=g_signal_handler_find(screen,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_active_window_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(screen, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'active-window-changed' at screen %p of window %p (wnck-window=%p)",
-							handlerID,
-							screen,
-							self,
-							priv->window);
-	}
-
-	windowTracker=xfdashboard_window_tracker_get_default();
-	signalID=g_signal_lookup("screen-size-changed", XFDASHBOARD_TYPE_WINDOW_TRACKER);
-	handlerID=g_signal_handler_find(windowTracker,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_gdk_on_stage_screen_size_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(windowTracker, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'screen-size-changed' at window %p (wnck-window=%p)",
-							handlerID,
-							self,
-							priv->window);
-	}
-	g_object_unref(windowTracker);
-}
-
 /* Interface initialization
  * Set up default functions
  */
@@ -1696,8 +1218,6 @@ static void _xfdashboard_window_tracker_window_gdk_window_tracker_window_iface_i
 	iface->get_content=_xfdashboard_window_tracker_window_gdk_window_tracker_window_get_content;
 
 	iface->get_stage=_xfdashboard_window_tracker_window_gdk_window_tracker_window_get_stage;
-	iface->show_stage=_xfdashboard_window_tracker_window_gdk_window_tracker_window_show_stage;
-	iface->hide_stage=_xfdashboard_window_tracker_window_gdk_window_tracker_window_hide_stage;
 }
 
 
diff --git a/libxfdashboard/window-tracker-window.c b/libxfdashboard/window-tracker-window.c
index 80c1ed6..67eed15 100644
--- a/libxfdashboard/window-tracker-window.c
+++ b/libxfdashboard/window-tracker-window.c
@@ -29,7 +29,7 @@
 
 #include <glib/gi18n-lib.h>
 
-#include <libxfdashboard/window-tracker.h>
+#include <libxfdashboard/window-tracker-backend.h>
 #include <libxfdashboard/enums.h>
 #include <libxfdashboard/marshal.h>
 #include <libxfdashboard/compat.h>
@@ -762,44 +762,76 @@ ClutterStage* xfdashboard_window_tracker_window_get_stage(XfdashboardWindowTrack
 	return(NULL);
 }
 
-/* Set up and show window for use as stage window */
+/**
+ * xfdashboard_window_tracker_window_show_stage:
+ * @self: A #XfdashboardWindowTrackerWindow
+ *
+ * Asks the default window tracker backend to set up and show the window @self
+ * for use as stage window.
+ *
+ * This function is the logical equivalent of:
+ *
+ * |[<!-- language="C" -->
+ *   XfdashboardWindowTrackerBackend *backend;
+ *
+ *   backend=xfdashboard_window_tracker_backend_get_default();
+ *   xfdashboard_window_tracker_backend_show_stage_window(backend, self);
+ * ]|
+ */
 void xfdashboard_window_tracker_window_show_stage(XfdashboardWindowTrackerWindow *self)
 {
-	XfdashboardWindowTrackerWindowInterface		*iface;
+	XfdashboardWindowTrackerBackend		*backend;
 
 	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(self));
 
-	iface=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GET_IFACE(self);
-
-	/* Call virtual function */
-	if(iface->show_stage)
+	/* Get default window tracker backend */
+	backend=xfdashboard_window_tracker_backend_get_default();
+	if(!backend)
 	{
-		iface->show_stage(self);
+		g_critical(_("Could not get default window tracker backend"));
 		return;
 	}
 
-	/* If we get here the virtual function was not overridden */
-	XFDASHBOARD_WINDOWS_TRACKER_WINDOW_WARN_NOT_IMPLEMENTED(self, "show_stage");
-}
+	/* Redirect function to window tracker backend */
+	xfdashboard_window_tracker_backend_show_stage_window(backend, self);
 
-/* Unset up and hide stage window */
+	/* Release allocated resources */
+	if(backend) g_object_unref(backend);
+}
+
+/**
+ * xfdashboard_window_tracker_window_hide_stage:
+ * @self: A #XfdashboardWindowTrackerWindow
+ *
+ * Asks the default window tracker backend to hide the stage window @self.
+ * This function is the logical equivalent of:
+ *
+ * |[<!-- language="C" -->
+ *   XfdashboardWindowTrackerBackend *backend;
+ *
+ *   backend=xfdashboard_window_tracker_backend_get_default();
+ *   xfdashboard_window_tracker_backend_hide_stage_window(backend, self);
+ * ]|
+ */
 void xfdashboard_window_tracker_window_hide_stage(XfdashboardWindowTrackerWindow *self)
 {
-	XfdashboardWindowTrackerWindowInterface		*iface;
+	XfdashboardWindowTrackerBackend		*backend;
 
 	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(self));
 
-	iface=XFDASHBOARD_WINDOW_TRACKER_WINDOW_GET_IFACE(self);
-
-	/* Call virtual function */
-	if(iface->hide_stage)
+	/* Get default window tracker backend */
+	backend=xfdashboard_window_tracker_backend_get_default();
+	if(!backend)
 	{
-		iface->hide_stage(self);
+		g_critical(_("Could not get default window tracker backend"));
 		return;
 	}
 
-	/* If we get here the virtual function was not overridden */
-	XFDASHBOARD_WINDOWS_TRACKER_WINDOW_WARN_NOT_IMPLEMENTED(self, "hide_stage");
+	/* Redirect function to window tracker backend */
+	xfdashboard_window_tracker_backend_hide_stage_window(backend, self);
+
+	/* Release allocated resources */
+	if(backend) g_object_unref(backend);
 }
 
 /* Get process ID owning the requested window */
diff --git a/libxfdashboard/window-tracker-window.h b/libxfdashboard/window-tracker-window.h
index f57f956..6aea5b0 100644
--- a/libxfdashboard/window-tracker-window.h
+++ b/libxfdashboard/window-tracker-window.h
@@ -130,8 +130,6 @@ struct _XfdashboardWindowTrackerWindowInterface
 	ClutterContent* (*get_content)(XfdashboardWindowTrackerWindow *self);
 
 	ClutterStage* (*get_stage)(XfdashboardWindowTrackerWindow *self);
-	void (*show_stage)(XfdashboardWindowTrackerWindow *self);
-	void (*hide_stage)(XfdashboardWindowTrackerWindow *self);
 
 	/* Signals */
 	void (*name_changed)(XfdashboardWindowTrackerWindow *self);
diff --git a/libxfdashboard/x11/window-tracker-window-x11.c b/libxfdashboard/x11/window-tracker-window-x11.c
index 9462635..54ed8a0 100644
--- a/libxfdashboard/x11/window-tracker-window-x11.c
+++ b/libxfdashboard/x11/window-tracker-window-x11.c
@@ -218,278 +218,6 @@ static void _xfdashboard_window_tracker_window_x11_update_actions(XfdashboardWin
 	}
 }
 
-/* Size of screen has changed so resize stage window */
-static void _xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed(XfdashboardWindowTracker *inWindowTracker,
-																				gint inWidth,
-																				gint inHeight,
-																				gpointer inUserData)
-{
-#ifdef HAVE_XINERAMA
-	XfdashboardWindowTrackerWindowX11	*realStageWindow;
-	WnckWindow							*stageWindow;
-	GdkDisplay							*display;
-	GdkScreen							*screen;
-	XineramaScreenInfo					*monitors;
-	int									monitorsCount;
-	gint								top, bottom, left, right;
-	gint								topIndex, bottomIndex, leftIndex, rightIndex;
-	gint								i;
-	Atom								atomFullscreenMonitors;
-	XEvent								xEvent;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(inWindowTracker));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_X11(inUserData));
-
-	realStageWindow=XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11(inUserData);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS, "Set fullscreen across all monitors using Xinerama");
-
-	/* Get wnck window for stage window object as it is needed a lot from this
-	 * point on.
-	 */
-	stageWindow=xfdashboard_window_tracker_window_x11_get_window(realStageWindow);
-
-	/* If window manager does not support fullscreen across all monitors
-	 * return here.
-	 */
-	if(!wnck_screen_net_wm_supports(wnck_window_get_screen(stageWindow), "_NET_WM_FULLSCREEN_MONITORS"))
-	{
-		g_warning(_("Keep window fullscreen on primary monitor because window manager does not support _NET_WM_FULLSCREEN_MONITORS."));
-		return;
-	}
-
-	/* Get display */
-	display=gdk_display_get_default();
-
-	/* Get screen */
-	screen=gdk_screen_get_default();
-
-	/* Check if Xinerama is active on display. If not try to move and resize
-	 * stage window to primary monitor.
-	 */
-	if(!XineramaIsActive(GDK_DISPLAY_XDISPLAY(display)))
-	{
-#if GTK_CHECK_VERSION(3, 22, 0)
-		GdkMonitor			*primaryMonitor;
-#else
-		gint				primaryMonitor;
-#endif
-		GdkRectangle		geometry;
-
-		/* Get position and size of primary monitor and try to move and resize
-		 * stage window to its position and size. Even if it fails it should
-		 * resize the stage to the size of current monitor this window is
-		 * fullscreened to. Tested with xfwm4.
-		 */
-#if GTK_CHECK_VERSION(3, 22, 0)
-		primaryMonitor=gdk_display_get_primary_monitor(gdk_screen_get_display(screen));
-		gdk_monitor_get_geometry(primaryMonitor, &geometry);
-#else
-		primaryMonitor=gdk_screen_get_primary_monitor(screen);
-		gdk_screen_get_monitor_geometry(screen, primaryMonitor, &geometry);
-#endif
-		wnck_window_set_geometry(stageWindow,
-									WNCK_WINDOW_GRAVITY_STATIC,
-									WNCK_WINDOW_CHANGE_X | WNCK_WINDOW_CHANGE_Y | WNCK_WINDOW_CHANGE_WIDTH | WNCK_WINDOW_CHANGE_HEIGHT,
-									geometry.x, geometry.y, geometry.width, geometry.height);
-		return;
-	}
-
-	/* Get monitors from Xinerama */
-	monitors=XineramaQueryScreens(GDK_DISPLAY_XDISPLAY(display), &monitorsCount);
-	if(monitorsCount<=0 || !monitors)
-	{
-		if(monitors) XFree(monitors);
-		return;
-	}
-
-	/* Get monitor indices for each corner of screen */
-	xfdashboard_window_tracker_get_screen_size(inWindowTracker, &left, &top);
-	bottom=0;
-	right=0;
-	topIndex=bottomIndex=leftIndex=rightIndex=0;
-	for(i=0; i<monitorsCount; i++)
-	{
-		XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-							"Checking edges at monitor %d with upper-left at %d,%d and lower-right at %d,%d [size: %dx%d]",
-							i,
-							monitors[i].x_org,
-							monitors[i].y_org,
-							monitors[i].x_org+monitors[i].width, monitors[i].y_org+monitors[i].height,
-							monitors[i].width, monitors[i].height);
-
-		if(left>monitors[i].x_org)
-		{
-			left=monitors[i].x_org;
-			leftIndex=i;
-		}
-
-		if(right<(monitors[i].x_org+monitors[i].width))
-		{
-			right=(monitors[i].x_org+monitors[i].width);
-			rightIndex=i;
-		}
-
-		if(top>monitors[i].y_org)
-		{
-			top=monitors[i].y_org;
-			topIndex=i;
-		}
-
-		if(bottom<(monitors[i].y_org+monitors[i].height))
-		{
-			bottom=(monitors[i].y_org+monitors[i].height);
-			bottomIndex=i;
-		}
-	}
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-						"Found edge monitors: left=%d (monitor %d), right=%d (monitor %d), top=%d (monitor %d), bottom=%d (monitor %d)",
-						left, leftIndex,
-						right, rightIndex,
-						top, topIndex,
-						bottom, bottomIndex);
-
-	/* Get X atom for fullscreen-across-all-monitors */
-	atomFullscreenMonitors=XInternAtom(GDK_DISPLAY_XDISPLAY(display),
-										"_NET_WM_FULLSCREEN_MONITORS",
-										False);
-
-	/* Send event to X to set window to fullscreen over all monitors */
-	memset(&xEvent, 0, sizeof(xEvent));
-	xEvent.type=ClientMessage;
-	xEvent.xclient.window=wnck_window_get_xid(stageWindow);
-	xEvent.xclient.display=GDK_DISPLAY_XDISPLAY(display);
-	xEvent.xclient.message_type=atomFullscreenMonitors;
-	xEvent.xclient.format=32;
-	xEvent.xclient.data.l[0]=topIndex;
-	xEvent.xclient.data.l[1]=bottomIndex;
-	xEvent.xclient.data.l[2]=leftIndex;
-	xEvent.xclient.data.l[3]=rightIndex;
-	xEvent.xclient.data.l[4]=0;
-	XSendEvent(GDK_DISPLAY_XDISPLAY(display),
-				DefaultRootWindow(GDK_DISPLAY_XDISPLAY(display)),
-				False,
-				SubstructureRedirectMask | SubstructureNotifyMask,
-				&xEvent);
-
-	/* Release allocated resources */
-	if(monitors) XFree(monitors);
-#else
-	XfdashboardWindowTrackerWindowX11	*realStageWindow;
-	WnckWindow							*stageWindow;
-	GdkScreen							*screen;
-	gint								primaryMonitor;
-	GdkRectangle						geometry;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER(inWindowTracker));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_X11(inUserData));
-
-	realStageWindow=XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11(inUserData);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS, "No support for multiple monitor: Setting fullscreen on primary monitor");
-
-	/* Get wnck window for stage window object as it is needed a lot from this
-	 * point on.
-	 */
-	stageWindow=xfdashboard_window_tracker_window_x11_get_window(realStageWindow);
-
-	/* Get screen */
-	screen=gdk_screen_get_default();
-
-	/* Get position and size of primary monitor and try to move and resize
-	 * stage window to its position and size. Even if it fails it should
-	 * resize the stage to the size of current monitor this window is
-	 * fullscreened to. Tested with xfwm4.
-	 */
-	primaryMonitor=gdk_screen_get_primary_monitor(screen);
-	gdk_screen_get_monitor_geometry(screen, primaryMonitor, &geometry);
-	wnck_window_set_geometry(stageWindow,
-								WNCK_WINDOW_GRAVITY_STATIC,
-								WNCK_WINDOW_CHANGE_X | WNCK_WINDOW_CHANGE_Y | WNCK_WINDOW_CHANGE_WIDTH | WNCK_WINDOW_CHANGE_HEIGHT,
-								geometry.x, geometry.y, geometry.width, geometry.height);
-
-	XFDASHBOARD_DEBUG(inWindowTracker, WINDOWS,
-						"Moving stage window to %d,%d and resize to %dx%d",
-						geometry.x, geometry.y,
-						geometry.width, geometry.height);
-#endif
-}
-
-/* State of stage window changed */
-static void _xfdashboard_window_tracker_window_x11_on_stage_state_changed(WnckWindow *inWindow,
-																			WnckWindowState inChangedMask,
-																			WnckWindowState inNewValue,
-																			gpointer inUserData)
-{
-	g_return_if_fail(WNCK_IS_WINDOW(inWindow));
-
-	/* Set 'skip-tasklist' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_SKIP_TASKLIST) &&
-		!(inNewValue & WNCK_WINDOW_STATE_SKIP_TASKLIST))
-	{
-		wnck_window_set_skip_tasklist(WNCK_WINDOW(inWindow), TRUE);
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'skip-tasklist' for stage window %p needs reset",
-							inWindow);
-	}
-
-	/* Set 'skip-pager' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_SKIP_PAGER) &&
-		!(inNewValue & WNCK_WINDOW_STATE_SKIP_PAGER))
-	{
-		wnck_window_set_skip_pager(WNCK_WINDOW(inWindow), TRUE);
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'skip-pager' for stage window %p needs reset",
-							inWindow);
-	}
-
-	/* Set 'make-above' if changed */
-	if((inChangedMask & WNCK_WINDOW_STATE_ABOVE) &&
-		!(inNewValue & WNCK_WINDOW_STATE_ABOVE))
-	{
-		wnck_window_make_above(WNCK_WINDOW(inWindow));
-		XFDASHBOARD_DEBUG(inWindow, WINDOWS,
-							"State 'make-above' for stage window %p needs reset",
-							inWindow);
-	}
-}
-
-/* The active window changed. Reselect stage window as active one if it is visible */
-static void _xfdashboard_window_tracker_window_x11_on_stage_active_window_changed(WnckScreen *inScreen,
-																					WnckWindow *inPreviousWindow,
-																					gpointer inUserData)
-{
-	XfdashboardWindowTrackerWindowX11			*self;
-	XfdashboardWindowTrackerWindowX11Private	*priv;
-	WnckWindow									*activeWindow;
-	gboolean									reselect;
-
-	g_return_if_fail(WNCK_IS_SCREEN(inScreen));
-	g_return_if_fail(inPreviousWindow==NULL || WNCK_IS_WINDOW(inPreviousWindow));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_X11(inUserData));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11(inUserData);
-	priv=self->priv;
-	reselect=FALSE;
-
-	/* Reactive stage window if not hidden */
-	activeWindow=wnck_screen_get_active_window(inScreen);
-
-	if(inPreviousWindow && inPreviousWindow==priv->window) reselect=TRUE;
-	if(!activeWindow || activeWindow!=priv->window) reselect=TRUE;
-	if(!(priv->state & (XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MINIMIZED | XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_HIDDEN))) reselect=TRUE;
-
-	if(reselect)
-	{
-		wnck_window_activate_transient(priv->window, xfdashboard_window_tracker_x11_get_time());
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Active window changed from %p (%s) to %p (%s) but stage window %p is visible and should be active one",
-							inPreviousWindow, inPreviousWindow ? wnck_window_get_name(inPreviousWindow) : "<nil>",
-							activeWindow, activeWindow ? wnck_window_get_name(activeWindow) : "<nil>",
-							priv->window);
-	}
-}
-
 /* Proxy signal for mapped wnck window which changed name */
 static void _xfdashboard_window_tracker_window_x11_on_wnck_name_changed(XfdashboardWindowTrackerWindowX11 *self,
 																		gpointer inUserData)
@@ -1451,200 +1179,6 @@ static ClutterStage* _xfdashboard_window_tracker_window_x11_window_tracker_windo
 	return(foundStage);
 }
 
-/* Set up and show window for use as stage */
-static void _xfdashboard_window_tracker_window_x11_window_tracker_window_show_stage(XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardWindowTrackerWindowX11			*self;
-	XfdashboardWindowTrackerWindowX11Private	*priv;
-	XfdashboardWindowTracker					*windowTracker;
-	WnckScreen									*screen;
-	guint										signalID;
-	gulong										handlerID;
-	gint										width, height;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_X11(inWindow));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11(inWindow);
-	priv=self->priv;
-
-	/* A wnck window must be wrapped by this object */
-	if(!priv->window)
-	{
-		XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11_WARN_NO_WINDOW(self);
-		return;
-	}
-
-	/* Window of stage should always be above all other windows, pinned to all
-	 * workspaces, not be listed in window pager and set to fullscreen
-	 */
-	if(!wnck_window_is_skip_tasklist(priv->window)) wnck_window_set_skip_tasklist(priv->window, TRUE);
-	if(!wnck_window_is_skip_pager(priv->window)) wnck_window_set_skip_pager(priv->window, TRUE);
-	if(!wnck_window_is_above(priv->window)) wnck_window_make_above(priv->window);
-	if(!wnck_window_is_pinned(priv->window)) wnck_window_pin(priv->window);
-
-	/* Get screen of window */
-	screen=wnck_window_get_screen(priv->window);
-
-	/* Connect signals if not already connected */
-	signalID=g_signal_lookup("state-changed", WNCK_TYPE_WINDOW);
-	handlerID=g_signal_handler_find(priv->window,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_state_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(priv->window,
-							"state-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_state_changed),
-							NULL);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'state-changed' at window %p (wnck-window=%p)",
-							self,
-							priv->window);
-	}
-
-	signalID=g_signal_lookup("active-window-changed", WNCK_TYPE_SCREEN);
-	handlerID=g_signal_handler_find(screen,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_active_window_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(screen,
-							"active-window-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_active_window_changed),
-							self);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'active-window-changed' at screen %p of window %p (wnck-window=%p)",
-							screen,
-							self,
-							priv->window);
-	}
-
-	windowTracker=xfdashboard_window_tracker_get_default();
-	signalID=g_signal_lookup("screen-size-changed", XFDASHBOARD_TYPE_WINDOW_TRACKER);
-	handlerID=g_signal_handler_find(windowTracker,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed),
-									NULL);
-	if(!handlerID)
-	{
-		g_signal_connect(windowTracker,
-							"screen-size-changed",
-							G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed),
-							self);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Connecting signal to 'screen-size-changed' at window %p (wnck-window=%p)",
-							self,
-							priv->window);
-	}
-	xfdashboard_window_tracker_get_screen_size(windowTracker, &width, &height);
-	_xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed(windowTracker,
-																	width,
-																	height,
-																	self);
-	g_object_unref(windowTracker);
-
-	/* Now the window is set up and we can show it */
-	xfdashboard_window_tracker_window_show(XFDASHBOARD_WINDOW_TRACKER_WINDOW(self));
-}
-
-/* Unset up and hide stage window */
-static void _xfdashboard_window_tracker_window_x11_window_tracker_window_hide_stage(XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardWindowTrackerWindowX11			*self;
-	XfdashboardWindowTrackerWindowX11Private	*priv;
-	XfdashboardWindowTracker					*windowTracker;
-	WnckScreen									*screen;
-	guint										signalID;
-	gulong										handlerID;
-
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW_X11(inWindow));
-
-	self=XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11(inWindow);
-	priv=self->priv;
-
-	/* A wnck window must be wrapped by this object */
-	if(!priv->window)
-	{
-		XFDASHBOARD_WINDOW_TRACKER_WINDOW_X11_WARN_NO_WINDOW(self);
-		return;
-	}
-
-	/* First hide window before removing signals etc. */
-	xfdashboard_window_tracker_window_hide(XFDASHBOARD_WINDOW_TRACKER_WINDOW(self));
-
-	/* Get screen of window */
-	screen=wnck_window_get_screen(WNCK_WINDOW(priv->window));
-
-	/* Disconnect signals */
-	signalID=g_signal_lookup("state-changed", WNCK_TYPE_WINDOW);
-	handlerID=g_signal_handler_find(priv->window,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_state_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(priv->window, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'state-changed' at window %p (wnck-window=%p)",
-							handlerID,
-							self,
-							priv->window);
-	}
-
-	signalID=g_signal_lookup("active-window-changed", WNCK_TYPE_SCREEN);
-	handlerID=g_signal_handler_find(screen,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_active_window_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(screen, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'active-window-changed' at screen %p of window %p (wnck-window=%p)",
-							handlerID,
-							screen,
-							self,
-							priv->window);
-	}
-
-	windowTracker=xfdashboard_window_tracker_get_default();
-	signalID=g_signal_lookup("screen-size-changed", XFDASHBOARD_TYPE_WINDOW_TRACKER);
-	handlerID=g_signal_handler_find(windowTracker,
-									G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC,
-									signalID,
-									0,
-									NULL,
-									G_CALLBACK(_xfdashboard_window_tracker_window_x11_on_stage_screen_size_changed),
-									NULL);
-	if(handlerID)
-	{
-		g_signal_handler_disconnect(windowTracker, handlerID);
-		XFDASHBOARD_DEBUG(self, WINDOWS,
-							"Disconnecting handler %lu for signal 'screen-size-changed' at window %p (wnck-window=%p)",
-							handlerID,
-							self,
-							priv->window);
-	}
-	g_object_unref(windowTracker);
-}
-
 /* Interface initialization
  * Set up default functions
  */
@@ -1681,8 +1215,6 @@ static void _xfdashboard_window_tracker_window_x11_window_tracker_window_iface_i
 	iface->get_content=_xfdashboard_window_tracker_window_x11_window_tracker_window_get_content;
 
 	iface->get_stage=_xfdashboard_window_tracker_window_x11_window_tracker_window_get_stage;
-	iface->show_stage=_xfdashboard_window_tracker_window_x11_window_tracker_window_show_stage;
-	iface->hide_stage=_xfdashboard_window_tracker_window_x11_window_tracker_window_hide_stage;
 }
 
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list