Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
      Tag: branch-exp
        E.h buttons.c ecompmgr.c ecompmgr.h eobj.c ewin-ops.c ewins.c 
        ewmh.c ipc.c 


Log Message:
Use object stack in composite manager.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.67
retrieving revision 1.314.2.68
diff -u -3 -r1.314.2.67 -r1.314.2.68
--- E.h 5 Dec 2004 12:27:32 -0000       1.314.2.67
+++ E.h 9 Dec 2004 21:40:40 -0000       1.314.2.68
@@ -554,6 +554,10 @@
    int                 x, y;
    int                 w, h;
    char               *name;   /* Debug only */
+#if USE_COMPOSITE
+   unsigned int        opacity;
+   void               *cmhook;
+#endif
 };
 
 #define EOBJ_TYPE_EWIN      0
@@ -582,6 +586,7 @@
 #define EoSetFloating(eo, _x)   (eo)->o.floating = (_x)
 #define EoSetDesk(eo, _d)       EobjSetDesk(&((eo)->o), (_d))
 #define EoSetLayer(eo, _l)      EobjSetLayer(&((eo)->o), (_l))
+#define EoSetOpacity(eo, _o)    (eo)->o.opacity = (_o)
 
 typedef struct _constraints
 {
@@ -787,7 +792,6 @@
    void                (*MoveResize) (EWin * ewin, int resize);
    void                (*Refresh) (EWin * ewin);
    void                (*Close) (EWin * ewin);
-   void               *cmhook;
 };
 
 typedef struct _groupconfig
@@ -1572,7 +1576,7 @@
 /* eobj.c */
 EObj               *EobjCreate(Window win);
 void                EobjDestroy(EObj * eo);
-void                EobjRegister(Window win);
+EObj               *EobjRegister(Window win);
 void                EobjUnregister(Window win);
 const char         *EobjGetName(const EObj * eo);
 int                 EobjGetDesk(const EObj * eo);
@@ -1695,6 +1699,7 @@
 void                EwinOpShade(EWin * ewin, int on);
 void                EwinOpSetLayer(EWin * ewin, int layer);
 void                EwinOpSetBorder(EWin * ewin, const char *name);
+void                EwinOpSetOpacity(EWin * ewin, int opacity);
 void                EwinOpMoveToDesk(EWin * ewin, int desk);
 void                EwinOpMoveToArea(EWin * ewin, int x, int y);
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/buttons.c,v
retrieving revision 1.36.2.18
retrieving revision 1.36.2.19
diff -u -3 -r1.36.2.18 -r1.36.2.19
--- buttons.c   30 Nov 2004 23:31:51 -0000      1.36.2.18
+++ buttons.c   9 Dec 2004 21:40:41 -0000       1.36.2.19
@@ -84,9 +84,10 @@
 
    if (desk < 0 || desk >= DesksGetNumber())
       return NULL;
+   if (sticky && ontop == 1)
+      desk = 0;
 
    b = Ecalloc(1, sizeof(Button));
-   EoSetType(b, EOBJ_TYPE_BUTTON);
 
    b->name = Estrdup(name);
    b->label = Estrdup(label);
@@ -110,11 +111,6 @@
    b->label = label;
 
    b->flags = flags;
-   EoSetSticky(b, sticky);
-   if (sticky && ontop == 1)
-      desk = 0;
-   EoSetDesk(b, desk);
-   EoSetLayer(b, ontop);
    b->visible = 0;
    b->geom.width.min = minw;
    b->geom.width.max = maxw;
@@ -138,13 +134,6 @@
    b->default_show = 1;
    b->used = 0;
    b->left = 0;
-   EoSetWin(b, ECreateWindow(DeskGetWin(desk), -100, -100, 50, 50, 0));
-   XSelectInput(disp, EoGetWin(b), BUTTON_EVENT_MASK);
-   EventCallbackRegister(EoGetWin(b), 0, ButtonHandleEvents, b);
-   EoSetX(b, -1);
-   EoSetY(b, -1);
-   EoSetW(b, -1);
-   EoSetH(b, -1);
    b->cx = -10;
    b->cy = -10;
    b->cw = -10;
@@ -153,8 +142,23 @@
    b->expose = 0;
    b->ref_count = 0;
 
+   EoSetWin(b, ECreateWindow(DeskGetWin(desk), -100, -100, 50, 50, 0));
+   XSelectInput(disp, EoGetWin(b), BUTTON_EVENT_MASK);
+   EventCallbackRegister(EoGetWin(b), 0, ButtonHandleEvents, b);
+
+   EoSetType(b, EOBJ_TYPE_BUTTON);
+   EoSetX(b, -1);
+   EoSetY(b, -1);
+   EoSetW(b, -1);
+   EoSetH(b, -1);
+   EoSetSticky(b, sticky);
+   EoSetDesk(b, desk);
+   EoSetLayer(b, ontop);
+   EoSetOpacity(b, 0xFFFFFFFF);
+
    EobjListStackAdd(&b->o, 0);
    EwinListStackRaise(b);
+
    AddItem(b, b->name, id, LIST_TYPE_BUTTON);
 
    EDBUG_RETURN(b);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ecompmgr.c,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -3 -r1.1.2.6 -r1.1.2.7
--- ecompmgr.c  5 Dec 2004 12:27:33 -0000       1.1.2.6
+++ ecompmgr.c  9 Dec 2004 21:40:41 -0000       1.1.2.7
@@ -80,8 +80,6 @@
 
 #define CAN_DO_USABLE 0
 
-#define USE_MOSTLY_ROOT_EVENTS 1
-
 #define ENABLE_SHADOWS 1
 #define ENABLE_FADING  0
 
@@ -104,12 +102,10 @@
 
 extern Atom         _NET_WM_WINDOW_OPACITY;
 
-typedef struct _Win ECmWinInfo;        /* TBD */
+typedef struct _ecmwininfo ECmWinInfo; /* TBD */
 
-typedef struct _Win
+struct _ecmwininfo
 {
-   struct _Win        *next;
-   Window              id;
 #if HAS_NAME_WINDOW_PIXMAP
    Pixmap              pixmap;
 #endif
@@ -140,8 +136,7 @@
 
    /* for drawing translucent windows */
    XserverRegion       borderClip;
-   struct _Win        *prev_trans;
-} Win;
+};
 
 #if ENABLE_SHADOWS
 typedef enum _compMode
