[Xfce4-commits] [apps/xfdashboard] 01/01: Revert "Split out window actor of XfdashboardLiveWorkspace into a new fully themable actor"

noreply at xfce.org noreply at xfce.org
Wed May 20 15:40:44 CEST 2015


This is an automated email from the git hooks/post-receive script.

nomad pushed a commit to branch master
in repository apps/xfdashboard.

commit 97c4d56ee1ae9f9f06088c69000a1be6f718752a
Author: Stephan Haller <nomad at froevel.de>
Date:   Wed May 20 15:36:00 2015 +0200

    Revert "Split out window actor of XfdashboardLiveWorkspace into a new fully themable actor"
    
    This reverts commit 729bbb9ff2e012ecf995691bb7bd9e510cae0e68.
    
    This commit caused lot of usability and stability problems as described at issue GH #44. Reverting this commit reopens issue GH #89
---
 xfdashboard/Makefile.am             |    2 -
 xfdashboard/live-workspace-window.c |  935 -----------------------------------
 xfdashboard/live-workspace-window.h |  105 ----
 xfdashboard/live-workspace.c        |  134 ++++-
 xfdashboard/live-workspace.h        |    3 +
 5 files changed, 120 insertions(+), 1059 deletions(-)

diff --git a/xfdashboard/Makefile.am b/xfdashboard/Makefile.am
index 00b73b3..d3d15a8 100644
--- a/xfdashboard/Makefile.am
+++ b/xfdashboard/Makefile.am
@@ -43,7 +43,6 @@ xfdashboard_headers = \
 	image-content.h \
 	live-window.h \
 	live-workspace.h \
-	live-workspace-window.h \
 	outline-effect.h \
 	quicklaunch.h \
 	scaled-table-layout.h \
@@ -106,7 +105,6 @@ xfdashboard_SOURCES = \
 	image-content.c \
 	live-window.c \
 	live-workspace.c \
-	live-workspace-window.c \
 	main.c \
 	outline-effect.c \
 	quicklaunch.c \
