summaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
authorOlivier Fourdan <fourdan@xfce.org>2011-10-19 21:23:56 +0200
committerOlivier Fourdan <fourdan@xfce.org>2011-10-19 21:23:56 +0200
commit7eff3d69403059aa184310a0f231920b67c3b8e6 (patch)
treea72c4af577e991db079a0d639fab405c5e9ebb47 /src/client.c
parent33d41a823b2f5fabf458af6f6513d34d3ce86327 (diff)
downloadxfwm4-7eff3d69403059aa184310a0f231920b67c3b8e6.tar.gz
Update mouse cursor theme and size dynamically (Bug #6854)
Initially based on patch submitted by Matthew Rahtz <chiizufish@gmail.com> in bug #6854
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c44
1 files changed, 39 insertions, 5 deletions
diff --git a/src/client.c b/src/client.c
index 175e984de..3a9218f49 100644
--- a/src/client.c
+++ b/src/client.c
@@ -2595,8 +2595,6 @@ clientEnterContextMenuState (Client * c)
void
clientSetLayer (Client * c, guint l)
{
- ScreenInfo *screen_info;
- DisplayInfo *display_info;
GList *list_of_windows = NULL;
GList *list = NULL;
Client *c2 = NULL;
@@ -2604,9 +2602,6 @@ clientSetLayer (Client * c, guint l)
g_return_if_fail (c != NULL);
TRACE ("entering clientSetLayer for \"%s\" (0x%lx) on layer %d", c->name, c->window, l);
- screen_info = c->screen_info;
- display_info = screen_info->display_info;
-
list_of_windows = clientListTransientOrModal (c);
for (list = list_of_windows; list; list = g_list_next (list))
{
@@ -3404,6 +3399,45 @@ clientScreenResize(ScreenInfo *screen_info, gboolean fully_visible)
g_list_free (list_of_windows);
}
+void
+clientUpdateCursor (Client *c)
+{
+ ScreenInfo *screen_info;
+ DisplayInfo *display_info;
+ guint i;
+
+ g_return_if_fail (c != NULL);
+
+ screen_info = c->screen_info;
+ display_info = screen_info->display_info;
+
+ for (i = 0; i <= SIDE_TOP; i++)
+ {
+ xfwmWindowSetCursor (&c->sides[i],
+ myDisplayGetCursorResize(display_info, CORNER_COUNT + i));
+ }
+
+ for (i = 0; i < CORNER_COUNT; i++)
+ {
+ xfwmWindowSetCursor (&c->corners[i],
+ myDisplayGetCursorResize(display_info, i));
+ }
+}
+
+void
+clientUpdateAllCursor (ScreenInfo *screen_info)
+{
+ Client *c;
+ guint i;
+
+ g_return_if_fail (screen_info != NULL);
+
+ for (c = screen_info->clients, i = 0; i < screen_info->client_count; c = c->next, ++i)
+ {
+ clientUpdateCursor (c);
+ }
+}
+
static eventFilterStatus
clientButtonPressEventFilter (XEvent * xevent, gpointer data)
{