[Xfce4-commits] [apps/xfdashboard] 02/02: Remove redundant code by deriving XfdashboardLiveWindow from newly created XfdashboardLiveWindowSimple and add controls, title and icon to it

noreply at xfce.org noreply at xfce.org
Fri Jan 20 08:27:00 CET 2017


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

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

commit 86727ab4d86f9af52733b799b8eb8909d0d698c9
Author: Stephan Haller <nomad at froevel.de>
Date:   Fri Jan 20 08:26:04 2017 +0100

    Remove redundant code by deriving XfdashboardLiveWindow from newly created XfdashboardLiveWindowSimple and add controls, title and icon to it
---
 libxfdashboard/live-window-simple.c |  39 ----
 libxfdashboard/live-window-simple.h |   1 -
 libxfdashboard/live-window.c        | 348 +++++-------------------------------
 libxfdashboard/live-window.h        |  15 +-
 libxfdashboard/windows-view.c       |  39 ++--
 libxfdashboard/workspace-selector.c |   2 +-
 6 files changed, 75 insertions(+), 369 deletions(-)

diff --git a/libxfdashboard/live-window-simple.c b/libxfdashboard/live-window-simple.c
index 311e5c2..7a08881 100644
--- a/libxfdashboard/live-window-simple.c
+++ b/libxfdashboard/live-window-simple.c
@@ -73,8 +73,6 @@ static GParamSpec* XfdashboardLiveWindowSimpleProperties[PROP_LAST]={ 0, };
 /* Signals */
 enum
 {
-	SIGNAL_CLICKED,
-
 	SIGNAL_GEOMETRY_CHANGED,
 	SIGNAL_VISIBILITY_CHANGED,
 	SIGNAL_WORKSPACE_CHANGED,
@@ -102,26 +100,6 @@ static gboolean _xfdashboard_live_window_simple_is_visible_window(XfdashboardLiv
 	return(TRUE);
 }
 
-/* This actor was clicked */
-static void _xfdashboard_live_window_simple_on_clicked(XfdashboardLiveWindowSimple *self,
-														ClutterActor *inActor,
-														gpointer inUserData)
-{
-	XfdashboardClickAction				*action;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW_SIMPLE(self));
-	g_return_if_fail(CLUTTER_IS_ACTOR(inActor));
-	g_return_if_fail(XFDASHBOARD_IS_CLICK_ACTION(inUserData));
-
-	action=XFDASHBOARD_CLICK_ACTION(inUserData);
-
-	/* Only emit any of these signals if click was perform with left button */
-	if(xfdashboard_click_action_get_button(action)!=XFDASHBOARD_CLICK_ACTION_LEFT_BUTTON) return;
-
-	/* Emit "clicked" signal */
-	g_signal_emit(self, XfdashboardLiveWindowSimpleSignals[SIGNAL_CLICKED], 0);
-}
-
 /* Position and/or size of window has changed */
 static void _xfdashboard_live_window_simple_on_geometry_changed(XfdashboardLiveWindowSimple *self,
 																XfdashboardWindowTrackerWindow *inWindow,
@@ -415,18 +393,6 @@ static void xfdashboard_live_window_simple_class_init(XfdashboardLiveWindowSimpl
 	g_object_class_install_properties(gobjectClass, PROP_LAST, XfdashboardLiveWindowSimpleProperties);
 
 	/* Define signals */
-	XfdashboardLiveWindowSimpleSignals[SIGNAL_CLICKED]=
-		g_signal_new("clicked",
-						G_TYPE_FROM_CLASS(klass),
-						G_SIGNAL_RUN_LAST,
-						G_STRUCT_OFFSET(XfdashboardLiveWindowSimpleClass, clicked),
-						NULL,
-						NULL,
-						g_cclosure_marshal_VOID__VOID,
-						G_TYPE_NONE,
-						0);
-
-
 	XfdashboardLiveWindowSimpleSignals[SIGNAL_GEOMETRY_CHANGED]=
 		g_signal_new("geometry-changed",
 						G_TYPE_FROM_CLASS(klass),
@@ -468,7 +434,6 @@ static void xfdashboard_live_window_simple_class_init(XfdashboardLiveWindowSimpl
 static void xfdashboard_live_window_simple_init(XfdashboardLiveWindowSimple *self)
 {
 	XfdashboardLiveWindowSimplePrivate	*priv;
-	ClutterAction						*action;
 
 	priv=self->priv=XFDASHBOARD_LIVE_WINDOW_SIMPLE_GET_PRIVATE(self);
 
@@ -485,10 +450,6 @@ static void xfdashboard_live_window_simple_init(XfdashboardLiveWindowSimple *sel
 	clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorWindow);
 
 	/* Connect signals */
-	action=xfdashboard_click_action_new();
-	clutter_actor_add_action(CLUTTER_ACTOR(self), action);
-	g_signal_connect_swapped(action, "clicked", G_CALLBACK(_xfdashboard_live_window_simple_on_clicked), self);
-
 	g_signal_connect_swapped(priv->windowTracker, "window-geometry-changed", G_CALLBACK(_xfdashboard_live_window_simple_on_geometry_changed), self);
 	g_signal_connect_swapped(priv->windowTracker, "window-state-changed", G_CALLBACK(_xfdashboard_live_window_simple_on_state_changed), self);
 	g_signal_connect_swapped(priv->windowTracker, "window-workspace-changed", G_CALLBACK(_xfdashboard_live_window_simple_on_workspace_changed), self);
diff --git a/libxfdashboard/live-window-simple.h b/libxfdashboard/live-window-simple.h
index 70e2f0e..64e4c39 100644
--- a/libxfdashboard/live-window-simple.h
+++ b/libxfdashboard/live-window-simple.h
@@ -66,7 +66,6 @@ struct _XfdashboardLiveWindowSimpleClass
 
 	/*< public >*/
 	/* Virtual functions */
-	void (*clicked)(XfdashboardLiveWindowSimple *self);
 	void (*geometry_changed)(XfdashboardLiveWindowSimple *self);
 	void (*visibility_changed)(XfdashboardLiveWindowSimple *self, gboolean inVisible);
 	void (*workspace_changed)(XfdashboardLiveWindowSimple *self);
diff --git a/libxfdashboard/live-window.c b/libxfdashboard/live-window.c
index 281dca3..22178d6 100644
--- a/libxfdashboard/live-window.c
+++ b/libxfdashboard/live-window.c
@@ -47,7 +47,7 @@
 /* Define this class in GObject system */
 G_DEFINE_TYPE(XfdashboardLiveWindow,
 				xfdashboard_live_window,
-				XFDASHBOARD_TYPE_BACKGROUND)
+				XFDASHBOARD_TYPE_LIVE_WINDOW_SIMPLE)
 
 /* Private structure - access only by public API if needed */
 #define XFDASHBOARD_LIVE_WINDOW_GET_PRIVATE(obj) \
@@ -56,8 +56,6 @@ G_DEFINE_TYPE(XfdashboardLiveWindow,
 struct _XfdashboardLiveWindowPrivate
 {
 	/* Properties related */
-	XfdashboardWindowTrackerWindow		*window;
-
 	guint								windowNumber;
 
 	gfloat								paddingClose;
@@ -66,9 +64,6 @@ struct _XfdashboardLiveWindowPrivate
 	/* Instance related */
 	XfdashboardWindowTracker			*windowTracker;
 
-	gboolean							isVisible;
-
-	ClutterActor						*actorWindow;
 	ClutterActor						*actorClose;
 	ClutterActor						*actorWindowNumber;
 	ClutterActor						*actorTitle;
@@ -79,8 +74,6 @@ enum
 {
 	PROP_0,
 
-	PROP_WINDOW,
-
 	PROP_WINDOW_NUMBER,
 
 	PROP_CLOSE_BUTTON_PADDING,
@@ -97,10 +90,6 @@ enum
 	SIGNAL_CLICKED,
 	SIGNAL_CLOSE,
 
-	SIGNAL_GEOMETRY_CHANGED,
-	SIGNAL_VISIBILITY_CHANGED,
-	SIGNAL_WORKSPACE_CHANGED,
-
 	SIGNAL_LAST
 };
 
@@ -108,24 +97,10 @@ static guint XfdashboardLiveWindowSignals[SIGNAL_LAST]={ 0, };
 
 /* IMPLEMENTATION: Private variables and methods */
 
-/* Check if window should be shown */
-static gboolean _xfdashboard_live_window_is_visible_window(XfdashboardLiveWindow *self, XfdashboardWindowTrackerWindow *inWindow)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow), FALSE);
-
-	/* Determine if windows should be shown depending on its state */
-	if(xfdashboard_window_tracker_window_is_skip_pager(inWindow) ||
-		xfdashboard_window_tracker_window_is_skip_tasklist(inWindow))
-	{
-		return(FALSE);
-	}
-
-	/* If we get here the window should be shown */
-	return(TRUE);
-}
-
 /* This actor was clicked */
-static void _xfdashboard_live_window_on_clicked(XfdashboardLiveWindow *self, ClutterActor *inActor, gpointer inUserData)
+static void _xfdashboard_live_window_on_clicked(XfdashboardLiveWindow *self,
+												ClutterActor *inActor,
+												gpointer inUserData)
 {
 	XfdashboardLiveWindowPrivate	*priv;
 	XfdashboardClickAction			*action;
@@ -162,26 +137,6 @@ static void _xfdashboard_live_window_on_clicked(XfdashboardLiveWindow *self, Clu
 	g_signal_emit(self, XfdashboardLiveWindowSignals[SIGNAL_CLICKED], 0);
 }
 
-/* Position and/or size of window has changed */
-static void _xfdashboard_live_window_on_geometry_changed(XfdashboardLiveWindow *self, XfdashboardWindowTrackerWindow *inWindow, gpointer inUserData)
-{
-	XfdashboardLiveWindowPrivate	*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow));
-
-	priv=self->priv;
-
-	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
-
-	/* Actor's allocation may change because of new geometry so relayout */
-	clutter_actor_queue_relayout(CLUTTER_ACTOR(self));
-
-	/* Emit "geometry-changed" signal */
-	g_signal_emit(self, XfdashboardLiveWindowSignals[SIGNAL_GEOMETRY_CHANGED], 0);
-}
-
 /* Action items of window has changed */
 static void _xfdashboard_live_window_on_actions_changed(XfdashboardLiveWindow *self,
 														XfdashboardWindowTrackerWindow *inWindow,
@@ -197,11 +152,11 @@ static void _xfdashboard_live_window_on_actions_changed(XfdashboardLiveWindow *s
 	priv=self->priv;
 
 	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
+	if(inWindow!=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(self))) return;
 
 	/* Determine current and new state of actions */
 	currentCloseVisible=(clutter_actor_is_visible(priv->actorClose) ? TRUE : FALSE);
-	newCloseVisible=xfdashboard_window_tracker_window_has_close_action(priv->window);
+	newCloseVisible=xfdashboard_window_tracker_window_has_close_action(inWindow);
 	
 	/* Show or hide close button actor */
 	if(newCloseVisible!=currentCloseVisible)
@@ -225,7 +180,7 @@ static void _xfdashboard_live_window_on_icon_changed(XfdashboardLiveWindow *self
 	priv=self->priv;
 
 	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
+	if(inWindow!=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(self))) return;
 
 	/* Set new icon in title actor */
 	icon=xfdashboard_image_content_new_for_pixbuf(xfdashboard_window_tracker_window_get_icon(inWindow));
@@ -247,7 +202,7 @@ static void _xfdashboard_live_window_on_name_changed(XfdashboardLiveWindow *self
 	priv=self->priv;
 
 	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
+	if(inWindow!=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(self))) return;
 
 	/* Set new name in title actor */
 	windowName=g_markup_printf_escaped("%s", xfdashboard_window_tracker_window_get_title(inWindow));
@@ -255,96 +210,13 @@ static void _xfdashboard_live_window_on_name_changed(XfdashboardLiveWindow *self
 	g_free(windowName);
 }
 
-/* Window's state has changed */
-static void _xfdashboard_live_window_on_state_changed(XfdashboardLiveWindow *self,
-														XfdashboardWindowTrackerWindow *inWindow,
-														gpointer inUserData)
-{
-	XfdashboardLiveWindowPrivate	*priv;
-	gboolean						isVisible;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow));
-
-	priv=self->priv;
-
-	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
-
-	/* Check if window's visibility has changed */
-	isVisible=_xfdashboard_live_window_is_visible_window(self, inWindow);
-	if(priv->isVisible!=isVisible)
-	{
-		priv->isVisible=isVisible;
-		g_signal_emit(self, XfdashboardLiveWindowSignals[SIGNAL_VISIBILITY_CHANGED], 0);
-	}
-
-	/* Add or remove class depending on 'pinned' window state */
-	if(xfdashboard_window_tracker_window_is_pinned(inWindow))
-	{
-		xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(self), "window-state-pinned");
-	}
-		else
-		{
-			xfdashboard_stylable_remove_class(XFDASHBOARD_STYLABLE(self), "window-state-pinned");
-		}
-
-	/* Add or remove class depending on 'minimized' window state */
-	if(xfdashboard_window_tracker_window_is_minimized(inWindow))
-	{
-		xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(self), "window-state-minimized");
-	}
-		else
-		{
-			xfdashboard_stylable_remove_class(XFDASHBOARD_STYLABLE(self), "window-state-minimized");
-		}
-
-	/* Add or remove class depending on 'maximized' window state */
-	if(xfdashboard_window_tracker_window_is_maximized(inWindow))
-	{
-		xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(self), "window-state-maximized");
-	}
-		else
-		{
-			xfdashboard_stylable_remove_class(XFDASHBOARD_STYLABLE(self), "window-state-maximized");
-		}
-
-	/* Add or remove class depending on 'urgent' window state */
-	if(xfdashboard_window_tracker_window_is_urgent(inWindow))
-	{
-		xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(self), "window-state-urgent");
-	}
-		else
-		{
-			xfdashboard_stylable_remove_class(XFDASHBOARD_STYLABLE(self), "window-state-urgent");
-		}
-}
-
-/* Window's workspace has changed */
-static void _xfdashboard_live_window_on_workspace_changed(XfdashboardLiveWindow *self,
-															XfdashboardWindowTrackerWindow *inWindow,
-															gpointer inUserData)
-{
-	XfdashboardLiveWindowPrivate	*priv;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow));
-
-	priv=self->priv;
-
-	/* Check if signal is for this window */
-	if(inWindow!=priv->window) return;
-
-	/* Emit "workspace-changed" signal */
-	g_signal_emit(self, XfdashboardLiveWindowSignals[SIGNAL_WORKSPACE_CHANGED], 0);
-}
-
 /* Window number will be modified */
 static void _xfdashboard_live_window_set_window_number(XfdashboardLiveWindow *self,
 														guint inWindowNumber)
 
 {
 	XfdashboardLiveWindowPrivate	*priv;
+	XfdashboardWindowTrackerWindow	*window;
 
 	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self));
 	g_return_if_fail(inWindowNumber<=10);