@@ -171,8 +166,6 @@
    char                active;
 } Mode_compmgr;
 
-static Win         *list;
-
 static Picture      rootPicture;
 static Picture      rootBuffer;
 
@@ -184,7 +177,6 @@
 static Bool         hasNamePixmap;
 #endif
 
-#define TRANSLUCENT    0xe0000000
 #define OPAQUE         0xffffffff
 
 #define WINDOW_SOLID   0
@@ -193,8 +185,9 @@
 
 #define TRANS_OPACITY  0.75
 
-static void         restack_win(Win * w, Window new_above);
 static void         ECompMgrDamageMerge(XserverRegion damage, int destroy);
+static void         ECompMgrHandleWindowEvent(XEvent * ev, void *prm);
+static void         ECompMgrWinNew(EObj * eo);
 
 static void
 ESelectInputAdd(Display * dpy, Window win, long mask)
@@ -404,10 +397,10 @@
 typedef struct _fade
 {
    struct _fade       *next;
-   Win                *w;
+   EObj               *eo;
    double              cur;
    double              step;
-   void                (*callback) (Display * dpy, Win * w, Bool gone);
+   void                (*callback) (Display * dpy, EObj * eo, Bool gone);
    Display            *dpy;
    Bool                gone;
 } fade;
@@ -429,16 +422,16 @@
 }
 
 static fade        *
-find_fade(Win * w)
+find_fade(EObj * eo)
 {
    fade               *f;
 
    for (f = fades; f; f = f->next)
      {
-       if (f->w == w)
+       if (f->eo == eo)
           return f;
      }
-   return 0;
+   return NULL;
 }
 
 static void
@@ -451,16 +444,16 @@
        {
           *prev = f->next;
           if (f->callback)
-             (*f->callback) (dpy, f->w, f->gone);
+             (*f->callback) (dpy, f->eo, f->gone);
           free(f);
           break;
        }
 }
 
 static void
-cleanup_fade(Display * dpy, Win * w)
+cleanup_fade(Display * dpy, EObj * eo)
 {
-   fade               *f = find_fade(w);
+   fade               *f = find_fade(eo);
 
    if (f)
       dequeue_fade(dpy, f);
@@ -476,17 +469,17 @@
 }
 
 static void
-set_fade(Display * dpy, Win * w, Bool in,
-        void (*callback) (Display * dpy, Win * w, Bool gone), Bool gone)
+set_fade(Display * dpy, EObj * eo, Bool in,
+        void (*callback) (Display * dpy, EObj * eo, Bool gone), Bool gone)
 {
    fade               *f;
 
-   f = find_fade(w);
+   f = find_fade(eo);
    if (!f)
      {
        f = malloc(sizeof(fade));
        f->next = 0;
-       f->w = w;
+       f->eo = eo;
        if (in)
           f->cur = 0;
        else
@@ -500,7 +493,7 @@
    f->callback = callback;
    f->gone = gone;
 
-   ECompMgrWinChangeOpacity(w, f->cur * OPAQUE);
+   ECompMgrWinChangeOpacity(eo, f->cur * OPAQUE);
 }
 
 static int
@@ -534,8 +527,6 @@
    steps = 1 + (now - fade_time) / fade_delta;
    for (next = fades; (f = next);)
      {
-       Win                *w = f->w;
-
        next = f->next;
        f->cur += f->step * steps;
        if (f->cur >= 1)
@@ -554,7 +545,7 @@
                dequeue_fade(dpy, f);
          }
 
-       ECompMgrWinChangeOpacity(w, f->cur * OPAQUE);
+       ECompMgrWinChangeOpacity(f->eo, f->cur * OPAQUE);
      }
    fade_time = now + fade_delta;
 }
@@ -819,10 +810,23 @@
  */
 
 static              XserverRegion
-win_extents(Display * dpy, Win * w)
+win_extents(Display * dpy, EObj * eo)
 {
+   ECmWinInfo         *w = eo->cmhook;
    XRectangle          r;
 
+#if HAS_NAME_WINDOW_PIXMAP
+   w->rcx = w->a.x;
+   w->rcy = w->a.y;
+   w->rcw = w->a.width + w->a.border_width * 2;
+   w->rch = w->w->a.height + w->a.border_width * 2;
+#else
+   w->rcx = w->a.x + w->a.border_width;
+   w->rcy = w->a.y + w->a.border_width;
+   w->rcw = w->a.width;
+   w->rch = w->a.height;
+#endif
+
    r.x = w->a.x;
    r.y = w->a.y;
    r.width = w->a.width + w->a.border_width * 2;
@@ -881,28 +885,29 @@
      }
 #endif
 
-   D2printf("win_extents %#lx %d %d %d %d\n", w->id, r.x, r.y, r.width,
+   D2printf("win_extents %#lx %d %d %d %d\n", eo->win, r.x, r.y, r.width,
            r.height);
 
    return XFixesCreateRegion(dpy, &r, 1);
 }
 
 static              XserverRegion
-border_size(Display * dpy, Win * w)
+border_size(EObj * eo)
 {
+   ECmWinInfo         *w = eo->cmhook;
    XserverRegion       border;
 
-   set_ignore(dpy, NextRequest(dpy));
-   border = XFixesCreateRegionFromWindow(dpy, w->id, WindowRegionBounding);
+   set_ignore(disp, NextRequest(disp));
+   border = XFixesCreateRegionFromWindow(disp, eo->win, WindowRegionBounding);
 
    /* translate this */
-   set_ignore(dpy, NextRequest(dpy));
-   XFixesTranslateRegion(dpy, border,
+   set_ignore(disp, NextRequest(disp));
+   XFixesTranslateRegion(disp, border,
                         w->a.x + w->a.border_width,
                         w->a.y + w->a.border_width);
 
    D2printf("border_size %#lx: %d %d\n",
-           w->id, w->a.x + w->a.border_width, w->a.y + w->a.border_width);
+           eo->win, w->a.x + w->a.border_width, w->a.y + w->a.border_width);
 
    return border;
 }