diff --git a/xfdashboard/live-workspace-window.c b/xfdashboard/live-workspace-window.c
deleted file mode 100644
index 0867067..0000000
--- a/xfdashboard/live-workspace-window.c
+++ /dev/null
@@ -1,935 +0,0 @@
-/*
- * live-workspace-window: An actor used at workspace actor showing
- *                        a window and its content or its window icon
- * 
- * Copyright 2012-2015 Stephan Haller <nomad at froevel.de>
- * 
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- * 
- * 
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "live-workspace-window.h"
-
-#include <glib/gi18n-lib.h>
-#include <gdk/gdk.h>
-
-#include "enums.h"
-#include "window-content.h"
-#include "image-content.h"
-
-/* Define this class in GObject system */
-G_DEFINE_TYPE(XfdashboardLiveWorkspaceWindow,
-				xfdashboard_live_workspace_window,
-				XFDASHBOARD_TYPE_BACKGROUND)
-
-/* Private structure - access only by public API if needed */
-#define XFDASHBOARD_LIVE_WORKSPACE_WINDOW_GET_PRIVATE(obj) \
-	(G_TYPE_INSTANCE_GET_PRIVATE((obj), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW, XfdashboardLiveWorkspaceWindowPrivate))
-
-struct _XfdashboardLiveWorkspaceWindowPrivate
-{
-	/* Properties related */
-	XfdashboardWindowTrackerWindow		*window;
-
-	gboolean							showWindowContent;
-
-	gboolean							windowIconFillKeepAspect;
-	gboolean							windowIconXFill;
-	gboolean							windowIconYFill;
-	gfloat								windowIconXAlign;
-	gfloat								windowIconYAlign;
-	gfloat								windowIconXScale;
-	gfloat								windowIconYScale;
-	XfdashboardAnchorPoint				windowIconAnchorPoint;
-
-	/* Instance related */
-	ClutterActor						*windowIconActor;
-};
-
-/* Properties */
-enum
-{
-	PROP_0,
-
-	PROP_WINDOW,
-
-	PROP_SHOW_WINDOW_CONTENT,
-
-	PROP_WINDOW_ICON_FILL_KEEP_ASPECT,
-	PROP_WINDOW_ICON_X_FILL,
-	PROP_WINDOW_ICON_Y_FILL,
-	PROP_WINDOW_ICON_X_ALIGN,
-	PROP_WINDOW_ICON_Y_ALIGN,
-	PROP_WINDOW_ICON_X_SCALE,
-	PROP_WINDOW_ICON_Y_SCALE,
-	PROP_WINDOW_ICON_ANCHOR_POINT,
-
-	PROP_LAST
-};
-
-static GParamSpec* XfdashboardLiveWorkspaceWindowProperties[PROP_LAST]={ 0, };
-
-/* IMPLEMENTATION: Private variables and methods */
-
-/* IMPLEMENTATION: ClutterActor */
-
-/* Allocate position and size of actor and its children */
-static void _xfdashboard_live_workspace_window_allocate(ClutterActor *self,
-														const ClutterActorBox *inBox,
-														ClutterAllocationFlags inFlags)
-{
-	XfdashboardLiveWorkspaceWindowPrivate	*priv=XFDASHBOARD_LIVE_WORKSPACE_WINDOW(self)->priv;
-	gfloat									availableWidth, availableHeight;
-	ClutterContent							*content;
-	ClutterActorBox							childAllocation={ 0, };
-
-	/* Chain up to store the allocation of the actor */
-	CLUTTER_ACTOR_CLASS(xfdashboard_live_workspace_window_parent_class)->allocate(self, inBox, inFlags);
-
-	/* If window icon actor is not available stop here */
-	if(!priv->windowIconActor) return;
-
-	/* Get allocation size */
-	availableWidth=inBox->x2-inBox->x1;
-	availableHeight=inBox->y2-inBox->y1;
-
-	/* By defalt cover whole allocation area with window icon */
-	childAllocation.x1=0;
-	childAllocation.y1=0;
-	childAllocation.x2=availableWidth;
-	childAllocation.y2=availableHeight;
-
-	/* Get window icon actor's content */
-	content=clutter_actor_get_content(priv->windowIconActor);
-
-	/* Determine actor box allocation of window icon actor. We can skip calculation
-	 * if window icon actor should be expanded in both (x and y) direction.
-	 */
-	if(content &&
-		(!priv->windowIconXFill || !priv->windowIconYFill))
-	{
-		gfloat								iconWidth, iconHeight;
-
-		/* Get size of window icon */
-		clutter_content_get_preferred_size(content, &iconWidth, &iconHeight);
-		iconWidth*=priv->windowIconXScale;
-		iconHeight*=priv->windowIconYScale;
-
-		/* Determine left and right boundary of window icon
-		 * if window icon should not expand in X axis.
-		 */
-		if(!priv->windowIconXFill)
-		{
-			gfloat						offset;
-
-			/* Get boundary in X axis depending on gravity and scaled width */
-			offset=(priv->windowIconXAlign*availableWidth);
-			switch(priv->windowIconAnchorPoint)
-			{
-				/* Align to left boundary.
-				 * This is also the default if gravity is none or undefined.
-				 */
-				default:
-				case XFDASHBOARD_ANCHOR_POINT_NONE:
-				case XFDASHBOARD_ANCHOR_POINT_WEST:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH_WEST:
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH_WEST:
-					break;
-
-				/* Align to center of X axis */
-				case XFDASHBOARD_ANCHOR_POINT_CENTER:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH:
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH:
-					offset-=(iconWidth/2.0f);
-					break;
-
-				/* Align to right boundary */
-				case XFDASHBOARD_ANCHOR_POINT_EAST:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH_EAST:
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH_EAST:
-					offset-=iconWidth;
-					break;
-			}
-
-			/* Set boundary in X axis */
-			childAllocation.x1=offset;
-			childAllocation.x2=childAllocation.x1+iconWidth;
-		}
-
-		/* Determine left and right boundary of window icon
-		 * if window icon should not expand in X axis.
-		 */
-		if(!priv->windowIconYFill)
-		{
-			gfloat						offset;
-
-			/* Get boundary in Y axis depending on gravity and scaled width */
-			offset=(priv->windowIconYAlign*availableHeight);
-			switch(priv->windowIconAnchorPoint)
-			{
-				/* Align to upper boundary.
-				 * This is also the default if gravity is none or undefined.
-				 */
-				default:
-				case XFDASHBOARD_ANCHOR_POINT_NONE:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH_WEST:
-				case XFDASHBOARD_ANCHOR_POINT_NORTH_EAST:
-					break;
-
-				/* Align to center of Y axis */
-				case XFDASHBOARD_ANCHOR_POINT_CENTER:
-				case XFDASHBOARD_ANCHOR_POINT_WEST:
-				case XFDASHBOARD_ANCHOR_POINT_EAST:
-					offset-=(iconHeight/2.0f);
-					break;
-
-				/* Align to lower boundary */
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH:
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH_WEST:
-				case XFDASHBOARD_ANCHOR_POINT_SOUTH_EAST:
-					offset-=iconHeight;
-					break;
-			}
-
-			/* Set boundary in Y axis */
-			childAllocation.y1=offset;
-			childAllocation.y2=childAllocation.y1+iconHeight;
-		}
-	}
-
-	/* If window icon actor should fill in both (x and y) direction and it should
-	 * also keep the aspect then re-calculate allocation.
-	 */
-	if(content &&
-		priv->windowIconXFill &&
-		priv->windowIconYFill &&
-		priv->windowIconFillKeepAspect)
-	{
-		gfloat								iconWidth, iconHeight;
-		gfloat								iconAspectRatio;
-		gfloat								aspectWidth, aspectHeight;
-
-		/* Get size of window icon */
-		clutter_content_get_preferred_size(content, &iconWidth, &iconHeight);
-
-		/* Calculate aspect ratio and new position and size of window icon actor */
-		iconAspectRatio=iconWidth/iconHeight;
-		aspectWidth=availableWidth;
-		aspectHeight=aspectWidth*iconAspectRatio;
-
-		if(aspectHeight>availableHeight)
-		{
-			iconAspectRatio=iconHeight/iconWidth;
-			aspectHeight=availableHeight;
-			aspectWidth=aspectHeight*iconAspectRatio;
-		}
-
-		childAllocation.x1=(availableWidth-aspectWidth)/2.0f;
-		childAllocation.x2=childAllocation.x1+aspectWidth;
-		childAllocation.y1=(availableHeight-aspectHeight)/2.0f;
-		childAllocation.y2=childAllocation.y1+aspectHeight;
-	}
-
-	/* Clip allocation of window icon actor to this actor's allocation */
-	if(childAllocation.x1<0 ||
-		childAllocation.x2>availableWidth ||
-		childAllocation.y1<0 ||
-		childAllocation.y2>availableHeight)
-	{
-		gfloat								clipX, clipY;
-
-		clipX=0;
-		if(childAllocation.x1<0) clipX=-childAllocation.x1;
-
-		clipY=0;
-		if(childAllocation.y1<0) clipY=-childAllocation.y1;
-
-		clutter_actor_set_clip(priv->windowIconActor,
-								clipX,
-								clipY,
-								availableWidth,
-								availableHeight);
-	}
-		else
-		{
-			if(clutter_actor_has_clip(priv->windowIconActor))
-			{
-				clutter_actor_remove_clip(priv->windowIconActor);
-			}
-		}
-
-	/* Set allocation of window icon actor */
-	clutter_actor_allocate(priv->windowIconActor, &childAllocation, inFlags);
-}
-
-/* IMPLEMENTATION: GObject */
-
-/* Dispose this object */
-static void _xfdashboard_live_workspace_window_dispose(GObject *inObject)
-{
-	/* Release allocated variables */
-	XfdashboardLiveWorkspaceWindowPrivate	*priv=XFDASHBOARD_LIVE_WORKSPACE_WINDOW(inObject)->priv;
-
-	if(priv->windowIconActor)
-	{
-		clutter_actor_destroy(priv->windowIconActor);
-		priv->windowIconActor=NULL;
-	}
-
-	/* Call parent's class dispose method */
-	G_OBJECT_CLASS(xfdashboard_live_workspace_window_parent_class)->dispose(inObject);
-}
-
-/* Set/get properties */
-static void _xfdashboard_live_workspace_window_set_property(GObject *inObject,
-													guint inPropID,
-													const GValue *inValue,
-													GParamSpec *inSpec)
-{
-	XfdashboardLiveWorkspaceWindow			*self=XFDASHBOARD_LIVE_WORKSPACE_WINDOW(inObject);
-
-	switch(inPropID)
-	{
-		case PROP_WINDOW:
-			xfdashboard_live_workspace_window_set_window(self, XFDASHBOARD_WINDOW_TRACKER_WINDOW(g_value_get_object(inValue)));
-			break;
-
-		case PROP_SHOW_WINDOW_CONTENT:
-			xfdashboard_live_workspace_window_set_show_window_content(self, g_value_get_boolean(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_FILL_KEEP_ASPECT:
-			xfdashboard_live_workspace_window_set_window_icon_fill_keep_aspect(self, g_value_get_boolean(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_X_FILL:
-			xfdashboard_live_workspace_window_set_window_icon_x_fill(self, g_value_get_boolean(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_Y_FILL:
-			xfdashboard_live_workspace_window_set_window_icon_y_fill(self, g_value_get_boolean(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_X_ALIGN:
-			xfdashboard_live_workspace_window_set_window_icon_x_align(self, g_value_get_float(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_Y_ALIGN:
-			xfdashboard_live_workspace_window_set_window_icon_y_align(self, g_value_get_float(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_X_SCALE:
-			xfdashboard_live_workspace_window_set_window_icon_x_scale(self, g_value_get_float(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_Y_SCALE:
-			xfdashboard_live_workspace_window_set_window_icon_y_scale(self, g_value_get_float(inValue));
-			break;
-
-		case PROP_WINDOW_ICON_ANCHOR_POINT:
-			xfdashboard_live_workspace_window_set_window_icon_anchor_point(self, g_value_get_enum(inValue));
-			break;
-
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(inObject, inPropID, inSpec);
-			break;
-	}
-}
-
-static void _xfdashboard_live_workspace_window_get_property(GObject *inObject,
-													guint inPropID,
-													GValue *outValue,
-													GParamSpec *inSpec)
-{
-	XfdashboardLiveWorkspaceWindow			*self=XFDASHBOARD_LIVE_WORKSPACE_WINDOW(inObject);
-	XfdashboardLiveWorkspaceWindowPrivate	*priv=self->priv;
-
-	switch(inPropID)
-	{
-		case PROP_WINDOW:
-			g_value_set_object(outValue, priv->window);
-			break;
-
-		case PROP_SHOW_WINDOW_CONTENT:
-			g_value_set_boolean(outValue, priv->showWindowContent);
-			break;
-
-		case PROP_WINDOW_ICON_FILL_KEEP_ASPECT:
-			g_value_set_boolean(outValue, priv->windowIconFillKeepAspect);
-			break;
-
-		case PROP_WINDOW_ICON_X_FILL:
-			g_value_set_boolean(outValue, priv->windowIconXFill);
-			break;
-
-		case PROP_WINDOW_ICON_Y_FILL:
-			g_value_set_boolean(outValue, priv->windowIconYFill);
-			break;
-
-		case PROP_WINDOW_ICON_X_ALIGN:
-			g_value_set_float(outValue, priv->windowIconXAlign);
-			break;
-
-		case PROP_WINDOW_ICON_Y_ALIGN:
-			g_value_set_float(outValue, priv->windowIconYAlign);
-			break;
-
-		case PROP_WINDOW_ICON_X_SCALE:
-			g_value_set_float(outValue, priv->windowIconXScale);
-			break;
-
-		case PROP_WINDOW_ICON_Y_SCALE:
-			g_value_set_float(outValue, priv->windowIconYScale);
-			break;
-
-		case PROP_WINDOW_ICON_ANCHOR_POINT:
-			g_value_set_enum(outValue, priv->windowIconAnchorPoint);
-			break;
-
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(inObject, inPropID, inSpec);
-			break;
-	}
-}
-
-/* Class initialization
- * Override functions in parent classes and define properties
- * and signals
- */
-static void xfdashboard_live_workspace_window_class_init(XfdashboardLiveWorkspaceWindowClass *klass)
-{
-	XfdashboardActorClass	*actorClass=XFDASHBOARD_ACTOR_CLASS(klass);
-	ClutterActorClass		*clutterActorClass=CLUTTER_ACTOR_CLASS(klass);
-	GObjectClass			*gobjectClass=G_OBJECT_CLASS(klass);
-
-	/* Override functions */
-	gobjectClass->dispose=_xfdashboard_live_workspace_window_dispose;
-	gobjectClass->set_property=_xfdashboard_live_workspace_window_set_property;
-	gobjectClass->get_property=_xfdashboard_live_workspace_window_get_property;
-
-	clutterActorClass->allocate=_xfdashboard_live_workspace_window_allocate;
-
-	/* Set up private structure */
-	g_type_class_add_private(klass, sizeof(XfdashboardLiveWorkspaceWindowPrivate));
-
-	/* Define properties */
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW]=
-		g_param_spec_object("window",
-							_("Window"),
-							_("The window to handle and display"),
-							XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_SHOW_WINDOW_CONTENT]=
-		g_param_spec_boolean("show-window-content",
-								_("show-window-content"),
-								_("If TRUE the window content should be shown otherwise the window's icon will be shown"),
-								TRUE,
-								G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_FILL_KEEP_ASPECT]=
-		g_param_spec_boolean("window-icon-fill-keep-aspect",
-							_("Window icon fill keep aspect"),
-							_("Whether the window icon should keep their aspect when filling space. Only applies when filling in X and Y direction."),
-							FALSE,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_FILL]=
-		g_param_spec_boolean("window-icon-x-fill",
-							_("Window icon X fill"),
-							_("Whether the window icon should fill up horizontal space"),
-							TRUE,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_FILL]=
-		g_param_spec_boolean("window-icon-y-fill",
-							_("Window icon y fill"),
-							_("Whether the window icon should fill up vertical space"),
-							TRUE,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_ALIGN]=
-		g_param_spec_float("window-icon-x-align",
-							_("Window icon X align"),
-							_("The alignment of the window icon on the X axis within the allocation in normalized coordinate between 0 and 1"),
-							0.0f, 1.0f,
-							0.0f,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_ALIGN]=
-		g_param_spec_float("window-icon-y-align",
-							_("Window icon Y align"),
-							_("The alignment of the window icon on the Y axis within the allocation in normalized coordinate between 0 and 1"),
-							0.0f, 1.0f,
-							0.0f,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_SCALE]=
-		g_param_spec_float("window-icon-x-scale",
-							_("Window icon X scale"),
-							_("Scale factor of window icon on the X axis"),
-							0.0f, G_MAXFLOAT,
-							1.0f,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_SCALE]=
-		g_param_spec_float("window-icon-y-scale",
-							_("Window icon Y scale"),
-							_("Scale factor of window icon on the Y axis"),
-							0.0f, G_MAXFLOAT,
-							1.0f,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_ANCHOR_POINT]=
-		g_param_spec_enum("window-icon-anchor-point",
-							_("Window icon anchor point"),
-							_("The anchor point of window icon"),
-							XFDASHBOARD_TYPE_ANCHOR_POINT,
-							XFDASHBOARD_ANCHOR_POINT_NONE,
-							G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	g_object_class_install_properties(gobjectClass, PROP_LAST, XfdashboardLiveWorkspaceWindowProperties);
-
-	/* Define stylable properties */
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_SHOW_WINDOW_CONTENT]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_FILL_KEEP_ASPECT]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_FILL]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_FILL]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_ALIGN]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_ALIGN]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_SCALE]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_SCALE]);
-	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_ANCHOR_POINT]);
-}
-
-/* Object initialization
- * Create private structure and set up default values
- */
-static void xfdashboard_live_workspace_window_init(XfdashboardLiveWorkspaceWindow *self)
-{
-	XfdashboardLiveWorkspaceWindowPrivate	*priv;
-
-	priv=self->priv=XFDASHBOARD_LIVE_WORKSPACE_WINDOW_GET_PRIVATE(self);
-
-	/* Set up default values */
-	priv->window=NULL;
-	priv->showWindowContent=TRUE;
-	priv->windowIconFillKeepAspect=FALSE;
-	priv->windowIconXFill=TRUE;
-	priv->windowIconYFill=TRUE;
-	priv->windowIconXAlign=0.0f;
-	priv->windowIconYAlign=0.0f;
-	priv->windowIconXScale=1.0f;
-	priv->windowIconYScale=1.0f;
-	priv->windowIconAnchorPoint=XFDASHBOARD_ANCHOR_POINT_NONE;
-
-	/* This actor reacts on events */
-	clutter_actor_set_reactive(CLUTTER_ACTOR(self), TRUE);
-
-	/* Set up window icon actor */
-	priv->windowIconActor=xfdashboard_actor_new();
-	clutter_actor_add_child(CLUTTER_ACTOR(self), CLUTTER_ACTOR(priv->windowIconActor));
-}
-
-/* IMPLEMENTATION: Public API */
-
-/* Create new actor */
-ClutterActor* xfdashboard_live_workspace_window_new(void)
-{
-	return(CLUTTER_ACTOR(g_object_new(XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW, NULL)));
-}
-
-ClutterActor* xfdashboard_live_workspace_window_new_for_window(XfdashboardWindowTrackerWindow *inWindow)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow), NULL);
-
-	return(CLUTTER_ACTOR(g_object_new(XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW,
-										"window", inWindow,
-										NULL)));
-}
-
-/* Get/set window to show */
-XfdashboardWindowTrackerWindow* xfdashboard_live_workspace_window_get_window(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), NULL);
-
-	return(self->priv->window);
-}
-
-void xfdashboard_live_workspace_window_set_window(XfdashboardLiveWorkspaceWindow *self, XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardLiveWorkspaceWindowPrivate	*priv;
-	ClutterContent							*content;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow));
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->window!=inWindow)
-	{
-		/* Set value */
-		priv->window=inWindow;
-
-		/* Set up window content if window is set and should be shown ... */
-		if(priv->window && priv->showWindowContent)
-		{
-			/* Set window content to show */
-			content=xfdashboard_window_content_new_for_window(priv->window);
-			clutter_actor_set_content(CLUTTER_ACTOR(self), content);
-			g_object_unref(content);
-
-			/* Remove image content from window icon actor and hide it*/
-			if(priv->windowIconActor)
-			{
-				clutter_actor_set_content(CLUTTER_ACTOR(priv->windowIconActor), NULL);
-				clutter_actor_hide(priv->windowIconActor);
-			}
-		}
-			/* ... otherwise remove window content */
-			else
-			{
-				/* Remove window content */
-				clutter_actor_set_content(CLUTTER_ACTOR(self), NULL);
-
-				/* Set window icon as image at window icon actor and show it */
-				if(priv->windowIconActor)
-				{
-					content=xfdashboard_image_content_new_for_pixbuf(xfdashboard_window_tracker_window_get_icon(priv->window));
-					clutter_actor_set_content(CLUTTER_ACTOR(priv->windowIconActor), content);
-					g_object_unref(content);
-
-					clutter_actor_show(priv->windowIconActor);
-				}
-			}
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW]);
-	}
-}
-
-/* Get/set if the window content should be shown or the window's icon */
-gboolean xfdashboard_live_workspace_window_get_show_window_content(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), TRUE);
-
-	return(self->priv->showWindowContent);
-}
-
-void xfdashboard_live_workspace_window_set_show_window_content(XfdashboardLiveWorkspaceWindow *self, gboolean inShowWindowContent)
-{
-	XfdashboardLiveWorkspaceWindowPrivate	*priv;
-	ClutterContent							*content;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->showWindowContent!=inShowWindowContent)
-	{
-		/* Set value */
-		priv->showWindowContent=inShowWindowContent;
-
-		/* Set up window content if window is set and should be shown ... */
-		if(priv->window && priv->showWindowContent)
-		{
-			/* Set window content to show */
-			content=xfdashboard_window_content_new_for_window(priv->window);
-			clutter_actor_set_content(CLUTTER_ACTOR(self), content);
-			g_object_unref(content);
-
-			/* Remove image content from window icon actor and hide it*/
-			if(priv->windowIconActor)
-			{
-				clutter_actor_set_content(CLUTTER_ACTOR(priv->windowIconActor), NULL);
-				clutter_actor_hide(priv->windowIconActor);
-			}
-		}
-			/* ... otherwise remove window content */
-			else
-			{
-				/* Remove window content */
-				clutter_actor_set_content(CLUTTER_ACTOR(self), NULL);
-
-				/* Set window icon as image at window icon actor and show it */
-				if(priv->windowIconActor)
-				{
-					content=xfdashboard_image_content_new_for_pixbuf(xfdashboard_window_tracker_window_get_icon(priv->window));
-					clutter_actor_set_content(CLUTTER_ACTOR(priv->windowIconActor), content);
-					g_object_unref(content);
-
-					clutter_actor_show(priv->windowIconActor);
-				}
-			}
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_SHOW_WINDOW_CONTENT]);
-	}
-}
-
-/* Get/set keep aspect when filling allocation area of window icon */
-gboolean xfdashboard_live_workspace_window_get_window_icon_fill_keep_aspect(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), FALSE);
-
-	return(self->priv->windowIconFillKeepAspect);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_fill_keep_aspect(XfdashboardLiveWorkspaceWindow *self, const gboolean inKeepAspect)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconFillKeepAspect!=inKeepAspect)
-	{
-		/* Set value */
-		priv->windowIconFillKeepAspect=inKeepAspect;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_FILL_KEEP_ASPECT]);
-	}
-}
-
-/* Get/set x fill of window icon */
-gboolean xfdashboard_live_workspace_window_get_window_icon_x_fill(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), FALSE);
-
-	return(self->priv->windowIconXFill);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_x_fill(XfdashboardLiveWorkspaceWindow *self, const gboolean inFill)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconXFill!=inFill)
-	{
-		/* Set value */
-		priv->windowIconXFill=inFill;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_FILL]);
-	}
-}
-
-/* Get/set y fill of window icon */
-gboolean xfdashboard_live_workspace_window_get_window_icon_y_fill(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), FALSE);
-
-	return(self->priv->windowIconYFill);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_y_fill(XfdashboardLiveWorkspaceWindow *self, const gboolean inFill)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconYFill!=inFill)
-	{
-		/* Set value */
-		priv->windowIconYFill=inFill;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_FILL]);
-	}
-}
-
-/* Get/set x align of window icon */
-gfloat xfdashboard_live_workspace_window_get_window_icon_x_align(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), 0.0f);
-
-	return(self->priv->windowIconXAlign);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_x_align(XfdashboardLiveWorkspaceWindow *self, const gfloat inAlign)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(inAlign>=0.0f && inAlign<=1.0f);
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconXAlign!=inAlign)
-	{
-		/* Set value */
-		priv->windowIconXAlign=inAlign;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_ALIGN]);
-	}
-}
-
-/* Get/set y align of window icon */
-gfloat xfdashboard_live_workspace_window_get_window_icon_y_align(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), 0.0f);
-
-	return(self->priv->windowIconYAlign);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_y_align(XfdashboardLiveWorkspaceWindow *self, const gfloat inAlign)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(inAlign>=0.0f && inAlign<=1.0f);
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconYAlign!=inAlign)
-	{
-		/* Set value */
-		priv->windowIconYAlign=inAlign;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_ALIGN]);
-	}
-}
-
-/* Get/set x scale of window icon */
-gfloat xfdashboard_live_workspace_window_get_window_icon_x_scale(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), 0.0f);
-
-	return(self->priv->windowIconXScale);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_x_scale(XfdashboardLiveWorkspaceWindow *self, const gfloat inScale)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(inScale>=0.0f);
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconXScale!=inScale)
-	{
-		/* Set value */
-		priv->windowIconXScale=inScale;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_X_SCALE]);
-	}
-}
-
-/* Get/set y scale of window icon */
-gfloat xfdashboard_live_workspace_window_get_window_icon_y_scale(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), 0.0f);
-
-	return(self->priv->windowIconYScale);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_y_scale(XfdashboardLiveWorkspaceWindow *self, const gfloat inScale)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(inScale>=0.0f);
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconYScale!=inScale)
-	{
-		/* Set value */
-		priv->windowIconYScale=inScale;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_Y_SCALE]);
-	}
-}
-
-/* Get/set gravity (anchor point) of window icon */
-XfdashboardAnchorPoint xfdashboard_live_workspace_window_get_window_icon_anchor_point(XfdashboardLiveWorkspaceWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self), XFDASHBOARD_ANCHOR_POINT_NONE);
-
-	return(self->priv->windowIconAnchorPoint);
-}
-
-void xfdashboard_live_workspace_window_set_window_icon_anchor_point(XfdashboardLiveWorkspaceWindow *self, const XfdashboardAnchorPoint inAnchorPoint)
-{
-	XfdashboardLiveWorkspaceWindowPrivate		*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(self));
-	g_return_if_fail(inAnchorPoint>=XFDASHBOARD_ANCHOR_POINT_NONE);
-	g_return_if_fail(inAnchorPoint<=XFDASHBOARD_ANCHOR_POINT_CENTER);
-
-	priv=self->priv;
-
-	/* Set value if changed */
-	if(priv->windowIconAnchorPoint!=inAnchorPoint)
-	{
-		/* Set value */
-		priv->windowIconAnchorPoint=inAnchorPoint;
-
-		/* Force a redraw of this actor */
-		clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-		/* Notify about property change */
-		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceWindowProperties[PROP_WINDOW_ICON_ANCHOR_POINT]);
-	}
-}
diff --git a/xfdashboard/live-workspace-window.h b/xfdashboard/live-workspace-window.h
deleted file mode 100644
index 2a31ae7..0000000
--- a/xfdashboard/live-workspace-window.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * live-workspace-window: An actor used at workspace actor showing
- *                        a window and its content or its window icon
- *                        
- * 
- * Copyright 2012-2015 Stephan Haller <nomad at froevel.de>
- * 
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- * 
- * 
- */
-
-#ifndef __XFDASHBOARD_LIVE_WORKSPACE_WINDOW__
-#define __XFDASHBOARD_LIVE_WORKSPACE_WINDOW__
-
-#include <clutter/clutter.h>
-
-#include "background.h"
-#include "types.h"
-#include "window-tracker-window.h"
-
-G_BEGIN_DECLS
-
-#define XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW					(xfdashboard_live_workspace_window_get_type())
-#define XFDASHBOARD_LIVE_WORKSPACE_WINDOW(obj)					(G_TYPE_CHECK_INSTANCE_CAST((obj), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW, XfdashboardLiveWorkspaceWindow))
-#define XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(obj)				(G_TYPE_CHECK_INSTANCE_TYPE((obj), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW))
-#define XFDASHBOARD_LIVE_WORKSPACE_WINDOW_CLASS(klass)			(G_TYPE_CHECK_CLASS_CAST((klass), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW, XfdashboardLiveWorkspaceWindowClass))
-#define XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW_CLASS(klass)		(G_TYPE_CHECK_CLASS_TYPE((klass), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW))
-#define XFDASHBOARD_LIVE_WORKSPACE_WINDOW_GET_CLASS(obj)		(G_TYPE_INSTANCE_GET_CLASS((obj), XFDASHBOARD_TYPE_LIVE_WORKSPACE_WINDOW, XfdashboardLiveWorkspaceWindowClass))
-
-typedef struct _XfdashboardLiveWorkspaceWindow					XfdashboardLiveWorkspaceWindow;
-typedef struct _XfdashboardLiveWorkspaceWindowClass				XfdashboardLiveWorkspaceWindowClass;
-typedef struct _XfdashboardLiveWorkspaceWindowPrivate			XfdashboardLiveWorkspaceWindowPrivate;
-
-struct _XfdashboardLiveWorkspaceWindow
-{
-	/* Parent instance */
-	XfdashboardBackground					parent_instance;
-
-	/* Private structure */
-	XfdashboardLiveWorkspaceWindowPrivate	*priv;
-};
-
-struct _XfdashboardLiveWorkspaceWindowClass
-{
-	/*< private >*/
-	/* Parent class */
-	XfdashboardBackgroundClass				parent_class;
-
-	/*< public >*/
-	/* Virtual functions */
-};
-
-/* Public API */
-GType xfdashboard_live_workspace_window_get_type(void) G_GNUC_CONST;
-
-ClutterActor* xfdashboard_live_workspace_window_new(void);
-ClutterActor* xfdashboard_live_workspace_window_new_for_window(XfdashboardWindowTrackerWindow *inWindow);
-
-XfdashboardWindowTrackerWindow* xfdashboard_live_workspace_window_get_window(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window(XfdashboardLiveWorkspaceWindow *self, XfdashboardWindowTrackerWindow *inWindow);
-
-gboolean xfdashboard_live_workspace_window_get_show_window_content(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_show_window_content(XfdashboardLiveWorkspaceWindow *self, gboolean inShowWindowContent);
-
-gboolean xfdashboard_live_workspace_window_get_window_icon_fill_keep_aspect(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_fill_keep_aspect(XfdashboardLiveWorkspaceWindow *self, const gboolean inKeepAspect);
-
-gboolean xfdashboard_live_workspace_window_get_window_icon_x_fill(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_x_fill(XfdashboardLiveWorkspaceWindow *self, const gboolean inFill);
-
-gboolean xfdashboard_live_workspace_window_get_window_icon_y_fill(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_y_fill(XfdashboardLiveWorkspaceWindow *self, const gboolean inFill);
-
-gfloat xfdashboard_live_workspace_window_get_window_icon_x_align(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_x_align(XfdashboardLiveWorkspaceWindow *self, const gfloat inAlign);
-
-gfloat xfdashboard_live_workspace_window_get_window_icon_y_align(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_y_align(XfdashboardLiveWorkspaceWindow *self, const gfloat inAlign);
-
-gfloat xfdashboard_live_workspace_window_get_window_icon_x_scale(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_x_scale(XfdashboardLiveWorkspaceWindow *self, const gfloat inScale);
-
-gfloat xfdashboard_live_workspace_window_get_window_icon_y_scale(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_y_scale(XfdashboardLiveWorkspaceWindow *self, const gfloat inScale);
-
-XfdashboardAnchorPoint xfdashboard_live_workspace_window_get_window_icon_anchor_point(XfdashboardLiveWorkspaceWindow *self);
-void xfdashboard_live_workspace_window_set_window_icon_anchor_point(XfdashboardLiveWorkspaceWindow *self, const XfdashboardAnchorPoint inAnchorPoint);
-
-G_END_DECLS
-
-#endif	/* __XFDASHBOARD_LIVE_WORKSPACE_WINDOW__ */
diff --git a/xfdashboard/live-workspace.c b/xfdashboard/live-workspace.c
index 7d4089a..d195a8e 100644
--- a/xfdashboard/live-workspace.c
+++ b/xfdashboard/live-workspace.c
@@ -37,9 +37,9 @@
 #include "live-window.h"
 #include "window-tracker.h"
 #include "click-action.h"
-#include "enums.h"
-#include "live-workspace-window.h"
 #include "window-content.h"
+#include "image-content.h"
+#include "enums.h"
 
 /* Define this class in GObject system */
 G_DEFINE_TYPE(XfdashboardLiveWorkspace,
@@ -54,6 +54,7 @@ struct _XfdashboardLiveWorkspacePrivate
 {
 	/* Properties related */
 	XfdashboardWindowTrackerWorkspace		*workspace;
+	gboolean								showWindowContent;
 	XfdashboardStageBackgroundImageType		backgroundType;
 
 	/* Instance related */
@@ -67,6 +68,7 @@ enum
 	PROP_0,
 
 	PROP_WORKSPACE,
+	PROP_SHOW_WINDOW_CONTENT,
 	PROP_BACKGROUND_IMAGE_TYPE,
 
 	PROP_LAST
@@ -85,6 +87,7 @@ enum
 static guint XfdashboardLiveWorkspaceSignals[SIGNAL_LAST]={ 0, };
 
 /* IMPLEMENTATION: Private variables and methods */
+#define WINDOW_DATA_KEY		"window"
 
 /* Check if window should be shown */
 static gboolean _xfdashboard_live_workspace_is_visible_window(XfdashboardLiveWorkspace *self,
@@ -114,9 +117,9 @@ static gboolean _xfdashboard_live_workspace_is_visible_window(XfdashboardLiveWor
 static ClutterActor* _xfdashboard_live_workspace_find_by_window(XfdashboardLiveWorkspace *self,
 																XfdashboardWindowTrackerWindow *inWindow)
 {
-	ClutterActor					*child;
-	ClutterActorIter				iter;
-	XfdashboardWindowTrackerWindow	*window;
+	ClutterActor		*child;
+	ClutterActorIter	iter;
+	gpointer			window;
 
 	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE(self), NULL);
 	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow), NULL);
@@ -125,11 +128,11 @@ static ClutterActor* _xfdashboard_live_workspace_find_by_window(XfdashboardLiveW
 	clutter_actor_iter_init(&iter, CLUTTER_ACTOR(self));
 	while(clutter_actor_iter_next(&iter, &child))
 	{
-		/* Check if it is really a window actor */
-		if(!XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(child)) continue;
+		/* Check if it is really a window actor by retrieving associated window */
+		window=g_object_get_data(G_OBJECT(child), WINDOW_DATA_KEY);
+		if(!window || !XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(window)) continue;
 
 		/* Check if this is the actor showing requested window */
-		window=xfdashboard_live_workspace_window_get_window(XFDASHBOARD_LIVE_WORKSPACE_WINDOW(child));
 		if(window==inWindow) return(child);
 	}
 
@@ -143,6 +146,7 @@ static ClutterActor* _xfdashboard_live_workspace_create_and_add_window_actor(Xfd
 {
 	XfdashboardLiveWorkspacePrivate		*priv;
 	ClutterActor						*actor;
+	ClutterContent						*content;
 	GList								*windows;
 	ClutterActor						*lastWindowActor;
 	XfdashboardWindowTrackerWindow		*window;
@@ -187,7 +191,18 @@ static ClutterActor* _xfdashboard_live_workspace_create_and_add_window_actor(Xfd
 		else
 		{
 			/* Create actor */
-			actor=xfdashboard_live_workspace_window_new_for_window(inWindow);
+			actor=clutter_actor_new();
+			g_object_set_data(G_OBJECT(actor), WINDOW_DATA_KEY, inWindow);
+			if(priv->showWindowContent)
+			{
+				content=xfdashboard_window_content_new_for_window(inWindow);
+			}
+				else
+				{
+					content=xfdashboard_image_content_new_for_pixbuf(xfdashboard_window_tracker_window_get_icon(inWindow));
+				}
+			clutter_actor_set_content(actor, content);
+			g_object_unref(content);
 
 			/* Add new actor at right stacking position */
 			clutter_actor_insert_child_above(CLUTTER_ACTOR(self), actor, lastWindowActor);
@@ -441,8 +456,8 @@ static void _xfdashboard_live_workspace_get_preferred_width(ClutterActor *self,
 
 /* Allocate position and size of actor and its children */
 static void _xfdashboard_live_workspace_allocate(ClutterActor *self,
-													const ClutterActorBox *inBox,
-													ClutterAllocationFlags inFlags)
+												const ClutterActorBox *inBox,
+												ClutterAllocationFlags inFlags)
 {
 	XfdashboardLiveWorkspacePrivate		*priv=XFDASHBOARD_LIVE_WORKSPACE(self)->priv;
 	gfloat								availableWidth, availableHeight;
@@ -482,11 +497,11 @@ static void _xfdashboard_live_workspace_allocate(ClutterActor *self,
 	while(clutter_actor_iter_next(&iter, &child))
 	{
 		/* Get window actor */
-		if(!XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(child)) continue;
+		if(!CLUTTER_IS_ACTOR(child)) continue;
 
-		/* Get window of actor */
-		window=xfdashboard_live_workspace_window_get_window(XFDASHBOARD_LIVE_WORKSPACE_WINDOW(child));
-		if(!window) continue;
+		/* Get associated window */
+		window=g_object_get_data(G_OBJECT(child), WINDOW_DATA_KEY);
+		if(!window || !XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(window)) continue;
 
 		/* Get real size of child */
 		xfdashboard_window_tracker_window_get_position_size(window, &x, &y, &w, &h);
@@ -511,6 +526,8 @@ static void _xfdashboard_live_workspace_dispose(GObject *inObject)
 	XfdashboardLiveWorkspacePrivate		*priv=self->priv;
 
 	/* Dispose allocated resources */
+	g_object_set_data(inObject, WINDOW_DATA_KEY, NULL);
+
 	if(priv->backgroundImageLayer)
 	{
 		clutter_actor_destroy(priv->backgroundImageLayer);
@@ -548,6 +565,10 @@ static void _xfdashboard_live_workspace_set_property(GObject *inObject,
 			xfdashboard_live_workspace_set_workspace(self, g_value_get_object(inValue));
 			break;
 
+		case PROP_SHOW_WINDOW_CONTENT:
+			xfdashboard_live_workspace_set_show_window_content(self, g_value_get_boolean(inValue));
+			break;
+
 		case PROP_BACKGROUND_IMAGE_TYPE:
 			xfdashboard_live_workspace_set_background_image_type(self, g_value_get_enum(inValue));
 			break;
@@ -571,6 +592,10 @@ static void _xfdashboard_live_workspace_get_property(GObject *inObject,
 			g_value_set_object(outValue, self->priv->workspace);
 			break;
 
+		case PROP_SHOW_WINDOW_CONTENT:
+			g_value_set_boolean(outValue, self->priv->showWindowContent);
+			break;
+
 		case PROP_BACKGROUND_IMAGE_TYPE:
 			g_value_set_enum(outValue, self->priv->backgroundType);
 			break;
@@ -611,6 +636,13 @@ static void xfdashboard_live_workspace_class_init(XfdashboardLiveWorkspaceClass
 								XFDASHBOARD_TYPE_WINDOW_TRACKER_WORKSPACE,
 								G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
+	XfdashboardLiveWorkspaceProperties[PROP_SHOW_WINDOW_CONTENT]=
+		g_param_spec_boolean("show-window-content",
+								_("show-window-content"),
+								_("If TRUE the window content should be shown otherwise the window's icon will be shown"),
+								TRUE,
+								G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
 	XfdashboardLiveWorkspaceProperties[PROP_BACKGROUND_IMAGE_TYPE]=
 		g_param_spec_enum("background-image-type",
 							_("Background image type"),
@@ -622,6 +654,7 @@ static void xfdashboard_live_workspace_class_init(XfdashboardLiveWorkspaceClass
 	g_object_class_install_properties(gobjectClass, PROP_LAST, XfdashboardLiveWorkspaceProperties);
 
 	/* Define stylable properties */
+	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceProperties[PROP_SHOW_WINDOW_CONTENT]);
 	xfdashboard_actor_install_stylable_property(actorClass, XfdashboardLiveWorkspaceProperties[PROP_BACKGROUND_IMAGE_TYPE]);
 
 	/* Define signals */
@@ -650,6 +683,7 @@ static void xfdashboard_live_workspace_init(XfdashboardLiveWorkspace *self)
 	/* Set default values */
 	priv->windowTracker=xfdashboard_window_tracker_get_default();
 	priv->workspace=NULL;
+	priv->showWindowContent=TRUE;
 	priv->backgroundType=XFDASHBOARD_STAGE_BACKGROUND_IMAGE_TYPE_NONE;
 
 	/* Set up this actor */
@@ -720,6 +754,7 @@ XfdashboardWindowTrackerWorkspace* xfdashboard_live_workspace_get_workspace(Xfda
 void xfdashboard_live_workspace_set_workspace(XfdashboardLiveWorkspace *self, XfdashboardWindowTrackerWorkspace *inWorkspace)
 {
 	XfdashboardLiveWorkspacePrivate		*priv;
+	ClutterContent						*content;
 	XfdashboardWindowTrackerWindow		*window;
 	ClutterActor						*child;
 	ClutterActorIter					iter;
@@ -751,7 +786,11 @@ void xfdashboard_live_workspace_set_workspace(XfdashboardLiveWorkspace *self, Xf
 	while(clutter_actor_iter_next(&iter, &child))
 	{
 		/* Get window actor */
-		if(!XFDASHBOARD_IS_LIVE_WORKSPACE_WINDOW(child)) continue;
+		if(!CLUTTER_IS_ACTOR(child)) continue;
+
+		/* Check if it is really a window actor by retrieving associated window */
+		window=g_object_get_data(G_OBJECT(child), WINDOW_DATA_KEY);
+		if(!window || !XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(window)) continue;
 
 		/* Destroy window actor */
 		clutter_actor_destroy(child);
@@ -768,7 +807,10 @@ void xfdashboard_live_workspace_set_workspace(XfdashboardLiveWorkspace *self, Xf
 		/* Create window actor if window is visible */
 		if(!_xfdashboard_live_workspace_is_visible_window(self, window)) continue;
 
-		actor=_xfdashboard_live_workspace_create_and_add_window_actor(self, window);
+		actor=clutter_actor_new();
+		content=xfdashboard_window_content_new_for_window(window);
+		clutter_actor_set_content(actor, content);
+		g_object_unref(content);
 
 		/* Insert new actor at bottom */
 		clutter_actor_insert_child_above(CLUTTER_ACTOR(self), actor, NULL);
@@ -778,6 +820,64 @@ void xfdashboard_live_workspace_set_workspace(XfdashboardLiveWorkspace *self, Xf
 	g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceProperties[PROP_WORKSPACE]);
 }
 
+/* Get/set if the window content should be shown or the window's icon */
+gboolean xfdashboard_live_workspace_get_show_window_content(XfdashboardLiveWorkspace *self)
+{
+	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE(self), TRUE);
+
+	return(self->priv->showWindowContent);
+}
+
+void xfdashboard_live_workspace_set_show_window_content(XfdashboardLiveWorkspace *self, gboolean inShowWindowContent)
+{
+	XfdashboardLiveWorkspacePrivate		*priv;
+	ClutterContent						*content;
+	XfdashboardWindowTrackerWindow		*window;
+	ClutterActor						*child;
+	ClutterActorIter					iter;
+
+	g_return_if_fail(XFDASHBOARD_IS_LIVE_WORKSPACE(self));
+
+	priv=self->priv;
+
+	/* Set value if changed */
+	if(priv->showWindowContent!=inShowWindowContent)
+	{
+		/* Set value */
+		priv->showWindowContent=inShowWindowContent;
+
+		/* Recreate window actors in workspace */
+		clutter_actor_iter_init(&iter, CLUTTER_ACTOR(self));
+		while(clutter_actor_iter_next(&iter, &child))
+		{
+			/* Get window actor */
+			if(!CLUTTER_IS_ACTOR(child)) continue;
+
+			/* Check if it is really a window actor by retrieving associated window */
+			window=g_object_get_data(G_OBJECT(child), WINDOW_DATA_KEY);
+			if(!window || !XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(window)) continue;
+
+			/* Replace content depending on this new value if neccessary */
+			content=clutter_actor_get_content(child);
+			if(priv->showWindowContent && !XFDASHBOARD_IS_WINDOW_CONTENT(content))
+			{
+				content=xfdashboard_window_content_new_for_window(window);
+				clutter_actor_set_content(child, content);
+				g_object_unref(content);
+			}
+				else if(!priv->showWindowContent && !XFDASHBOARD_IS_IMAGE_CONTENT(content))
+				{
+					content=xfdashboard_image_content_new_for_pixbuf(xfdashboard_window_tracker_window_get_icon(window));
+					clutter_actor_set_content(child, content);
+					g_object_unref(content);
+				}
+		}
+
+		/* Notify about property change */
+		g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWorkspaceProperties[PROP_SHOW_WINDOW_CONTENT]);
+	}
+}
+
 /* Get/set background type */
 XfdashboardStageBackgroundImageType xfdashboard_live_workspace_get_background_image_type(XfdashboardLiveWorkspace *self)
 {
diff --git a/xfdashboard/live-workspace.h b/xfdashboard/live-workspace.h
index 898f23b..bfac478 100644
--- a/xfdashboard/live-workspace.h
+++ b/xfdashboard/live-workspace.h
@@ -72,6 +72,9 @@ ClutterActor* xfdashboard_live_workspace_new_for_workspace(XfdashboardWindowTrac
 XfdashboardWindowTrackerWorkspace* xfdashboard_live_workspace_get_workspace(XfdashboardLiveWorkspace *self);
 void xfdashboard_live_workspace_set_workspace(XfdashboardLiveWorkspace *self, XfdashboardWindowTrackerWorkspace *inWorkspace);
 
+gboolean xfdashboard_live_workspace_get_show_window_content(XfdashboardLiveWorkspace *self);
+void xfdashboard_live_workspace_set_show_window_content(XfdashboardLiveWorkspace *self, gboolean inShowWindowContent);
+
 XfdashboardStageBackgroundImageType xfdashboard_live_workspace_get_background_image_type(XfdashboardLiveWorkspace *self);
 void xfdashboard_live_workspace_set_background_image_type(XfdashboardLiveWorkspace *self, XfdashboardStageBackgroundImageType inType);
 

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


More information about the Xfce4-commits mailing list