[Xfce4-commits] r24244 - xfwm4/trunk/src

Olivier Fourdan olivier at xfce.org
Tue Jan 2 20:13:10 CET 2007


Author: olivier
Date: 2007-01-02 19:13:10 +0000 (Tue, 02 Jan 2007)
New Revision: 24244

Modified:
   xfwm4/trunk/src/netwm.c
Log:
Apply NET_WM_STATE_DEMANDS_ATTENTION changes (otherwise it breaks xfwm4 demand attention mechanism), but do not obey client state change requests for NET_WM_STATE_DEMANDS_ATTENTION if the client is already focused.

Modified: xfwm4/trunk/src/netwm.c
===================================================================
--- xfwm4/trunk/src/netwm.c	2007-01-02 18:57:14 UTC (rev 24243)
+++ xfwm4/trunk/src/netwm.c	2007-01-02 19:13:10 UTC (rev 24244)
@@ -121,9 +121,7 @@
         TRACE ("clientSetNetState : hidden");
         data[i++] = display_info->atoms[NET_WM_STATE_HIDDEN];
     }
-    /* Do not apply NET_WM_STATE_DEMANDS_ATTENTION if client is already focused */
-    if ((c != clientGetFocusOrPending ()) && 
-        FLAG_TEST (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION))
+    if (FLAG_TEST (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION))
     {
         TRACE ("clientSetNetState : demands_attention");
         data[i++] = display_info->atoms[NET_WM_STATE_DEMANDS_ATTENTION];
@@ -534,8 +532,12 @@
     {
         if ((action == NET_WM_STATE_ADD) && !FLAG_TEST (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION))
         {
-            FLAG_SET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
-            clientSetNetState (c);
+            /* Do not apply NET_WM_STATE_DEMANDS_ATTENTION if client is already focused */
+            if (c != clientGetFocusOrPending ())
+            {
+                FLAG_SET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
+                clientSetNetState (c);
+            }
         }
         else if ((action == NET_WM_STATE_REMOVE) && FLAG_TEST (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION))
         {
@@ -544,8 +546,12 @@
         }
         else if (action == NET_WM_STATE_TOGGLE)
         {
-            FLAG_TOGGLE (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
-            clientSetNetState (c);
+            /* Do not apply NET_WM_STATE_DEMANDS_ATTENTION if client is already focused */
+            if (c != clientGetFocusOrPending () || !FLAG_TEST (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION))
+            {
+                FLAG_TOGGLE (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION);
+                clientSetNetState (c);
+            }
         }
     }
 }



More information about the Xfce4-commits mailing list