@@ -913,6 +918,12 @@
 {
    Display            *dpy = disp;
 
+   if (w->extents != None)
+     {
+       XFixesDestroyRegion(dpy, w->extents);
+       w->extents = None;
+     }
+
 #if HAS_NAME_WINDOW_PIXMAP
    if (w->pixmap != None)
      {
@@ -936,11 +947,16 @@
      }
 
 #if ENABLE_SHADOWS
-   if (w->shadowPict != None)
+   if (w->shadow != None)
      {
        XRenderFreePicture(dpy, w->shadow);
        w->shadow = None;
      }
+   if (w->shadowPict != None)
+     {
+       XRenderFreePicture(dpy, w->shadowPict);
+       w->shadowPict = None;
+     }
 #endif
 
    if (w->borderClip != None)
@@ -951,7 +967,7 @@
 }
 
 static void
-ECompMgrWinInvalidateOpacity(Win * w)
+ECompMgrWinInvalidateOpacity(ECmWinInfo * w)
 {
    Display            *dpy = disp;
 
@@ -969,19 +985,21 @@
 #endif
 }
 
-static void
-ECompMgrWinChangeOpacity(ECmWinInfo * w, unsigned int opacity)
+void
+ECompMgrWinChangeOpacity(EObj * eo, unsigned int opacity)
 {
+   ECmWinInfo         *w = eo->cmhook;
    Display            *dpy = disp;
    int                 mode;
    XRenderPictFormat  *pictfmt;
 
-   if (w->opacity == opacity)
+   if (!w || w->opacity == opacity)
       return;
 
    w->opacity = opacity;
 
-   D1printf("ECompMgrWinChangeOpacity: %#lx opacity=%#x\n", w->id, w->opacity);
+   D1printf("ECompMgrWinChangeOpacity: %#lx opacity=%#x\n", eo->win,
+           w->opacity);
 
    /* Invalidate stuff changed by opacity */
    ECompMgrWinInvalidateOpacity(w);
@@ -1004,30 +1022,41 @@
 }
 
 static void
-ECompMgrWinMap(ECmWinInfo * w, unsigned long sequence __UNUSED__,
+ECompMgrWinMap(EObj * eo, unsigned long sequence __UNUSED__,
               Bool do_fade __UNUSED__)
 {
+   ECmWinInfo         *w = eo->cmhook;
+
    if (!w)
-      return;
+     {
+       ECompMgrWinNew(eo);
+       w = eo->cmhook;
+       if (!w)
+          return;
+     }
+
    w->a.map_state = IsViewable;
 
-   D1printf("ECompMgrWinMap %#lx\n", w->id);
+   D1printf("ECompMgrWinMap %#lx\n", eo->win);
 #if CAN_DO_USABLE
    w->damage_bounds.x = w->damage_bounds.y = 0;
    w->damage_bounds.width = w->damage_bounds.height = 0;
 #endif
+#if 0
    w->damaged = 0;
+#endif
 
    if (w->extents)
-     {
-       XFixesDestroyRegion(disp, w->extents);
-     }
-   w->extents = win_extents(disp, w);
+      XFixesDestroyRegion(disp, w->extents);
+   w->extents = win_extents(disp, eo);
 }
 
 static void
-finish_unmap_win(Display * dpy __UNUSED__, Win * w)
+finish_unmap_win(EObj * eo)
 {
+   ECmWinInfo         *w = eo->cmhook;
+
+#if 0
    w->damaged = 0;
 
 #if CAN_DO_USABLE
@@ -1041,6 +1070,10 @@
        ECompMgrDamageMerge(w->extents, 1);
        w->extents = None;
      }
+#else
+   if (w->extents != None)
+      ECompMgrDamageMerge(w->extents, 0);
+#endif
 
    clipChanged = True;
 }
@@ -1048,7 +1081,7 @@
 #if ENABLE_FADING
 #if HAS_NAME_WINDOW_PIXMAP
 static void
-unmap_callback(Display * dpy, Win * w, Bool gone __UNUSED__)
+unmap_callback(Display * dpy, ECmWinInfo * w, Bool gone __UNUSED__)
 {
    finish_unmap_win(dpy, w);
 }
@@ -1056,219 +1089,156 @@
 #endif
 
 static void
-ECompMgrWinUnmap(ECmWinInfo * w, Bool do_fade __UNUSED__)
+ECompMgrWinUnmap(EObj * eo, Bool do_fade __UNUSED__)
 {
-   if (!w)
-      return;
-
-   D1printf("ECompMgrWinUnmap %#lx\n", w->id);
+   D1printf("ECompMgrWinUnmap %#lx\n", eo->win);
 
 #if ENABLE_FADING
 #if HAS_NAME_WINDOW_PIXMAP
+   ECmWinInfo         *w = eo->cmhook;
+
    if (w->pixmap && do_fade && fadeWindows)
       set_fade(dpy, w, False, unmap_callback, False);
    else
 #endif
 #endif
-      finish_unmap_win(disp, w);
+      finish_unmap_win(eo);
 }
 
