Author: olivier
Date: 2009-02-16 11:11:27 +0000 (Mon, 16 Feb 2009)
New Revision: 29493

Modified:
   xfwm4/trunk/ChangeLog
   xfwm4/trunk/NEWS
   xfwm4/trunk/src/client.c
   xfwm4/trunk/src/events.c
Log:
        * src/events.c, src/client.c: Fix ICCCM synthetic unmap notify 
          handling causing a race condition with amule when started hidden 
          to system tray (Bug #4928). Note: This is still unclear to me
          what is correct behaviour here, the problem reported in bug
          #4928 happens with some other window managers too (e.g. kwin from
          kde 4.2, fluxbox) but not with others (openbox, metacity, icewm).

Modified: xfwm4/trunk/ChangeLog
===================================================================
--- xfwm4/trunk/ChangeLog       2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/ChangeLog       2009-02-16 11:11:27 UTC (rev 29493)
@@ -1,3 +1,12 @@
+2009-02-16     olivier
+
+       * src/events.c, src/client.c: Fix ICCCM synthetic unmap notify 
+         handling causing a race condition with amule when started hidden 
+         to system tray (Bug #4928). Note: This is still unclear to me
+         what is correct behaviour here, the problem reported in bug
+         #4928 happens with some other window managers too (e.g. kwin from
+         kde 4.2, fluxbox) but not with others (openbox, metacity, icewm).
+
 2009-02-07     jannis
 
        * settings-dialogs/xfwm4-settings.c : Add the new parameter required

Modified: xfwm4/trunk/NEWS
===================================================================
--- xfwm4/trunk/NEWS    2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/NEWS    2009-02-16 11:11:27 UTC (rev 29493)
@@ -12,6 +12,8 @@
 - Do not automatically give focus to windows placed on lower layers, but 
   focus those on upper layers at first map.
 - Fix compilation failure in debug full without render
+- Fix ICCCM synthetic unmap notify handling causing a race condition with
+  amule when started hidden to system tray (Bug #4928)
 
 4.5.99.1 (Xfce 4.6rc1)
 ======================

Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c    2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/src/client.c    2009-02-16 11:11:27 UTC (rev 29493)
@@ -1940,7 +1940,7 @@
         XCreateWindow (display_info->dpy, screen_info->xroot, 0, 0, 1, 1, 0,
         c->depth, InputOutput, c->visual, valuemask, &attributes);
 
-    XSelectInput (display_info->dpy, c->window, 0);
+    XSelectInput (display_info->dpy, c->window, NoEventMask);
     XSetWindowBorderWidth (display_info->dpy, c->window, 0);
     if (FLAG_TEST (c->flags, CLIENT_FLAG_SHADED))
     {
@@ -1950,7 +1950,6 @@
     valuemask = CWEventMask;
     attributes.event_mask = (CLIENT_EVENT_MASK);
     XChangeWindowAttributes (display_info->dpy, c->window, valuemask, 
&attributes);
-    XSelectInput (display_info->dpy, c->window, CLIENT_EVENT_MASK);
     if (display_info->have_shape)
     {
         XShapeSelectInput (display_info->dpy, c->window, ShapeNotifyMask);
@@ -2652,6 +2651,7 @@
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
     timestamp = myDisplayGetCurrentTime (display_info);
+    timestamp = myDisplayGetTime (display_info, timestamp);
 
     if (FLAG_TEST (c->wm_flags, WM_FLAG_DELETE))
     {

Modified: xfwm4/trunk/src/events.c
===================================================================
--- xfwm4/trunk/src/events.c    2009-02-16 10:31:08 UTC (rev 29492)
+++ xfwm4/trunk/src/events.c    2009-02-16 11:11:27 UTC (rev 29493)
@@ -1186,12 +1186,14 @@
          */
         if ((ev->event == screen_info->xroot) && (ev->send_event))
         {
-            TRACE ("ICCCM UnmapNotify for \"%s\"", c->name);
-            list_of_windows = clientListTransientOrModal (c);
-            clientPassFocus (screen_info, c, list_of_windows);
-            clientUnframe (c, FALSE);
-            g_list_free (list_of_windows);
-
+            if (!FLAG_TEST (c->xfwm_flags, XFWM_FLAG_VISIBLE))
+            {
+                TRACE ("ICCCM UnmapNotify for \"%s\"", c->name);
+                list_of_windows = clientListTransientOrModal (c);
+                clientPassFocus (screen_info, c, list_of_windows);
+                clientUnframe (c, FALSE);
+                g_list_free (list_of_windows);
+            }
             return status;
         }
 

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to