Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        icccm.c 


Log Message:
Tidying up a bit.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/icccm.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -3 -r1.44 -r1.45
--- icccm.c     14 Dec 2003 17:24:34 -0000      1.44
+++ icccm.c     18 Dec 2003 23:43:26 -0000      1.45
@@ -24,12 +24,40 @@
 
 static Atom         E_XA_WM_STATE = 0;
 static Atom         E_XA_WM_CHANGE_STATE = 0;
+static Atom         E_XA_WM_NAME = 0;
+static Atom         E_XA_WM_COLORMAP_WINDOWS = 0;
+static Atom         E_XA_WM_DELETE_WINDOW = 0;
+static Atom         E_XA_WM_PROTOCOLS = 0;
+static Atom         E_XA_WM_SAVE_YOURSELF = 0;
+static Atom         E_XA_WM_TAKE_FOCUS = 0;
+static Atom         E_XA_WM_NORMAL_HINTS = 0;
+static Atom         E_XA_WM_CLASS = 0;
+static Atom         E_XA_WM_COMMAND = 0;
+static Atom         E_XA_WM_CLIENT_MACHINE = 0;
+static Atom         E_XA_WM_ICON_NAME = 0;
+static Atom         E_XA_WM_WINDOW_ROLE = 0;
+static Atom         E_XA_WM_HINTS = 0;
+static Atom         E_XA_WM_CLIENT_LEADER = 0;
 
 void
 ICCCM_Init(void)
 {
    E_XA_WM_STATE = XInternAtom(disp, "WM_STATE", False);
    E_XA_WM_CHANGE_STATE = XInternAtom(disp, "WM_CHANGE_STATE", False);
+   E_XA_WM_NAME = XInternAtom(disp, "WM_NAME", False);
+   E_XA_WM_COLORMAP_WINDOWS = XInternAtom(disp, "WM_COLORMAP_WINDOWS", False);
+   E_XA_WM_DELETE_WINDOW = XInternAtom(disp, "WM_DELETE_WINDOW", False);
+   E_XA_WM_PROTOCOLS = XInternAtom(disp, "WM_PROTOCOLS", False);
+   E_XA_WM_SAVE_YOURSELF = XInternAtom(disp, "WM_SAVE_YOURSELF", False);
+   E_XA_WM_TAKE_FOCUS = XInternAtom(disp, "WM_TAKE_FOCUS", False);
+   E_XA_WM_NORMAL_HINTS = XInternAtom(disp, "WM_NORMAL_HINTS", False);
+   E_XA_WM_CLASS = XInternAtom(disp, "WM_CLASS", False);
+   E_XA_WM_COMMAND = XInternAtom(disp, "WM_COMMAND", False);
+   E_XA_WM_CLIENT_MACHINE = XInternAtom(disp, "WM_CLIENT_MACHINE", False);
+   E_XA_WM_ICON_NAME = XInternAtom(disp, "WM_ICON_NAME", False);
+   E_XA_WM_WINDOW_ROLE = XInternAtom(disp, "WM_WINDOW_ROLE", False);
+   E_XA_WM_HINTS = XInternAtom(disp, "WM_HINTS", False);
+   E_XA_WM_CLIENT_LEADER = XInternAtom(disp, "WM_CLIENT_LEADER", False);
 }
 
 void
@@ -41,7 +69,7 @@
      {
        ewin = FindItem(NULL, event->window, LIST_FINDBY_ID, LIST_TYPE_EWIN);
        if (ewin == NULL)
-          goto exit;
+          return;
 
        if (event->data.l[0] == IconicState)
          {
@@ -57,8 +85,6 @@
        HintsSetWindowState(ewin);
 #endif
      }
- exit:
-   EDBUG_RETURN_;
 }
 
 void
@@ -67,17 +93,13 @@
    XTextProperty       xtp;
 
    EDBUG(6, "ICCCM_GetTitle");
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_NAME", False);
-       if (atom_change != atom)
-          EDBUG_RETURN_;
-     }
+   if (atom_change && atom_change != E_XA_WM_NAME)
+      EDBUG_RETURN_;
+
    if (ewin->client.title)
       Efree(ewin->client.title);