-/* Get the opacity prop from window
-   not found: default
-   otherwise the value
- */
-static unsigned int
-get_opacity_prop(Win * w, unsigned int def)
+static void
+ECompMgrWinNew(EObj * eo)
 {
-   Atom                actual;
-   int                 pictfmt;
-   unsigned long       n, left;
-   unsigned char      *data;
+   ECmWinInfo         *w;
 
-   data = NULL;
-   XGetWindowProperty(disp, w->id, _NET_WM_WINDOW_OPACITY, 0L, 1L, False,
-                     XA_CARDINAL, &actual, &pictfmt, &n, &left, &data);
-   if (data)
-     {
-       unsigned int        i;
-       memcpy(&i, data, sizeof(unsigned int));
-       XFree(data);
-       return i;
-     }
-   return def;
-}
-
-static ECmWinInfo  *
-ECompMgrWinNew(Window id, Window prev)
-{
-   Win                *new = malloc(sizeof(Win));
-   Win               **p;
-   Display            *dpy = disp;
+   w = Ecalloc(1, sizeof(ECmWinInfo));
+   if (!w)
+      return;
 
-   if (!new)
-      return NULL;
+   D1printf("ECompMgrWinNew %#lx\n", eo->win);
 
-   if (prev)
+   set_ignore(disp, NextRequest(disp));
+   if (!XGetWindowAttributes(disp, eo->win, &w->a))
      {
-       for (p = &list; *p; p = &(*p)->next)
-          if ((*p)->id == prev)
-             break;
+       free(w);
+       return;
      }
-   else
-      p = &list;
-   new->id = id;
 
-   D1printf("ECompMgrWinNew %#lx\n", new->id);
+   eo->cmhook = w;
 
-   set_ignore(dpy, NextRequest(dpy));
-   if (!XGetWindowAttributes(dpy, id, &new->a))
-     {
-       free(new);
-       return NULL;
-     }
-   new->damaged = 0;
+   w->damaged = 0;
 #if CAN_DO_USABLE
-   new->usable = False;
+   w->usable = False;
 #endif
 #if HAS_NAME_WINDOW_PIXMAP
-   new->pixmap = None;
+   w->pixmap = None;
 #endif
-   new->picture = None;
-   if (new->a.class == InputOnly)
+   w->picture = None;
+   if (w->a.class == InputOnly)
      {
-       new->damage_sequence = 0;
-       new->damage = None;
+       w->damage_sequence = 0;
+       w->damage = None;
      }
    else
      {
-       new->damage_sequence = NextRequest(dpy);
-       new->damage = XDamageCreate(dpy, id, XDamageReportNonEmpty);
+       w->damage_sequence = NextRequest(disp);
+       w->damage = XDamageCreate(disp, eo->win, XDamageReportNonEmpty);
      }
 
-   new->alphaPict = None;
-   new->borderSize = None;
-   new->extents = None;
+   w->alphaPict = None;
+   w->borderSize = None;
+   w->extents = None;
 #if ENABLE_SHADOWS
-   new->shadowPict = None;
-   new->shadow = None;
-   new->shadow_dx = 0;
-   new->shadow_dy = 0;
-   new->shadow_width = 0;
-   new->shadow_height = 0;
+   w->shadowPict = None;
+   w->shadow = None;
+   w->shadow_dx = 0;
+   w->shadow_dy = 0;
+   w->shadow_width = 0;
+   w->shadow_height = 0;
 #endif
-   new->opacity = OPAQUE;
 
-   new->borderClip = None;
-   new->prev_trans = 0;
+   w->borderClip = None;
 
    /* moved mode setting to one place */
-   ESelectInputAdd(dpy, id, PropertyChangeMask);
-   new->opacity = 0xdeadbeef;
-   ECompMgrWinChangeOpacity(new, get_opacity_prop(new, OPAQUE));
+   ESelectInputAdd(disp, eo->win, PropertyChangeMask);
+
+   /* Find new window region */
+   w->extents = win_extents(disp, eo);
+
+   clipChanged = True;
+
+   w->opacity = 0xdeadbeef;
+   ECompMgrWinChangeOpacity(eo, eo->opacity);
 
-   new->next = *p;
-   *p = new;
-   if (new->a.map_state == IsViewable)
-      ECompMgrWinMap(new, new->damage_sequence - 1, False);
+   EventCallbackRegister(eo->win, 0, ECompMgrHandleWindowEvent, eo);
 
-   return new;
+#if 0
+   if (w->a.map_state == IsViewable)
+      ECompMgrWinMap(eo, w->damage_sequence - 1, False);
+#endif
 }
 
 static void
-ECompMgrWinConfigure(ECmWinInfo * w, XEvent * ev)
+ECompMgrWinConfigure(EObj * eo, XEvent * ev)
 {
-   Display            *dpy = disp;
+   ECmWinInfo         *w = eo->cmhook;
    XserverRegion       damage = None;
+   int                 change_xy, change_wh, change_bw;
 
-   if (!w)
-      return;
-
-   D1printf("ECompMgrWinConfigure %#lx %#lx\n", w->id, w->extents);
+   D1printf("ECompMgrWinConfigure %#lx %#lx\n", eo->win, w->extents);
 
    /* Invalidate old window region */
 #if CAN_DO_USABLE
    if (w->usable)
 #endif
      {
-       damage = XFixesCreateRegion(dpy, 0, 0);
+       damage = XFixesCreateRegion(disp, 0, 0);
        if (w->extents != None)
-          XFixesCopyRegion(dpy, damage, w->extents);
+          XFixesCopyRegion(disp, damage, w->extents);
        if (EventDebug(EDBUG_TYPE_COMPMGR3))
           ERegionShow("ECompMgrWinConfigure old-extents:", damage);
      }
 
-   w->a.x = ev->xconfigure.x;
-   w->a.y = ev->xconfigure.y;
-   if (w->a.width != ev->xconfigure.width ||
-       w->a.height != ev->xconfigure.height)
-     {
-#if HAS_NAME_WINDOW_PIXMAP
-       if (w->pixmap)
-         {
-            XFreePixmap(dpy, w->pixmap);
-            w->pixmap = None;
-            if (w->picture)
-              {
-                 XRenderFreePicture(dpy, w->picture);
-                 w->picture = None;
-              }
-         }
-#endif
-#if ENABLE_SHADOWS
-       if (w->shadow)
-         {
-            XRenderFreePicture(dpy, w->shadow);
-            w->shadow = None;
-         }
-#endif
-     }
-
-   w->a.width = ev->xconfigure.width;
-   w->a.height = ev->xconfigure.height;
-   w->a.border_width = ev->xconfigure.border_width;
+   /* Can this change ?!? */
    w->a.override_redirect = ev->xconfigure.override_redirect;
-   restack_win(w, ev->xconfigure.above);
 
-#if HAS_NAME_WINDOW_PIXMAP
-   w->rcx = w->a.x;
-   w->rcy = w->a.y;
-   w->rcw = w->a.width + w->a.border_width * 2;
-   w->rch = w->w->a.height + w->a.border_width * 2;
-#else
-   w->rcx = w->a.x + w->a.border_width;
-   w->rcy = w->a.y + w->a.border_width;
-   w->rcw = w->a.width;
-   w->rch = w->a.height;
-#endif
+   change_xy = w->a.x != ev->xconfigure.x || w->a.y != ev->xconfigure.y;
+   change_wh = w->a.width != ev->xconfigure.width ||
+      w->a.height != ev->xconfigure.height;
+   change_bw = w->a.border_width != ev->xconfigure.border_width;
 
-   /* Find new window region */
-   w->extents = win_extents(dpy, w);
+   if (change_xy || change_wh || change_bw)
+     {
+       ECompMgrWinInvalidateSize(w);
+
+       w->a.x = ev->xconfigure.x;
+       w->a.y = ev->xconfigure.y;
+       w->a.width = ev->xconfigure.width;
+       w->a.height = ev->xconfigure.height;
+       w->a.border_width = ev->xconfigure.border_width;
 
+       /* Find new window region */
+       w->extents = win_extents(disp, eo);
+     }
+
+   /* Hmmm. Why if not changed? */
    /* Invalidate new window region */
-   XFixesUnionRegion(dpy, damage, damage, w->extents);
+   XFixesUnionRegion(disp, damage, damage, w->extents);
    ECompMgrDamageMerge(damage, 1);
 
    clipChanged = True;
 }
 
 static void