@@ -378,8 +250,11 @@ static void _xfdashboard_live_window_set_window_number(XfdashboardLiveWindow *se
 			 */
 			else
 			{
+				/* Get window this actor is responsible for */
+				window=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(self));
+
 				/* Only show close button again if window supports close action */
-				if(xfdashboard_window_tracker_window_has_close_action(priv->window))
+				if(xfdashboard_window_tracker_window_has_close_action(window))
 				{
 					clutter_actor_show(priv->actorClose);
 				}
@@ -391,6 +266,29 @@ static void _xfdashboard_live_window_set_window_number(XfdashboardLiveWindow *se
 	}
 }
 
+/* Window property changed so set up controls, title and icon */
+static void _xfdashboard_live_window_on_window_changed(GObject *inObject,
+														GParamSpec *inSpec,
+														gpointer inUserData)
+{
+	XfdashboardLiveWindow			*self;
+	XfdashboardLiveWindowPrivate	*priv;
+	XfdashboardWindowTrackerWindow	*window;
+
+	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(inObject));
+
+	self=XFDASHBOARD_LIVE_WINDOW(inObject);
+	priv=self->priv;
+
+	/* Get new window set */
+	window=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(self));
+
+	/* Set up this actor and child actor by calling each signal handler now */
+	_xfdashboard_live_window_on_actions_changed(self, window, priv->windowTracker);
+	_xfdashboard_live_window_on_icon_changed(self, window, priv->windowTracker);
+	_xfdashboard_live_window_on_name_changed(self, window, priv->windowTracker);
+}
+
 /* IMPLEMENTATION: ClutterActor */
 
 /* Get preferred width/height */