+
    if (XGetWMName(disp, ewin->client.win, &xtp))
      {
        int                 items;
@@ -107,44 +129,34 @@
      {
        ewin->client.title = duplicate("No Title");
      }
+
    EDBUG_RETURN_;
 }
 
 void
 ICCCM_GetColormap(EWin * ewin)
 {
-   static Atom         atom = 0;
    XWindowAttributes   xwa;
    Window              win, *wlist;
    int                 num;
 
    EDBUG(6, "ICCCM_GetColormap");
+
    if (ewin->internal)
       EDBUG_RETURN_;
-   if (!atom)
-      atom = XInternAtom(disp, "WM_COLORMAP_WINDOWS", False);
+
    win = ewin->client.win;
-   wlist = AtomGet(win, atom, XA_WINDOW, &num);
+   wlist = AtomGet(win, E_XA_WM_COLORMAP_WINDOWS, XA_WINDOW, &num);
    if (wlist)
      {
        win = wlist[0];
        Efree(wlist);
      }
-   if (XGetWindowAttributes(disp, ewin->client.win, &xwa))
-     {
-       if (xwa.colormap)
-         {
-            ewin->client.cmap = xwa.colormap;
-         }
-       else
-         {
-            ewin->client.cmap = 0;
-         }
-     }
-   else
-     {
-       ewin->client.cmap = 0;
-     }
+
+   ewin->client.cmap = 0;
+   if (XGetWindowAttributes(disp, ewin->client.win, &xwa) && xwa.colormap)
+      ewin->client.cmap = xwa.colormap;
+
    EDBUG_RETURN_;
 }
 
@@ -152,13 +164,11 @@
 ICCCM_Delete(EWin * ewin)
 {
    XClientMessageEvent ev;
-   static Atom         a1 = 0, a2 = 0;
-   Atom                a3, *prop;
-   unsigned long       lnum, ldummy;
-   int                 num, i, del, dummy;
-   unsigned char      *puc;
+   Atom               *prop;
+   int                 num, i, del;
 
    EDBUG(6, "ICCCM_Delete");
+
    if (ewin->internal)
      {
        XEvent              ev;
@@ -181,26 +191,12 @@
           DialogClose(ewin->dialog);
        EDBUG_RETURN_;
      }
-   if (!a1)
-     {
-       a1 = XInternAtom(disp, "WM_DELETE_WINDOW", False);
-       a2 = XInternAtom(disp, "WM_PROTOCOLS", False);
-     }
-   num = 0;
-   prop = NULL;
+
    del = 0;
-   if (!XGetWMProtocols(disp, ewin->client.win, &prop, &num))
-     {
-       puc = NULL;
-       XGetWindowProperty(disp, ewin->client.win, a2, 0, 10, False, a2, &a3,
-                          &dummy, &lnum, &ldummy, &puc);
-       prop = (Atom *) puc;
-       num = (int)lnum;
-     }
-   if (prop)
+   if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
      {
        for (i = 0; i < num; i++)
-          if (prop[i] == a1)
+          if (prop[i] == E_XA_WM_DELETE_WINDOW)
              del = 1;
        XFree(prop);
      }
@@ -208,9 +204,9 @@
      {
        ev.type = ClientMessage;
        ev.window = ewin->client.win;
-       ev.message_type = a2;
+       ev.message_type = E_XA_WM_PROTOCOLS;
        ev.format = 32;
-       ev.data.l[0] = a1;
+       ev.data.l[0] = E_XA_WM_DELETE_WINDOW;
        ev.data.l[1] = CurrentTime;
        XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
      }
@@ -218,6 +214,7 @@
      {
        XKillClient(disp, (XID) ewin->client.win);
      }
+
    EDBUG_RETURN_;
 }
 
@@ -225,23 +222,20 @@
 ICCCM_Save(EWin * ewin)
 {
    XClientMessageEvent ev;
-   static Atom         a1 = 0, a2 = 0;
 
    EDBUG(6, "ICCCM_Save");
+
    if (ewin->internal)
       EDBUG_RETURN_;
-   if (!a1)
-     {
-       a1 = XInternAtom(disp, "WM_SAVE_YOURSELF", False);
-       a2 = XInternAtom(disp, "WM_PROTOCOLS", False);
-     }
+
    ev.type = ClientMessage;
    ev.window = ewin->client.win;
-   ev.message_type = a2;
+   ev.message_type = E_XA_WM_PROTOCOLS;
    ev.format = 32;
-   ev.data.l[0] = a1;
+   ev.data.l[0] = E_XA_WM_SAVE_YOURSELF;
    ev.data.l[1] = CurrentTime;
    XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
+
    EDBUG_RETURN_;
 }
 