-ECompMgrWinCirculate(ECmWinInfo * w, XEvent * ev)
+ECompMgrWinCirculate(EObj * eo, XEvent * ev)
 {
-   Window              new_above;
-
-   D1printf("ECompMgrWinCirculate %#lx %#lx\n", ev->xany.window, w->id);
-
-   if (ev->xcirculate.place == PlaceOnTop)
-      new_above = list->id;
-   else
-      new_above = None;
-   restack_win(w, new_above);
+   D1printf("ECompMgrWinCirculate %#lx %#lx\n", ev->xany.window, eo->win);
 
+   /* FIXME - Check if stacking was changed */
    clipChanged = True;
 }
 
 static void
-ECompMgrWinInvalidateAll(Win * w)
+ECompMgrWinInvalidateAll(ECmWinInfo * w)
 {
    /* Free pixmap, picture, borderSize, shadowPict, borderClip */
    ECompMgrWinInvalidateSize(w);
@@ -1278,86 +1248,71 @@
 }
 
 static void
-finish_destroy_win(Display * dpy, Window id, Bool gone)
+finish_destroy_win(EObj * eo, Bool gone)
 {
-   Win               **prev, *w;
-
-   for (prev = &list; (w = *prev); prev = &w->next)
-     {
-       if (w->id != id)
-          continue;
+   ECmWinInfo         *w = eo->cmhook;
 
-       if (!gone)
-          finish_unmap_win(dpy, w);
-
-       *prev = w->next;
-       goto cleanup;
-     }
-
-   /* No match */
-   return;
-
- cleanup:
+   if (!gone)
+      finish_unmap_win(eo);
 
    ECompMgrWinInvalidateAll(w);
 
    if (w->damage != None)
      {
        set_ignore(dpy, NextRequest(dpy));
-       XDamageDestroy(dpy, w->damage);
+       XDamageDestroy(disp, w->damage);
      }
 
 #if ENABLE_FADING
-   cleanup_fade(dpy, w);
+   cleanup_fade(disp, eo);
 #endif
-   free(w);
+
+   _EFREE(eo->cmhook);
 }
 
 #if ENABLE_FADING
 #if HAS_NAME_WINDOW_PIXMAP
 static void
-destroy_callback(Display * dpy, Win * w, Bool gone)
+destroy_callback(EObj * eo, Bool gone)
 {
-   finish_destroy_win(dpy, w->id, gone);
+   finish_destroy_win(eo, gone);
 }
 #endif
 #endif
 
 static void
-ECompMgrWinDel(ECmWinInfo * w, Bool gone, Bool do_fade)
+ECompMgrWinDel(EObj * eo, Bool gone, Bool do_fade)
 {
-   Display            *dpy = disp;
-
-   if (!w)
-      return;
-
-   D1printf("ECompMgrWinDel %#lx\n", w->id);
+#if ENABLE_FADING
+#if HAS_NAME_WINDOW_PIXMAP
+   ECmWinInfo         *w = eo->cmhook;
+#endif
+#endif
+   D1printf("ECompMgrWinDel %#lx\n", eo->win);
 
 #if ENABLE_FADING
 #if HAS_NAME_WINDOW_PIXMAP
    if (w && w->pixmap && do_fade && fadeWindows)
-      set_fade(dpy, w, False, destroy_callback, gone);
+      set_fade(disp, w, False, destroy_callback, gone);
    else
 #endif
 #endif
-     {
-       finish_destroy_win(dpy, w->id, gone);
-     }
+      finish_destroy_win(eo, gone);
    do_fade = False;
+
+   EventCallbackUnregister(eo->win, 0, ECompMgrHandleWindowEvent, eo);
 }
 
 static void