@@ -402,23 +300,11 @@ static void _xfdashboard_live_window_get_preferred_height(ClutterActor *self,
 	XfdashboardLiveWindowPrivate	*priv=XFDASHBOARD_LIVE_WINDOW(self)->priv;
 	gfloat							minHeight, naturalHeight;
 	gfloat							childMinHeight, childNaturalHeight;
-	ClutterContent					*content;
 
 	minHeight=naturalHeight=0.0f;
 
-	/* Determine size of window if available and visible (should usually be the largest actor) */
-	if(priv->actorWindow &&
-		clutter_actor_is_visible(priv->actorWindow))
-	{
-		content=clutter_actor_get_content(priv->actorWindow);
-		if(content &&
-			XFDASHBOARD_IS_WINDOW_CONTENT(content) &&
-			clutter_content_get_preferred_size(content, NULL, &childNaturalHeight))
-		{
-			if(childNaturalHeight>minHeight) minHeight=childNaturalHeight;
-			if(childNaturalHeight>naturalHeight) naturalHeight=childNaturalHeight;
-		}
-	}
+	/* Chain up to determine size of window of this actor (should usually be the largest actor) */
+	CLUTTER_ACTOR_CLASS(xfdashboard_live_window_parent_class)->get_preferred_height(self, inForWidth, &minHeight, &naturalHeight);
 
 	/* Determine size of title actor if visible */
 	if(clutter_actor_is_visible(priv->actorTitle))
@@ -472,23 +358,11 @@ static void _xfdashboard_live_window_get_preferred_width(ClutterActor *self,
 	XfdashboardLiveWindowPrivate	*priv=XFDASHBOARD_LIVE_WINDOW(self)->priv;
 	gfloat							minWidth, naturalWidth;
 	gfloat							childMinWidth, childNaturalWidth;
-	ClutterContent					*content;
 
 	minWidth=naturalWidth=0.0f;
 
-	/* Determine size of window if available and visible (should usually be the largest actor) */
-	if(priv->actorWindow &&
-		clutter_actor_is_visible(priv->actorWindow))
-	{
-		content=clutter_actor_get_content(priv->actorWindow);
-		if(content &&
-			XFDASHBOARD_IS_WINDOW_CONTENT(content) &&
-			clutter_content_get_preferred_size(content, &childNaturalWidth, NULL))
-		{
-			if(childNaturalWidth>minWidth) minWidth=childNaturalWidth;
-			if(childNaturalWidth>naturalWidth) naturalWidth=childNaturalWidth;
-		}
-	}
+	/* Chain up to determine size of window of this actor (should usually be the largest actor) */
+	CLUTTER_ACTOR_CLASS(xfdashboard_live_window_parent_class)->get_preferred_width(self, inForHeight, &minWidth, &naturalWidth);
 
 	/* Determine size of title actor if visible */
 	if(clutter_actor_is_visible(priv->actorTitle))
@@ -540,7 +414,6 @@ static void _xfdashboard_live_window_allocate(ClutterActor *self,
 												ClutterAllocationFlags inFlags)
 {
 	XfdashboardLiveWindowPrivate	*priv=XFDASHBOARD_LIVE_WINDOW(self)->priv;
-	ClutterActorBox					*boxActorWindow=NULL;
 	ClutterActorBox					*boxActorTitle=NULL;
 	ClutterActorBox					*boxActorClose=NULL;
 	ClutterActorBox					*boxActorWindowNumber=NULL;
@@ -554,19 +427,14 @@ static void _xfdashboard_live_window_allocate(ClutterActor *self,
 	/* Chain up to store the allocation of the actor */
 	CLUTTER_ACTOR_CLASS(xfdashboard_live_window_parent_class)->allocate(self, inBox, inFlags);
 
-	/* Set allocation on window texture */
-	boxActorWindow=clutter_actor_box_copy(inBox);
-	clutter_actor_box_set_origin(boxActorWindow, 0.0f, 0.0f);
-	clutter_actor_allocate(priv->actorWindow, boxActorWindow, inFlags);
-
 	/* Set allocation on close actor */
 	clutter_actor_get_preferred_size(priv->actorClose,
 										NULL, NULL,
 										&closeWidth, &closeHeight);
 
-	right=clutter_actor_box_get_x(boxActorWindow)+clutter_actor_box_get_width(boxActorWindow)-priv->paddingClose;
+	right=clutter_actor_box_get_width(inBox)-priv->paddingClose;
 	left=MAX(right-closeWidth, priv->paddingClose);
-	top=clutter_actor_box_get_y(boxActorWindow)+priv->paddingClose;
+	top=priv->paddingClose;
 	bottom=top+closeHeight;
 
 	right=MAX(left, right);
@@ -580,9 +448,9 @@ static void _xfdashboard_live_window_allocate(ClutterActor *self,
 										NULL, NULL,
 										&windowNumberWidth, &windowNumberHeight);
 
-	right=clutter_actor_box_get_x(boxActorWindow)+clutter_actor_box_get_width(boxActorWindow)-priv->paddingClose;
+	right=clutter_actor_box_get_width(inBox)-priv->paddingClose;
 	left=MAX(right-windowNumberWidth, priv->paddingClose);
-	top=clutter_actor_box_get_y(boxActorWindow)+priv->paddingClose;
+	top=priv->paddingClose;
 	bottom=top+windowNumberHeight;
 
 	left=MIN(left, clutter_actor_box_get_x(boxActorClose));
@@ -603,12 +471,12 @@ static void _xfdashboard_live_window_allocate(ClutterActor *self,
 										NULL, NULL,
 										&titleWidth, &titleHeight);
 
-	maxWidth=clutter_actor_box_get_width(boxActorWindow)-(2*priv->paddingTitle);
+	maxWidth=clutter_actor_box_get_width(inBox)-(2*priv->paddingTitle);
 	if(titleWidth>maxWidth) titleWidth=maxWidth;
 
-	left=clutter_actor_box_get_x(boxActorWindow)+((clutter_actor_box_get_width(boxActorWindow)-titleWidth)/2.0f);
+	left=(clutter_actor_box_get_width(inBox)-titleWidth)/2.0f;
 	right=left+titleWidth;
-	bottom=clutter_actor_box_get_y(boxActorWindow)+clutter_actor_box_get_height(boxActorWindow)-(2*priv->paddingTitle);
+	bottom=clutter_actor_box_get_height(inBox)-(2*priv->paddingTitle);
 	top=bottom-titleHeight;
 	if(left>right) left=right-1.0f;
 	if(top<(clutter_actor_box_get_y(referedBoxActor)+clutter_actor_box_get_height(referedBoxActor)))
@@ -633,7 +501,6 @@ static void _xfdashboard_live_window_allocate(ClutterActor *self,
 
 	/* Release allocated resources */
 	if(boxActorWindowNumber) clutter_actor_box_free(boxActorWindowNumber);
-	if(boxActorWindow) clutter_actor_box_free(boxActorWindow);
 	if(boxActorTitle) clutter_actor_box_free(boxActorTitle);
 	if(boxActorClose) clutter_actor_box_free(boxActorClose);
 }
@@ -647,11 +514,6 @@ static void _xfdashboard_live_window_dispose(GObject *inObject)
 	XfdashboardLiveWindowPrivate	*priv=self->priv;
 
 	/* Dispose allocated resources */
-	if(priv->window)
-	{
-		priv->window=NULL;
-	}
-
 	if(priv->windowTracker)
 	{
 		g_signal_handlers_disconnect_by_data(priv->windowTracker, self);
@@ -659,12 +521,6 @@ static void _xfdashboard_live_window_dispose(GObject *inObject)
 		priv->windowTracker=NULL;
 	}
 
-	if(priv->actorWindow)
-	{
-		clutter_actor_destroy(priv->actorWindow);
-		priv->actorWindow=NULL;
-	}
-
 	if(priv->actorTitle)
 	{
 		clutter_actor_destroy(priv->actorTitle);
@@ -697,10 +553,6 @@ static void _xfdashboard_live_window_set_property(GObject *inObject,
 	
 	switch(inPropID)
 	{
-		case PROP_WINDOW:
-			xfdashboard_live_window_set_window(self, g_value_get_object(inValue));
-			break;
-
 		case PROP_WINDOW_NUMBER:
 			_xfdashboard_live_window_set_window_number(self, g_value_get_uint(inValue));
 			break;
@@ -728,10 +580,6 @@ static void _xfdashboard_live_window_get_property(GObject *inObject,
 
 	switch(inPropID)
 	{
-		case PROP_WINDOW:
-			g_value_set_object(outValue, self->priv->window);
-			break;
-
 		case PROP_WINDOW_NUMBER:
 			g_value_set_uint(outValue, self->priv->windowNumber);
 			break;
@@ -773,13 +621,6 @@ static void xfdashboard_live_window_class_init(XfdashboardLiveWindowClass *klass
 	g_type_class_add_private(klass, sizeof(XfdashboardLiveWindowPrivate));
 
 	/* Define properties */
-	XfdashboardLiveWindowProperties[PROP_WINDOW]=
-		g_param_spec_object("window",
-								_("Window"),
-								_("The window to show"),
-								XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW,
-								G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
 	XfdashboardLiveWindowProperties[PROP_WINDOW_NUMBER]=
 		g_param_spec_uint("window-number",
 							_("Window number"),
@@ -832,40 +673,6 @@ static void xfdashboard_live_window_class_init(XfdashboardLiveWindowClass *klass
 						g_cclosure_marshal_VOID__VOID,
 						G_TYPE_NONE,
 						0);
-
-	XfdashboardLiveWindowSignals[SIGNAL_GEOMETRY_CHANGED]=
-		g_signal_new("geometry-changed",
-						G_TYPE_FROM_CLASS(klass),
-						G_SIGNAL_RUN_LAST,
-						G_STRUCT_OFFSET(XfdashboardLiveWindowClass, geometry_changed),
-						NULL,
-						NULL,
-						g_cclosure_marshal_VOID__VOID,
-						G_TYPE_NONE,
-						0);
-
-	XfdashboardLiveWindowSignals[SIGNAL_VISIBILITY_CHANGED]=
-		g_signal_new("visibility-changed",
-						G_TYPE_FROM_CLASS(klass),
-						G_SIGNAL_RUN_LAST,
-						G_STRUCT_OFFSET(XfdashboardLiveWindowClass, visibility_changed),
-						NULL,
-						NULL,
-						g_cclosure_marshal_VOID__BOOLEAN,
-						G_TYPE_NONE,
-						1,
-						G_TYPE_BOOLEAN);
-
-	XfdashboardLiveWindowSignals[SIGNAL_WORKSPACE_CHANGED]=
-		g_signal_new("workspace-changed",
-						G_TYPE_FROM_CLASS(klass),
-						G_SIGNAL_RUN_LAST,
-						G_STRUCT_OFFSET(XfdashboardLiveWindowClass, workspace_changed),
-						NULL,
-						NULL,
-						g_cclosure_marshal_VOID__VOID,
-						G_TYPE_NONE,
-						0);
 }
 
 /* Object initialization
@@ -884,15 +691,10 @@ static void xfdashboard_live_window_init(XfdashboardLiveWindow *self)
 	/* Set default values */
 	priv->windowTracker=xfdashboard_window_tracker_get_default();
 	priv->windowNumber=0;
-	priv->window=NULL;
 	priv->paddingTitle=0.0f;
 	priv->paddingClose=0.0f;
 
 	/* Set up child actors (order is important) */
-	priv->actorWindow=clutter_actor_new();
-	clutter_actor_show(priv->actorWindow);
-	clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorWindow);
-
 	priv->actorTitle=xfdashboard_button_new();
 	xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(priv->actorTitle), "title");
 	clutter_actor_set_reactive(priv->actorTitle, FALSE);
@@ -916,14 +718,13 @@ static void xfdashboard_live_window_init(XfdashboardLiveWindow *self)
 	clutter_actor_add_action(CLUTTER_ACTOR(self), action);
 	g_signal_connect_swapped(action, "clicked", G_CALLBACK(_xfdashboard_live_window_on_clicked), self);
 
-	g_signal_connect_swapped(priv->windowTracker, "window-geometry-changed", G_CALLBACK(_xfdashboard_live_window_on_geometry_changed), self);
+	g_signal_connect(self, "notify::window", G_CALLBACK(_xfdashboard_live_window_on_window_changed), NULL);
 	g_signal_connect_swapped(priv->windowTracker, "window-actions-changed", G_CALLBACK(_xfdashboard_live_window_on_actions_changed), self);
-	g_signal_connect_swapped(priv->windowTracker, "window-state-changed", G_CALLBACK(_xfdashboard_live_window_on_state_changed), self);
 	g_signal_connect_swapped(priv->windowTracker, "window-icon-changed", G_CALLBACK(_xfdashboard_live_window_on_icon_changed), self);
 	g_signal_connect_swapped(priv->windowTracker, "window-name-changed", G_CALLBACK(_xfdashboard_live_window_on_name_changed), self);
-	g_signal_connect_swapped(priv->windowTracker, "window-workspace-changed", G_CALLBACK(_xfdashboard_live_window_on_workspace_changed), self);
 }
 
+
 /* IMPLEMENTATION: Public API */
 
 /* Create new instance */
@@ -941,57 +742,6 @@ ClutterActor* xfdashboard_live_window_new_for_window(XfdashboardWindowTrackerWin
 										NULL)));
 }
 
-/* Get/set window to show */
-XfdashboardWindowTrackerWindow* xfdashboard_live_window_get_window(XfdashboardLiveWindow *self)
-{
-	g_return_val_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self), NULL);
-
-	return(self->priv->window);
-}
-
-void xfdashboard_live_window_set_window(XfdashboardLiveWindow *self, XfdashboardWindowTrackerWindow *inWindow)
-{
-	XfdashboardLiveWindowPrivate	*priv;
-	ClutterContent					*content;
-
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(self));
-	g_return_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow));
-
-	priv=self->priv;
-
-	/* Only set value if it changes */
-	if(inWindow==priv->window) return;
-
-	/* Release old value */
-	if(priv->window)
-	{
-		g_signal_handlers_disconnect_by_data(priv->window, self);
-		priv->window=NULL;
-	}
-
-	/* Set new value
-	 * Window tracker objects should never be refed or unrefed, so just set new value
-	 */
-	priv->window=inWindow;
-	priv->isVisible=_xfdashboard_live_window_is_visible_window(self, priv->window);
-
-	/* Setup window actor */
-	content=xfdashboard_window_content_new_for_window(priv->window);
-	clutter_actor_set_content(priv->actorWindow, content);
-	g_object_unref(content);
-
-	/* Set up this actor and child actor by calling each signal handler now */
-	_xfdashboard_live_window_on_geometry_changed(self, priv->window, priv->windowTracker);
-	_xfdashboard_live_window_on_actions_changed(self, priv->window, priv->windowTracker);
-	_xfdashboard_live_window_on_icon_changed(self, priv->window, priv->windowTracker);
-	_xfdashboard_live_window_on_name_changed(self, priv->window, priv->windowTracker);
-	_xfdashboard_live_window_on_state_changed(self, priv->window, priv->windowTracker);
-	_xfdashboard_live_window_on_workspace_changed(self, priv->window, priv->windowTracker);
-
-	/* Notify about property change */
-	g_object_notify_by_pspec(G_OBJECT(self), XfdashboardLiveWindowProperties[PROP_WINDOW]);
-}
-
 /* Get/set padding of title actor */
 gfloat xfdashboard_live_window_get_title_actor_padding(XfdashboardLiveWindow *self)
 {
diff --git a/libxfdashboard/live-window.h b/libxfdashboard/live-window.h
index c2ae47f..5b9d684 100644
--- a/libxfdashboard/live-window.h
+++ b/libxfdashboard/live-window.h
@@ -32,8 +32,7 @@
 
 #include <clutter/clutter.h>
 
-#include <libxfdashboard/background.h>
-#include <libxfdashboard/button.h>
+#include <libxfdashboard/live-window-simple.h>
 #include <libxfdashboard/window-tracker.h>
 
 G_BEGIN_DECLS
@@ -53,25 +52,22 @@ struct _XfdashboardLiveWindow
 {
 	/*< private >*/
 	/* Parent instance */
-	XfdashboardBackground			parent_instance;
+	XfdashboardLiveWindowSimple			parent_instance;
 
 	/* Private structure */
-	XfdashboardLiveWindowPrivate	*priv;
+	XfdashboardLiveWindowPrivate		*priv;
 };
 
 struct _XfdashboardLiveWindowClass
 {
 	/*< private >*/
 	/* Parent class */
-	XfdashboardBackgroundClass		parent_class;
+	XfdashboardLiveWindowSimpleClass	parent_class;
 
 	/*< public >*/
 	/* Virtual functions */
 	void (*clicked)(XfdashboardLiveWindow *self);
 	void (*close)(XfdashboardLiveWindow *self);
-	void (*geometry_changed)(XfdashboardLiveWindow *self);
-	void (*visibility_changed)(XfdashboardLiveWindow *self, gboolean inVisible);
-	void (*workspace_changed)(XfdashboardLiveWindow *self);
 };
 
 /* Public API */
@@ -80,9 +76,6 @@ GType xfdashboard_live_window_get_type(void) G_GNUC_CONST;
 ClutterActor* xfdashboard_live_window_new(void);
 ClutterActor* xfdashboard_live_window_new_for_window(XfdashboardWindowTrackerWindow *inWindow);
 
-XfdashboardWindowTrackerWindow* xfdashboard_live_window_get_window(XfdashboardLiveWindow *self);
-void xfdashboard_live_window_set_window(XfdashboardLiveWindow *self, XfdashboardWindowTrackerWindow *inWindow);
-
 gfloat xfdashboard_live_window_get_title_actor_padding(XfdashboardLiveWindow *self);
 void xfdashboard_live_window_set_title_actor_padding(XfdashboardLiveWindow *self, gfloat inPadding);
 
diff --git a/libxfdashboard/windows-view.c b/libxfdashboard/windows-view.c
index 9e9c736..357d5b3 100644
--- a/libxfdashboard/windows-view.c
+++ b/libxfdashboard/windows-view.c
@@ -256,9 +256,9 @@ static gboolean _xfdashboard_windows_view_is_visible_window(XfdashboardWindowsVi
 static XfdashboardLiveWindow* _xfdashboard_windows_view_find_by_window(XfdashboardWindowsView *self,
 																		XfdashboardWindowTrackerWindow *inWindow)
 {
-	XfdashboardLiveWindow	*liveWindow;
-	ClutterActor			*child;
-	ClutterActorIter		iter;
+	XfdashboardLiveWindow		*liveWindow;
+	ClutterActor				*child;
+	ClutterActorIter			iter;
 
 	g_return_val_if_fail(XFDASHBOARD_IS_WINDOWS_VIEW(self), NULL);
 	g_return_val_if_fail(XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(inWindow), NULL);
@@ -270,7 +270,10 @@ static XfdashboardLiveWindow* _xfdashboard_windows_view_find_by_window(Xfdashboa
 		if(!XFDASHBOARD_IS_LIVE_WINDOW(child)) continue;
 
 		liveWindow=XFDASHBOARD_LIVE_WINDOW(child);
-		if(xfdashboard_live_window_get_window(liveWindow)==inWindow) return(liveWindow);
+		if(xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(liveWindow))==inWindow)
+		{
+			return(liveWindow);
+		}
 	}
 
 	/* If we get here we did not find the window and we return NULL */
@@ -390,7 +393,7 @@ static void _xfdashboard_windows_view_move_live_to_view(XfdashboardWindowsView *
 	priv=self->priv;
 
 	/* Get window from window actor */
-	window=xfdashboard_live_window_get_window(inWindowActor);
+	window=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(inWindowActor));
 
 	/* Get source and target workspace */
 	sourceWorkspace=xfdashboard_window_tracker_window_get_workspace(window);
@@ -719,19 +722,19 @@ static void _xfdashboard_windows_view_on_window_clicked(XfdashboardWindowsView *
 														gpointer inUserData)
 {
 	XfdashboardWindowsViewPrivate		*priv;
-	XfdashboardLiveWindow				*liveWindow;
+	XfdashboardLiveWindowSimple			*liveWindow;
 	XfdashboardWindowTrackerWindow		*window;
 	XfdashboardWindowTrackerWorkspace	*activeWorkspace;
 	XfdashboardWindowTrackerWorkspace	*windowWorkspace;
 
 	g_return_if_fail(XFDASHBOARD_IS_WINDOWS_VIEW(self));
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(inUserData));
+	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW_SIMPLE(inUserData));
 
 	priv=self->priv;
-	liveWindow=XFDASHBOARD_LIVE_WINDOW(inUserData);
+	liveWindow=XFDASHBOARD_LIVE_WINDOW_SIMPLE(inUserData);
 
 	/* Get window to activate */
-	window=xfdashboard_live_window_get_window(liveWindow);
+	window=xfdashboard_live_window_simple_get_window(liveWindow);
 
 	/* Move to workspace if window to active is on a different one than the active one */
 	activeWorkspace=xfdashboard_window_tracker_get_active_workspace(priv->windowTracker);
@@ -752,16 +755,16 @@ static void _xfdashboard_windows_view_on_window_clicked(XfdashboardWindowsView *
 static void _xfdashboard_windows_view_on_window_close_clicked(XfdashboardWindowsView *self,
 																gpointer inUserData)
 {
-	XfdashboardLiveWindow				*liveWindow;
+	XfdashboardLiveWindowSimple			*liveWindow;
 	XfdashboardWindowTrackerWindow		*window;
 
 	g_return_if_fail(XFDASHBOARD_IS_WINDOWS_VIEW(self));
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(inUserData));
+	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW_SIMPLE(inUserData));
 
-	liveWindow=XFDASHBOARD_LIVE_WINDOW(inUserData);
+	liveWindow=XFDASHBOARD_LIVE_WINDOW_SIMPLE(inUserData);
 
 	/* Close clicked window */
-	window=XFDASHBOARD_WINDOW_TRACKER_WINDOW(xfdashboard_live_window_get_window(liveWindow));
+	window=XFDASHBOARD_WINDOW_TRACKER_WINDOW(xfdashboard_live_window_simple_get_window(liveWindow));
 	xfdashboard_window_tracker_window_close(window);
 }
 