@@ -251,13 +245,16 @@
    unsigned long       c[2] = { IconicState, 0 };
 
    EDBUG(6, "ICCCM_Iconify");
+
    if (!ewin)
       EDBUG_RETURN_;
+
    XChangeProperty(disp, ewin->client.win, E_XA_WM_STATE, E_XA_WM_STATE,
                   32, PropModeReplace, (unsigned char *)c, 2);
    ewin->iconified = 3;
    AddItem(ewin, "ICON", ewin->client.win, LIST_TYPE_ICONIFIEDS);
    EUnmapWindow(disp, ewin->client.win);
+
    EDBUG_RETURN_;
 }
 
@@ -267,13 +264,16 @@
    unsigned long       c[2] = { NormalState, 0 };
 
    EDBUG(6, "ICCCM_DeIconify");
+
    if (!ewin)
       EDBUG_RETURN_;
+
    ewin->iconified = 0;
    XChangeProperty(disp, ewin->client.win, E_XA_WM_STATE, E_XA_WM_STATE,
                   32, PropModeReplace, (unsigned char *)c, 2);
    RemoveItem("ICON", ewin->client.win, LIST_FINDBY_BOTH, LIST_TYPE_ICONIFIEDS);
    EMapWindow(disp, ewin->client.win);
+
    EDBUG_RETURN_;
 }
 
@@ -285,6 +285,7 @@
    double              aspect;
 
    EDBUG(6, "ICCCM_MatchSize");
+
    w = ewin->client.w;
    h = ewin->client.h;
 
@@ -334,6 +335,7 @@
      }
    ewin->client.w = w;
    ewin->client.h = h;
+
    EDBUG_RETURN_;
 }
 
@@ -345,9 +347,11 @@
    int                 d;
 
    EDBUG(6, "ICCCM_Configure");
+
    d = ewin->desktop;
    if (d < 0)
       d = desks.current;
+
    if (ewin->shaded == 0)
      {
        xwc.x = ewin->border->border.left;
@@ -374,6 +378,7 @@
                    &xwc);
    if ((ewin->menu) || (ewin->dialog))
       EDBUG_RETURN_;
+
    ev.type = ConfigureNotify;
    ev.xconfigure.display = disp;
    ev.xconfigure.event = ewin->client.win;
@@ -386,6 +391,7 @@
    ev.xconfigure.above = ewin->win;
    ev.xconfigure.override_redirect = False;
    XSendEvent(disp, ewin->client.win, False, StructureNotifyMask, &ev);
+
    EDBUG_RETURN_;
 }
 
@@ -395,8 +401,10 @@
    Window              win = ewin->client.win;
 
    EDBUG(6, "ICCCM_AdoptStart");
+
    if (!ewin->internal)
       XAddToSaveSet(disp, win);
+
    EDBUG_RETURN_;
 }
 
@@ -408,6 +416,7 @@
    XWindowAttributes   att;
 
    EDBUG(6, "ICCCM_Adopt");
+
    if (!ewin->internal)
       XSetWindowBorderWidth(disp, win, 0);
    EReparentWindow(disp, win, ewin->win_container, 0, 0);
@@ -428,6 +437,7 @@
       ewin->client.w + ewin->border->border.left + ewin->border->border.right;
    ewin->h =
       ewin->client.h + ewin->border->border.top + ewin->border->border.bottom;
+
    EDBUG_RETURN_;
 }
 
@@ -437,8 +447,7 @@
    unsigned long       c[2] = { WithdrawnState, 0 };
 
    EDBUG(6, "ICCCM_Withdraw");