-ECompMgrWinDamage(Win * w, XEvent * ev __UNUSED__)
+ECompMgrWinDamage(EObj * eo, XEvent * ev __UNUSED__)
 {
+   ECmWinInfo         *w = eo->cmhook;
    Display            *dpy = disp;
    XDamageNotifyEvent *de = (XDamageNotifyEvent *) ev;
    XserverRegion       parts;
 
-   if (!w)
-      return;
-
-   D1printf("ECompMgrWinDamage %#lx %#lx %d %d %d %d\n",
-           ev->xany.window, w->id,
+   D1printf("ECompMgrWinDamage %#lx %#lx damaged=%d %d,%d %dx%d\n",
+           ev->xany.window, eo->win, w->damaged,
            de->area.x, de->area.y, de->area.width, de->area.height);
 
 #if CAN_DO_USABLE
@@ -1419,7 +1374,7 @@
 
    if (!w->damaged)
      {
-       parts = win_extents(dpy, w);
+       parts = win_extents(dpy, eo);
        set_ignore(dpy, NextRequest(dpy));
        XDamageSubtract(dpy, w->damage, None, None);
      }
@@ -1448,58 +1403,24 @@
    w->damaged = 1;
 }
 
+#if 0                          /* FIXME - Remove */
 static void
-ECompMgrWinProperty(Win * w, XEvent * ev)
+ECompMgrWinProperty(EObj * eo, XEvent * ev)
 {
-   if (!w)
-      return;
-
    /* check if Trans property was changed */
    if (ev->xproperty.atom == _NET_WM_WINDOW_OPACITY)
      {
        /* reset mode and redraw window */
-       D1printf("ECompMgrWinProperty %#lx\n", w->id);
+       D1printf("ECompMgrWinProperty %#lx\n", eo->win);
 
-       ECompMgrWinChangeOpacity(w, get_opacity_prop(w, OPAQUE));
-     }
-}
-
-static void
-restack_win(Win * w, Window new_above)
-{
-   Window              old_above;
-
-   D2printf("restack_win %#lx\n", w->id);
-
-   if (w->next)
-      old_above = w->next->id;
-   else
-      old_above = None;
-
-   if (old_above != new_above)
-     {
-       Win               **prev;
-
-       /* unhook */
-       for (prev = &list; *prev; prev = &(*prev)->next)
-          if ((*prev) == w)
-             break;
-       *prev = w->next;
-
-       /* rehook */
-       for (prev = &list; *prev; prev = &(*prev)->next)
-         {
-            if ((*prev)->id == new_above)
-               break;
-         }
-       w->next = *prev;
-       *prev = w;
+       ECompMgrWinChangeOpacity(eo, get_opacity_prop(eo, OPAQUE));
      }
 }
+#endif
 
 /* Ensure that the blend mask is up to date */
 static void
-ECompMgrCheckAlphaMask(Win * w)
+ECompMgrCheckAlphaMask(ECmWinInfo * w)
 {
    if (w->opacity != OPAQUE && !w->alphaPict)
       w->alphaPict = EPictureCreateSolid(False, (double)w->opacity / OPAQUE,
@@ -1509,7 +1430,9 @@
 static void
 ECompMgrRepaint(Display * dpy, XserverRegion region)
 {
-   Win                *w, *t;
+   EObj               *const *lst, *eo;
+   int                 i, num;
+   ECmWinInfo         *w;
    Picture             pict, pbuf;
    XRenderPictFormat  *pictfmt;
 
@@ -1523,13 +1446,6 @@
                                        VRoot.depth, VRoot.vis);
    pbuf = rootBuffer;
 
-   /* Reverse link the list(?) */
-   for (w = list, t = NULL; w; w = w->next)
-     {
-       w->prev_trans = t;
-       t = w;
-     }
-
    XFixesSetPictureClipRegion(dpy, pbuf, 0, 0, region);
 
    /* Draw desktop background picture */
@@ -1538,8 +1454,17 @@
    XRenderComposite(dpy, PictOpSrc, pict, None, pbuf,
                    0, 0, 0, 0, 0, 0, VRoot.w, VRoot.h);
 
-   for (w = t; w; w = w->prev_trans)
+   lst = EobjListStackGetForDesk(&num, 0 /*desk */ );
+
+   for (i = num - 1; i >= 0; i--)
      {
+       eo = lst[i];
+       if (!eo->cmhook)
+         {
+            Eprintf("??? %#lx %s\n", eo->win, EobjGetName(eo));
+         }
+       w = eo->cmhook;
+
 #if CAN_DO_USABLE
        if (!w->usable)
           continue;
@@ -1551,11 +1476,11 @@
          {
             XRenderPictureAttributes pa;
 
-            Drawable            draw = w->id;
+            Drawable            draw = eo->win;
 
 #if HAS_NAME_WINDOW_PIXMAP
             if (hasNamePixmap && !w->pixmap)
-               w->pixmap = XCompositeNameWindowPixmap(dpy, w->id);
+               w->pixmap = XCompositeNameWindowPixmap(dpy, eo->win);
             if (w->pixmap)
                draw = w->pixmap;
 #endif
@@ -1565,7 +1490,7 @@
                                               pictfmt, CPSubwindowMode, &pa);
          }
 
-       D2printf("paint %#lx %d %#lx\n", w->id, w->mode, w->picture);
+       D2printf("paint %#lx %d %#lx\n", eo->win, w->mode, w->picture);
 #if 0                          /* FIXME - Why? */
        if (clipChanged)
          {
@@ -1590,13 +1515,13 @@
 
        /* Region of shaped window in screen coordinates */
        if (!w->borderSize)
-          w->borderSize = border_size(dpy, w);
+          w->borderSize = border_size(eo);
        if (EventDebug(EDBUG_TYPE_COMPMGR3))
           ERegionShow("Window borderSize", w->borderSize);
 
        /* Region of window in screen coordinates */
        if (!w->extents)
-          w->extents = win_extents(dpy, w);
+          w->extents = win_extents(dpy, eo);
        if (EventDebug(EDBUG_TYPE_COMPMGR3))
           ERegionShow("Window extents", w->extents);
 
@@ -1612,14 +1537,14 @@
          }
 #endif
 
-#if 1
+#if 0
        if (!w->borderClip)
          {
             w->borderClip = XFixesCreateRegion(dpy, 0, 0);
             XFixesCopyRegion(dpy, w->borderClip, region);
          }
-#endif
        XFixesSetPictureClipRegion(dpy, pbuf, 0, 0, w->borderClip);
+#endif
 #if ENABLE_SHADOWS
        switch (Conf_compmgr.shadow)
          {
@@ -1778,21 +1703,6 @@
    DeskBackgroundPictureFree(desk);
 }
 
-#if USE_MOSTLY_ROOT_EVENTS
-
-static Win         *
-find_win(Window id)
-{
-   Win                *w;
-
-   for (w = list; w; w = w->next)
-      if (w->id == id)
-        return w;
-   return 0;
-}
-
-#endif
-
 static void
 ECompMgrStart(void)
 {
@@ -1841,7 +1751,7 @@
        break;
      }
 
-#if USE_MOSTLY_ROOT_EVENTS
+#if 0
    /* Build initial list of children */
    if (Conf_compmgr.mode != ECOMPMGR_MODE_AUTO)
      {
@@ -1867,6 +1777,9 @@
 static void
 ECompMgrStop(void)
 {
+   EObj               *const *lst;
+   int                 i, num;
+
    if (!Mode_compmgr.active)
       return;
    Mode_compmgr.active = 0;
@@ -1881,105 +1794,116 @@
 
    DeskBackgroundPictureFree(0);
 
-   while (list)
-      ECompMgrWinDel(list, False, False);
+   lst = EobjListStackGetForDesk(&num, 0 /*desk */ );
+
+   for (i = 0; i < num; i++)
+      ECompMgrWinDel(lst[i], False, False);
 
    XCompositeRedirectSubwindows(disp, VRoot.win, CompositeRedirectAutomatic);
 }
 
-#if USE_MOSTLY_ROOT_EVENTS
-#define _GET_WIN(a) find_win(a)
-#else
-#define _GET_WIN(a) ((Win*)((EWin*)prm)->cmhook)
-#endif
-
 static void
 ECompMgrHandleWindowEvent(XEvent * ev, void *prm)
 {
+   EObj               *eo = prm;
+
    switch (ev->type)
      {
-#if !USE_MOSTLY_ROOT_EVENTS
+#if 0
      case ConfigureNotify:
-       ECompMgrWinConfigure(_GET_WIN(ev->xconfigure.window), ev);
+       ECompMgrWinConfigure(eo, ev);
        break;
 
      case MapNotify:
-       ECompMgrWinMap(_GET_WIN(ev->xmap.window), ev->xmap.serial, True);
+       ECompMgrWinMap(eo, ev->xmap.serial, True);
        break;
      case UnmapNotify:
-       ECompMgrWinUnmap(_GET_WIN(ev->xunmap.window), True);
+       ECompMgrWinUnmap(eo, True);
        break;
 
      case CirculateNotify:
-       ECompMgrWinCirculate(_GET_WIN(ev->xcirculate.window), ev);
+       ECompMgrWinCirculate(eo, ev);
        break;
 #endif
 
+#if 0                          /* FIXME - Remove */
      case PropertyNotify:
-       ECompMgrWinProperty(_GET_WIN(ev->xproperty.window), ev);
+       ECompMgrWinProperty(eo, ev);
        break;
+#endif
 
      case EX_EVENT_DAMAGE_NOTIFY:
-       ECompMgrWinDamage(_GET_WIN(((XDamageNotifyEvent *) ev)->drawable), ev);
+       ECompMgrWinDamage(eo, ev);
        break;
      }
-
-#if USE_MOSTLY_ROOT_EVENTS
-   prm = NULL;
-#endif
 }
 
 static void
 ECompMgrHandleRootEvent(XEvent * ev, void *prm)
 {
+   EObj               *eo;
+
    switch (ev->type)
      {
-#if USE_MOSTLY_ROOT_EVENTS
      case CreateNotify:
+#if 0
       case_CreateNotify:
-       ECompMgrWinNew(ev->xcreatewindow.window, 0);
-       EventCallbackRegister(ev->xcreatewindow.window, 0,
-                             ECompMgrHandleWindowEvent, NULL);
+       eo = EobjListStackFind(ev->xcreatewindow.window);
+       if (eo)
+          ECompMgrWinNew(eo);
+#endif
        break;
      case DestroyNotify:
-       ECompMgrWinDel(_GET_WIN(ev->xdestroywindow.window), True, True);
-       EventCallbackUnregister(ev->xcreatewindow.window, 0,
-                               ECompMgrHandleWindowEvent, NULL);
-       EobjUnregister(ev->xmap.window);
+       eo = EobjListStackFind(ev->xdestroywindow.window);
+       if (eo && eo->cmhook)
+          ECompMgrWinDel(eo, True, True);
+       EobjUnregister(ev->xdestroywindow.window);
        break;
 
      case ReparentNotify:
+       eo = EobjListStackFind(ev->xreparent.window);
+       if (eo && eo->cmhook)
+          ECompMgrWinUnmap(eo, True);
+#if 0
        if (ev->xreparent.parent == VRoot.win)
           goto case_CreateNotify;
-       ECompMgrWinDel(_GET_WIN(ev->xreparent.window), False, True);
-       EventCallbackUnregister(ev->xcreatewindow.window, 0,
-                               ECompMgrHandleWindowEvent, NULL);
+       eo = EobjListStackFind(ev->xreparent.window);
+       if (eo)
+          ECompMgrWinDel(eo, False, True);
+#endif
        break;
 
      case ConfigureNotify:
        if (ev->xconfigure.window == VRoot.win)
-          ECompMgrRootConfigure(prm, ev);
+         {
+            ECompMgrRootConfigure(prm, ev);
+         }
        else
-          ECompMgrWinConfigure(_GET_WIN(ev->xconfigure.window), ev);
+         {
+            eo = EobjListStackFind(ev->xconfigure.window);
+            if (eo && eo->cmhook)
+               ECompMgrWinConfigure(eo, ev);
+         }
        break;
 
      case MapNotify:
-       EobjRegister(ev->xmap.window);
-       ECompMgrWinMap(_GET_WIN(ev->xmap.window), ev->xmap.serial, True);
+       eo = EobjListStackFind(ev->xmap.window);
+       if (!eo)
+          eo = EobjRegister(ev->xmap.window);
+       if (eo)
+          ECompMgrWinMap(eo, ev->xmap.serial, True);
        break;
      case UnmapNotify:
-       ECompMgrWinUnmap(_GET_WIN(ev->xunmap.window), True);
+       eo = EobjListStackFind(ev->xunmap.window);
+       if (eo && eo->cmhook)
+          ECompMgrWinUnmap(eo, True);
        break;
 
      case CirculateNotify:
-       ECompMgrWinCirculate(_GET_WIN(ev->xcirculate.window), ev);
+       eo = EobjListStackFind(ev->xcirculate.window);
+       if (eo && eo->cmhook)
+          ECompMgrWinCirculate(eo, ev);
        break;
-#else
-     case ConfigureNotify:
-       if (ev->xconfigure.window == VRoot.win)
-          ECompMgrRootConfigure(prm, ev);
-       break;
-#endif
 
      case Expose:
        ECompMgrRootExpose(prm, ev);
@@ -2031,10 +1955,6 @@
 static void
 ECompMgrSighan(int sig, void *prm)
 {
-#if !USE_MOSTLY_ROOT_EVENTS
-   EWin               *ewin;
-#endif
-
    if (sig != ESIGNAL_INIT && Conf_compmgr.mode == ECOMPMGR_MODE_OFF)
       return;
 
@@ -2055,20 +1975,6 @@
      case ESIGNAL_IDLE:
        ECompMgrIdle();
        break;
-
-#if !USE_MOSTLY_ROOT_EVENTS
-     case ESIGNAL_EWIN_CREATE:
-       ewin = (EWin *) prm;
-       ewin->cmhook = ECompMgrWinNew(EoGetWin(ewin), None);
-       EventCallbackRegister(EoGetWin(ewin), 0, ECompMgrHandleWindowEvent,
-                             ewin);
-       break;
-
-     case ESIGNAL_EWIN_DESTROY:
-       ewin = (EWin *) prm;
-       ECompMgrWinDel(ewin->cmhook, True, True);
-       break;
-#endif
      }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ecompmgr.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -3 -r1.1.2.1 -r1.1.2.2
--- ecompmgr.h  5 Dec 2004 12:27:33 -0000       1.1.2.1
+++ ecompmgr.h  9 Dec 2004 21:40:42 -0000       1.1.2.2
@@ -3,4 +3,10 @@
 
 void                ECompMgrParseArgs(const char *args);
 
+#if USE_COMPOSITE
+void                ECompMgrWinChangeOpacity(EObj * eo, unsigned int opacity);
+#else
+#define ECompMgrWinChangeOpacity(eo, opacity)
+#endif
+
 #endif /* _ECOMPMGR_H */
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/eobj.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -3 -r1.1.2.2 -r1.1.2.3
--- eobj.c      5 Dec 2004 12:27:33 -0000       1.1.2.2
+++ eobj.c      9 Dec 2004 21:40:42 -0000       1.1.2.3
@@ -132,6 +132,7 @@
    eo->x = attr.y;
    eo->w = attr.width;
    eo->h = attr.height;
+   eo->opacity = 0xFFFFFFFF;
 
    return eo;
 }
@@ -143,19 +144,20 @@
    Efree(eo);
 }
 
-void
+EObj               *
 EobjRegister(Window win)
 {
    EObj               *eo;
 
    eo = EobjListStackFind(win);
    if (eo)
-      return;
+      return eo;
 
    eo = EobjCreate(win);
    if (!eo)
-      return;
+      return eo;
 
+   /* Just for debug */
    eo->name = e16_icccm_name_get(win);
 
    if (EventDebug(EDBUG_TYPE_EWINS))
@@ -163,6 +165,8 @@
 
    EobjSetLayer(eo, 80);
    EobjListStackAdd(eo, 1);
+
+   return eo;
 }
 
 void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewin-ops.c,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -3 -r1.1.2.20 -r1.1.2.21
--- ewin-ops.c  5 Dec 2004 11:07:20 -0000       1.1.2.20
+++ ewin-ops.c  9 Dec 2004 21:40:57 -0000       1.1.2.21
@@ -21,6 +21,7 @@
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 #include "E.h"
+#include "ecompmgr.h"
 #include <sys/time.h>
 
 void
@@ -1601,6 +1602,14 @@
 }
 
 void
+EwinOpSetOpacity(EWin * ewin, int opacity)
+{
+   HintsSetWindowOpacity(ewin, opacity);
+   ECompMgrWinChangeOpacity(&ewin->o, opacity);
+   RememberImportantInfoForEwin(ewin);
+}
+
+void
 EwinOpMoveToDesk(EWin * ewin, int desk)
 {
    MoveEwinToDesktop(ewin, desk);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewins.c,v
retrieving revision 1.1.2.33
retrieving revision 1.1.2.34
diff -u -3 -r1.1.2.33 -r1.1.2.34
--- ewins.c     5 Dec 2004 12:27:33 -0000       1.1.2.33
+++ ewins.c     9 Dec 2004 21:40:57 -0000       1.1.2.34
@@ -66,11 +66,6 @@
    ewin = Ecalloc(1, sizeof(EWin));
 
    ewin->state = (Mode.wm.startup) ? EWIN_STATE_STARTUP : EWIN_STATE_NEW;
-   EoSetType(ewin, EOBJ_TYPE_EWIN);
-   EoSetX(ewin, -1);
-   EoSetY(ewin, -1);
-   EoSetW(ewin, -1);
-   EoSetH(ewin, -1);
    ewin->lx = -1;
    ewin->ly = -1;
    ewin->lw = -1;
@@ -97,8 +92,6 @@
    ewin->client.mwm_func_minimize = 1;
    ewin->client.mwm_func_maximize = 1;
    ewin->client.mwm_func_close = 1;
-   EoSetDesk(ewin, DesksGetCurrent());
-   EoSetLayer(ewin, 4);
    EoSetWin(ewin, ECreateWindow(VRoot.win, -10, -10, 1, 1, 1));
    ewin->win_container = ECreateWindow(EoGetWin(ewin), 0, 0, 1, 1, 0);
 #if 0                          /* ENABLE_GNOME - Not actually used */
@@ -108,6 +101,15 @@
    ewin->area_x = -1;
    ewin->area_y = -1;
 
+   EoSetType(ewin, EOBJ_TYPE_EWIN);
+   EoSetX(ewin, -1);
+   EoSetY(ewin, -1);
+   EoSetW(ewin, -1);
+   EoSetH(ewin, -1);
+   EoSetDesk(ewin, DesksGetCurrent());
+   EoSetLayer(ewin, 4);
+   EoSetOpacity(ewin, 0xFFFFFFFF);
+
    att.event_mask = EWIN_CONTAINER_EVENT_MASK;
    att.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask;
    XChangeWindowAttributes(disp, ewin->win_container,
@@ -121,6 +123,7 @@
    ewin->client.win = win;
    FocusEwinSetGrabs(ewin);
    GrabButtonGrabs(ewin);
+
    EobjListStackAdd(&ewin->o, 0);
    EobjListFocusAdd(&ewin->o, 0);
 
@@ -1883,6 +1886,7 @@
      case LeaveNotify:
        FocusHandleLeave(NULL, ev);
        break;
+
      case MapRequest:
        AddToFamily(ev->xmaprequest.window);
        break;
@@ -1907,6 +1911,7 @@
 #endif
        EwinEventCirculateRequest(NULL, ev);
        break;
+
      default:
 #if 0
        Eprintf("EwinHandleEventsRoot: type=%2d win=%#lx\n",
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v
retrieving revision 1.55.2.18
retrieving revision 1.55.2.19
diff -u -3 -r1.55.2.18 -r1.55.2.19
--- ewmh.c      8 Dec 2004 20:06:16 -0000       1.55.2.18
+++ ewmh.c      9 Dec 2004 21:40:58 -0000       1.55.2.19
@@ -507,6 +507,7 @@
        ecore_x_netwm_opacity_set(ewin->client.win, opacity);
        ewin->props.opacity = opacity;
      }
+   EoSetOpacity(ewin, opacity);
    ecore_x_netwm_opacity_set(EoGetWin(ewin), opacity);
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.174.2.37
retrieving revision 1.174.2.38
diff -u -3 -r1.174.2.37 -r1.174.2.38
--- ipc.c       9 Dec 2004 19:22:20 -0000       1.174.2.37
+++ ipc.c       9 Dec 2004 21:40:58 -0000       1.174.2.38
@@ -746,7 +746,7 @@
             val = 0xff;
             sscanf(param1, "%i", &val);
             val = (val << 24) | (val << 16) | (val << 8) | val;
-            HintsSetWindowOpacity(ewin, val);
+            EwinOpSetOpacity(ewin, val);
          }
      }
    else if (!strncmp(operation, "border", 2))




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to