@@ -875,13 +878,13 @@ static void _xfdashboard_windows_view_on_drag_begin(ClutterDragAction *inAction,
 	ClutterStage					*stage;
 	GdkPixbuf						*windowIcon;
 	ClutterContent					*image;
-	XfdashboardLiveWindow			*liveWindow;
+	XfdashboardLiveWindowSimple		*liveWindow;
 
 	g_return_if_fail(CLUTTER_IS_DRAG_ACTION(inAction));
-	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW(inActor));
+	g_return_if_fail(XFDASHBOARD_IS_LIVE_WINDOW_SIMPLE(inActor));
 	g_return_if_fail(XFDASHBOARD_IS_WINDOWS_VIEW(inUserData));
 
-	liveWindow=XFDASHBOARD_LIVE_WINDOW(inActor);
+	liveWindow=XFDASHBOARD_LIVE_WINDOW_SIMPLE(inActor);
 
 	/* Prevent signal "clicked" from being emitted on dragged icon */
 	g_signal_handlers_block_by_func(inActor, _xfdashboard_windows_view_on_window_clicked, inUserData);
@@ -890,7 +893,7 @@ static void _xfdashboard_windows_view_on_drag_begin(ClutterDragAction *inAction,
 	stage=CLUTTER_STAGE(clutter_actor_get_stage(inActor));
 
 	/* Create a application icon for drag handle */
-	windowIcon=xfdashboard_window_tracker_window_get_icon(xfdashboard_live_window_get_window(liveWindow));
+	windowIcon=xfdashboard_window_tracker_window_get_icon(xfdashboard_live_window_simple_get_window(liveWindow));
 	image=xfdashboard_image_content_new_for_pixbuf(windowIcon);
 
 	dragHandle=xfdashboard_background_new();
@@ -959,7 +962,7 @@ static XfdashboardLiveWindow* _xfdashboard_windows_view_create_actor(Xfdashboard
 	g_signal_connect_swapped(actor, "close", G_CALLBACK(_xfdashboard_windows_view_on_window_close_clicked), self);
 	g_signal_connect_swapped(actor, "geometry-changed", G_CALLBACK(_xfdashboard_windows_view_on_window_geometry_changed), self);
 	g_signal_connect_swapped(actor, "visibility-changed", G_CALLBACK(_xfdashboard_windows_view_on_window_visibility_changed), self);
-	xfdashboard_live_window_set_window(XFDASHBOARD_LIVE_WINDOW(actor), inWindow);
+	xfdashboard_live_window_simple_set_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(actor), inWindow);
 
 	dragAction=xfdashboard_drag_action_new_with_source(CLUTTER_ACTOR(self));
 	clutter_drag_action_set_drag_threshold(CLUTTER_DRAG_ACTION(dragAction), -1, -1);
diff --git a/libxfdashboard/workspace-selector.c b/libxfdashboard/workspace-selector.c
index 7e8d1d1..785d172 100644
--- a/libxfdashboard/workspace-selector.c
+++ b/libxfdashboard/workspace-selector.c
@@ -346,7 +346,7 @@ static void _xfdashboard_workspace_selector_on_drop_drop(XfdashboardLiveWorkspac
 		XfdashboardWindowTrackerWindow	*window;
 
 		/* Get window */
-		window=xfdashboard_live_window_get_window(XFDASHBOARD_LIVE_WINDOW(draggedActor));
+		window=xfdashboard_live_window_simple_get_window(XFDASHBOARD_LIVE_WINDOW_SIMPLE(draggedActor));
 		g_return_if_fail(window);
 
 		/* Move window to workspace */

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


More information about the Xfce4-commits mailing list