[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