Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        ewins.c 


Log Message:
Fix window stack getting messed up due to bug in handling of particular case
of misbehaving clients (yet another variant of unmap/map without waiting for
withdrawal).

===================================================================
RCS file: /cvs/e/e16/e/src/ewins.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -3 -r1.168 -r1.169
--- ewins.c     3 Jun 2006 14:11:33 -0000       1.168
+++ ewins.c     11 Jul 2006 03:05:30 -0000      1.169
@@ -191,19 +191,30 @@
    if (ewin->state.docked)
       ewin->inh_wm.b.border = 1;
 
-   frame =
-      ECreateObjectWindow(VRoot.win, ewin->client.x, ewin->client.y,
-                         ewin->client.w, ewin->client.h, 0, 1,
-                         _EwinGetClientWin(ewin), &argb);
-   ewin->o.argb = argb;
-   ewin->win_container =
-      ECreateWindow(frame, 0, 0, ewin->client.w, ewin->client.h, 0);
-
-   EoInit(ewin, EOBJ_TYPE_EWIN, frame, ewin->client.x, ewin->client.y,
-         ewin->client.w, ewin->client.h, 1, ewin->icccm.wm_name);
-
-   EobjListFocusAdd(&ewin->o, 1);
-   EobjListOrderAdd(&ewin->o);
+   frame = EoGetWin(ewin);
+   if (!frame)
+     {
+       frame =
+          ECreateObjectWindow(VRoot.win, ewin->client.x, ewin->client.y,
+                              ewin->client.w, ewin->client.h, 0, 1,
+                              _EwinGetClientWin(ewin), &argb);
+       ewin->o.argb = argb;
+       ewin->win_container =
+          ECreateWindow(frame, 0, 0, ewin->client.w, ewin->client.h, 0);
+
+       EoInit(ewin, EOBJ_TYPE_EWIN, frame, ewin->client.x, ewin->client.y,
+              ewin->client.w, ewin->client.h, 1, ewin->icccm.wm_name);
+
+       EobjListFocusAdd(&ewin->o, 1);
+       EobjListOrderAdd(&ewin->o);
+
+       EventCallbackRegister(EoGetWin(ewin), 0,
+                             EwinHandleEventsToplevel, ewin);
+       EventCallbackRegister(ewin->win_container, 0,
+                             EwinHandleEventsContainer, ewin);
+       EventCallbackRegister(_EwinGetClientWin(ewin), 0,
+                             EwinHandleEventsClient, ewin);
+     }
 
    att.event_mask = EWIN_CONTAINER_EVENT_MASK;
    att.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask;
@@ -221,12 +232,6 @@
       Eprintf("EwinManage %#lx frame=%#lx cont=%#lx st=%d\n",
              _EwinGetClientXwin(ewin), EoGetXwin(ewin),
              _EwinGetContainerXwin(ewin), ewin->state.state);
-
-   EventCallbackRegister(EoGetWin(ewin), 0, EwinHandleEventsToplevel, ewin);
-   EventCallbackRegister(ewin->win_container, 0, EwinHandleEventsContainer,
-                        ewin);
-   EventCallbackRegister(_EwinGetClientWin(ewin), 0, EwinHandleEventsClient,
-                        ewin);
 
    if (!EwinIsInternal(ewin))
      {




-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to