[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