-   if (!ewin)
-      EDBUG_RETURN_;
+
    /* We have a choice of deleting the WM_STATE property
     * or changing the value to Withdrawn. Since twm/fvwm does
     * it that way, we change it to Withdrawn.
@@ -446,18 +455,19 @@
    XChangeProperty(disp, ewin->client.win, E_XA_WM_STATE, E_XA_WM_STATE,
                   32, PropModeReplace, (unsigned char *)c, 2);
    XRemoveFromSaveSet(disp, ewin->client.win);
+
    EDBUG_RETURN_;
 }
 
 void
 ICCCM_Cmap(EWin * ewin)
 {
-   static Atom         atom = 0;
    XWindowAttributes   xwa;
    Window             *wlist = NULL;
    int                 i, num;
 
    EDBUG(6, "ICCCM_Cmap");
+
    if (!ewin)
      {
        if (mode.current_cmap)
@@ -467,19 +477,19 @@
          }
        EDBUG_RETURN_;
      }
+
    if (mode.cur_menu_mode)
       EDBUG_RETURN_;
+
    ICCCM_GetColormap(ewin);
 
-   EDBUG(6, "ICCCM_GetColormap");
    if (ewin->internal)
       EDBUG_RETURN_;
 
    if ((ewin->client.cmap) && (mode.current_cmap != ewin->client.cmap))
      {
-       if (!atom)
-          atom = XInternAtom(disp, "WM_COLORMAP_WINDOWS", False);
-       wlist = AtomGet(ewin->client.win, atom, XA_WINDOW, &num);
+       wlist =
+          AtomGet(ewin->client.win, E_XA_WM_COLORMAP_WINDOWS, XA_WINDOW, &num);
        if (wlist)
          {
             for (i = 0; i < num; i++)
@@ -499,6 +509,7 @@
        XInstallColormap(disp, ewin->client.cmap);
        mode.current_cmap = ewin->client.cmap;
      }
+
    EDBUG_RETURN_;
 }
 
@@ -506,47 +517,33 @@
 ICCCM_Focus(EWin * ewin)
 {
    XClientMessageEvent ev;
-   static Atom         a1 = 0, a2 = 0;
-   Atom                a3, *prop;
-   unsigned long       lnum, ldummy;
-   int                 num, i, foc, dummy;
-   unsigned char      *puc;
+   Atom               *prop;
+   int                 num, i, foc;
 
    EDBUG(6, "ICCCM_Focus");
-   if (!a1)
-     {
-       a1 = XInternAtom(disp, "WM_TAKE_FOCUS", False);
-       a2 = XInternAtom(disp, "WM_PROTOCOLS", False);
-     }
-   num = 0;
-   prop = NULL;
-   foc = 0;
+
    if (!ewin)
      {
        XSetInputFocus(disp, root.win, RevertToPointerRoot, CurrentTime);
        HintsSetActiveWindow(ewin);
        EDBUG_RETURN_;
      }
+
    if (ewin->menu)
       EDBUG_RETURN_;
+
    if (!ewin->client.need_input)
      {
        if (!mode.cur_menu_mode)
           mode.context_ewin = ewin;
        EDBUG_RETURN_;
      }
-   if (!XGetWMProtocols(disp, ewin->client.win, &prop, &num))
-     {
-       puc = NULL;
-       XGetWindowProperty(disp, ewin->client.win, a2, 0, 10, False, a2, &a3,
-                          &dummy, &lnum, &ldummy, &puc);
-       prop = (Atom *) puc;
-       num = (int)lnum;
-     }
-   if (prop)
+
+   foc = 0;
+   if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
      {
        for (i = 0; i < num; i++)
-          if (prop[i] == a1)
+          if (prop[i] == E_XA_WM_TAKE_FOCUS)
              foc = 1;
        XFree(prop);
      }
@@ -554,15 +551,16 @@
      {
        ev.type = ClientMessage;
        ev.window = ewin->client.win;
-       ev.message_type = a2;
+       ev.message_type = E_XA_WM_PROTOCOLS;
        ev.format = 32;
-       ev.data.l[0] = a1;
+       ev.data.l[0] = E_XA_WM_TAKE_FOCUS;
        ev.data.l[1] = CurrentTime;
        XSendEvent(disp, ewin->client.win, False, 0, (XEvent *) & ev);
      }
 /*   else */
    XSetInputFocus(disp, ewin->client.win, RevertToPointerRoot, CurrentTime);
    HintsSetActiveWindow(ewin);
+
    EDBUG_RETURN_;
 }
 
