[Xfce4-commits] [apps/xfdashboard] 01/01: Add function to determine if a window needs attention (urgency window state) and allow XfdashboardLiveWindow to be stylable at specific window states (urgent, minimized, pinned)

noreply at xfce.org noreply at xfce.org
Mon Apr 20 21:34:52 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 244d67babb7d9efb608311c07c85195eec46c416
Author: Stephan Haller <nomad at froevel.de>
Date:   Mon Apr 20 21:33:48 2015 +0200

    Add function to determine if a window needs attention (urgency window state) and allow XfdashboardLiveWindow to be stylable at specific window states (urgent, minimized, pinned)
---
 data/themes/xfdashboard/effects.xml     |    5 +++++
 data/themes/xfdashboard/xfdashboard.css |    5 +++++
 xfdashboard/live-window.c               |   30 ++++++++++++++++++++++++++++++
 xfdashboard/window-content.c            |    2 ++
 xfdashboard/window-tracker-window.c     |    9 +++++++++
 xfdashboard/window-tracker-window.h     |    1 +
 6 files changed, 52 insertions(+)

diff --git a/data/themes/xfdashboard/effects.xml b/data/themes/xfdashboard/effects.xml
index 483515b..3934887 100644
--- a/data/themes/xfdashboard/effects.xml
+++ b/data/themes/xfdashboard/effects.xml
@@ -2,4 +2,9 @@
 	<object id="black-white" class="ClutterDesaturateEffect">
 		<property name="factor">1.0</property>
 	</object>
+
+	<object id="window-urgency" class="XfdashboardEmblemEffect">
+		<property name="icon-name">emblem-important</property>
+		<property name="icon-size">32</property>
+	</object>
 </effects>
diff --git a/data/themes/xfdashboard/xfdashboard.css b/data/themes/xfdashboard/xfdashboard.css
index 3afb43f..f0c84bd 100644
--- a/data/themes/xfdashboard/xfdashboard.css
+++ b/data/themes/xfdashboard/xfdashboard.css
@@ -154,6 +154,11 @@ XfdashboardLiveWindow .window-number
 	corner-radius: 4.0;
 }
 
+XfdashboardLiveWindow.window-state-urgent
+{
+	effects: window-urgency;
+}
+
 .drag-actor-XfdashboardLiveWindow:drag-handle
 {
 	background-type: outline fill rounded-corners;
diff --git a/xfdashboard/live-window.c b/xfdashboard/live-window.c
index 296f2da..8d16019 100644
--- a/xfdashboard/live-window.c
+++ b/xfdashboard/live-window.c
@@ -273,6 +273,36 @@ static void _xfdashboard_live_window_on_state_changed(XfdashboardLiveWindow *sel
 		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_minized(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 '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 */
diff --git a/xfdashboard/window-content.c b/xfdashboard/window-content.c
index 9b16334..edf7be2 100644
--- a/xfdashboard/window-content.c
+++ b/xfdashboard/window-content.c
@@ -484,6 +484,7 @@ static ClutterX11FilterReturn _xfdashboard_window_content_on_x_event(XEvent *inX
 	return(CLUTTER_X11_FILTER_CONTINUE);
 }
 
+
 /* Release all resources used by this instance */
 static void _xfdashboard_window_content_release_resources(XfdashboardWindowContent *self)
 {
@@ -1718,6 +1719,7 @@ void xfdashboard_window_content_init(XfdashboardWindowContent *self)
 	priv->stylePseudoClasses=NULL;
 	priv->windowTracker=xfdashboard_window_tracker_get_default();
 	priv->workaroundMode=XFDASHBOARD_WINDOW_CONTENT_WORKAROUND_MODE_NONE;
+	priv->workaroundStateSignalID=0;
 	priv->unmappedWindowIconXFill=FALSE;
 	priv->unmappedWindowIconYFill=FALSE;
 	priv->unmappedWindowIconXAlign=0.0f;
diff --git a/xfdashboard/window-tracker-window.c b/xfdashboard/window-tracker-window.c
index 9aaac29..d254725 100644
--- a/xfdashboard/window-tracker-window.c
+++ b/xfdashboard/window-tracker-window.c
@@ -528,6 +528,15 @@ gboolean xfdashboard_window_tracker_window_is_pinned(XfdashboardWindowTrackerWin
 	return(wnck_window_is_pinned(WNCK_WINDOW(inWindow)));
 }
 
+gboolean xfdashboard_window_tracker_window_is_urgent(XfdashboardWindowTrackerWindow *inWindow)
+{
+	g_return_val_if_fail(WNCK_IS_WINDOW(inWindow), FALSE);
+
+	if(wnck_window_get_state(WNCK_WINDOW(inWindow)) & WNCK_WINDOW_STATE_URGENT) return(TRUE);
+
+	return(FALSE);
+}
+
 /* Get possible actions of window */
 gboolean xfdashboard_window_tracker_window_has_close_action(XfdashboardWindowTrackerWindow *inWindow)
 {
diff --git a/xfdashboard/window-tracker-window.h b/xfdashboard/window-tracker-window.h
index 2c73cfb..933e41c 100644
--- a/xfdashboard/window-tracker-window.h
+++ b/xfdashboard/window-tracker-window.h
@@ -78,6 +78,7 @@ const gchar* xfdashboard_window_tracker_window_get_icon_name(XfdashboardWindowTr
 gboolean xfdashboard_window_tracker_window_is_skip_pager(XfdashboardWindowTrackerWindow *inWindow);
 gboolean xfdashboard_window_tracker_window_is_skip_tasklist(XfdashboardWindowTrackerWindow *inWindow);
 gboolean xfdashboard_window_tracker_window_is_pinned(XfdashboardWindowTrackerWindow *inWindow);
+gboolean xfdashboard_window_tracker_window_is_urgent(XfdashboardWindowTrackerWindow *inWindow);
 
 gboolean xfdashboard_window_tracker_window_has_close_action(XfdashboardWindowTrackerWindow *inWindow);
 

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


More information about the Xfce4-commits mailing list