@@ -576,15 +574,10 @@
    int                 x, y;
 
    EDBUG(6, "ICCCM_GetGeoms");
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_NORMAL_HINTS", False);
-       if (atom_change != atom)
-          EDBUG_RETURN_;
-     }
+   if (atom_change && atom_change != E_XA_WM_NORMAL_HINTS)
+      EDBUG_RETURN_;
+
    EGetGeometry(disp, ewin->client.win, &ww, &x, &y, &w, &h, &bw, &dummy);
    ewin->client.x = x;
    ewin->client.y = y;
@@ -737,6 +730,7 @@
       ewin->client.no_resize_h = 1;
    if (ewin->client.height.min == ewin->client.height.max)
       ewin->client.no_resize_v = 1;
+
    EDBUG_RETURN_;
 }
 
@@ -747,24 +741,10 @@
    XTextProperty       xtp;
    int                 cargc, i, size;
    char              **cargv, *s;
-   Atom                a3;
-   static Atom         a2 = 0;
-   unsigned long       lnum, ldummy;
-   int                 num, dummy;
-   char                ok = 1;
-   unsigned char      *puc;
 
    EDBUG(6, "ICCCM_GetInfo");
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_CLASS", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   if (atom_change == 0 || atom_change == E_XA_WM_CLASS)
      {
        if (XGetClassHint(disp, ewin->client.win, &hint))
          {
@@ -794,17 +774,8 @@
             ewin->client.class = NULL;
          }
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_COMMAND", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   if (atom_change == 0 || atom_change == E_XA_WM_COMMAND)
      {
        if (XGetCommand(disp, ewin->client.win, &cargv, &cargc))
          {
@@ -883,17 +854,8 @@
             ewin->client.command = NULL;
          }
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_CLIENT_MACHINE", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   if (atom_change == 0 || atom_change == E_XA_WM_CLIENT_MACHINE)
      {
        if (XGetWMClientMachine(disp, ewin->client.win, &xtp))
          {
@@ -914,17 +876,8 @@
             ewin->client.machine = NULL;
          }
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_ICON_NAME", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   if (atom_change == 0 || atom_change == E_XA_WM_ICON_NAME)
      {
        if (XGetWMIconName(disp, ewin->client.win, &xtp))
          {
@@ -981,67 +934,42 @@
             ewin->client.icon_name = NULL;
          }
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_WINDOW_ROLE", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
-     {
-       num = 0;
-       puc = NULL;
-       if (!a2)
-          a2 = XInternAtom(disp, "WM_WINDOW_ROLE", False);
-       XGetWindowProperty(disp, ewin->client.win, a2, 0, 10, False, XA_STRING,
-                          &a3, &dummy, &lnum, &ldummy, &puc);
-       s = (char *)puc;
-       num = (int)lnum;
+   if (atom_change == 0 || atom_change == E_XA_WM_WINDOW_ROLE)
+     {
+       s = AtomGet(ewin->client.win, E_XA_WM_WINDOW_ROLE, XA_STRING, &size);
        if (s)
          {
             if (ewin->client.role)
                Efree(ewin->client.role);
-            ewin->client.role = Emalloc(num + 1);
-            memcpy(ewin->client.role, s, num);
-            ewin->client.role[num] = 0;
-            XFree(s);
+            ewin->client.role = Emalloc(size + 1);
+            memcpy(ewin->client.role, s, size);
+            ewin->client.role[size] = 0;
+            Efree(s);
          }
      }
+
    EDBUG_RETURN_;
 }
 
 void
 ICCCM_GetHints(EWin * ewin, Atom atom_change)
 {
-   XWMHints           *hint = NULL;
+   XWMHints           *hint;
    Window              w;
-   static Atom         a = 0;
-   Atom                a2, *prop;
+   Atom               *prop;
    Window             *cleader;
-   unsigned long       lnum, ldummy;
-   int                 i, num, dummy;
-   static Atom         a3 = 0;
-   char                ok = 1;
-   unsigned char      *puc;
+   int                 i, num;
 
    EDBUG(6, "ICCCM_GetHints");
+
    if (ewin->internal)
       EDBUG_RETURN_;
+
    MWM_GetHints(ewin, atom_change);
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_HINTS", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   hint = NULL;
+   if (atom_change == 0 || atom_change == E_XA_WM_HINTS)
       hint = XGetWMHints(disp, ewin->client.win);
    if (hint)
      {
@@ -1057,6 +985,7 @@
                     ewin->docked = 1;
               }
          }
+
        if (hint->flags & InputHint)
          {
             if (hint->input)
@@ -1072,6 +1001,7 @@
          {
             ewin->client.need_input = 1;
          }
+
        if (hint->flags & StateHint)
          {
             if (hint->initial_state == IconicState)
@@ -1087,6 +1017,7 @@
          {
             ewin->client.start_iconified = 0;
          }
+
        if (hint->flags & IconPixmapHint)
          {
             ewin->client.icon_pmap = hint->icon_pixmap;
@@ -1095,6 +1026,7 @@
          {
             ewin->client.icon_pmap = 0;
          }
+
        if (hint->flags & IconMaskHint)
          {
             ewin->client.icon_mask = hint->icon_mask;
@@ -1103,6 +1035,7 @@
          {
             ewin->client.icon_mask = 0;
          }
+
        if (hint->flags & IconWindowHint)
          {
             ewin->client.icon_win = hint->icon_window;
@@ -1111,6 +1044,7 @@
          {
             ewin->client.icon_win = 0;
          }
+
        if (hint->flags & WindowGroupHint)
          {
             ewin->client.group = hint->window_group;
@@ -1119,37 +1053,26 @@
          {
             ewin->client.group = 0;
          }
+
        XFree(hint);
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_PROTOCOLS", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
+   if (atom_change == 0 || atom_change == E_XA_WM_PROTOCOLS)
      {
        if (XGetWMProtocols(disp, ewin->client.win, &prop, &num))
          {
-            if (!a3)
-               a3 = XInternAtom(disp, "WM_TAKE_FOCUS", False);
-            if (prop)
-              {
-                 for (i = 0; i < num; i++)
-                    if (prop[i] == a3)
-                       ewin->client.need_input = 1;
-                 XFree(prop);
-              }
+            for (i = 0; i < num; i++)
+               if (prop[i] == E_XA_WM_TAKE_FOCUS)
+                  ewin->client.need_input = 1;
+            XFree(prop);
          }
      }
+
    if (!ewin->client.need_input)
      {
        ewin->skipfocus = 1;
      }
+
    if (XGetTransientForHint(disp, ewin->client.win, &w))
      {
        ewin->client.transient = 1;
@@ -1159,6 +1082,7 @@
      {
        ewin->client.transient = 0;
      }
+
    if (ewin->client.group == ewin->client.win)
      {
        ewin->client.is_group_leader = 1;
@@ -1167,32 +1091,20 @@
      {
        ewin->client.is_group_leader = 0;
      }
-   ok = 1;
-   if (atom_change)
-     {
-       static Atom         atom = 0;
 
-       if (!atom)
-          atom = XInternAtom(disp, "WM_CLIENT_LEADER", False);
-       if (atom_change != atom)
-          ok = 0;
-     }
-   if (ok)
-     {
-       if (!a)
-          a = XInternAtom(disp, "WM_CLIENT_LEADER", False);
-       puc = NULL;
-       XGetWindowProperty(disp, ewin->client.win, a, 0, 0x7fffffff, False,
-                          XA_WINDOW, &a2, &dummy, &lnum, &ldummy, &puc);
-       cleader = (Window *) puc;
+   if (atom_change == 0 || atom_change == E_XA_WM_CLIENT_LEADER)
+     {
+       cleader =
+          AtomGet(ewin->client.win, E_XA_WM_CLIENT_LEADER, XA_WINDOW, &num);
        if (cleader)
          {
             ewin->client.client_leader = *cleader;
             if (!ewin->client.group)
                ewin->client.group = *cleader;
-            XFree(cleader);
+            Efree(cleader);
          }
      }
+
    EDBUG_RETURN_;
 }
 
@@ -1206,10 +1118,12 @@
    Window              rt;
 
    EDBUG(6, "ICCCM_GetShapeInfo");
+
    GrabX();
    EGetGeometry(disp, ewin->client.win, &rt, &x, &y, &w, &h, &d, &d);
    rl = EShapeGetRectangles(disp, ewin->client.win, ShapeBounding, &rn, &ord);
    UngrabX();
+
    if (rn < 1)
      {
        ewin->client.shaped = 0;
@@ -1240,6 +1154,7 @@
      }
    if (rl)
       XFree(rl);
+
    EDBUG_RETURN_;
 }
 




-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to