Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h eobj.c ewin-ops.c ewins.c ewmh.c hints.c ipc.c 
        moveresize.c snaps.c windowmatch.c 


Log Message:
Fix various opacity setting bugs.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.396
retrieving revision 1.397
diff -u -3 -r1.396 -r1.397
--- E.h 23 Mar 2005 18:28:31 -0000      1.396
+++ E.h 24 Mar 2005 23:38:07 -0000      1.397
@@ -538,6 +538,7 @@
 #define EoSetLayer(eo, _l)      EobjSetLayer(&((eo)->o), (_l))
 #if USE_COMPOSITE
 #define EoSetOpacity(eo, _o)    (eo)->o.opacity = (_o)
+#define EoGetOpacity(eo)        ((eo)->o.opacity)
 #define EoChangeOpacity(eo, _o) EobjChangeOpacity(&((eo)->o), _o)
 #define EoSetShadow(eo, _x)     (eo)->o.shadow = (_x)
 #define EoGetShadow(eo)         ((eo)->o.shadow)
@@ -728,7 +729,6 @@
       unsigned            vroot:1;     /* Virtual root window */
       unsigned            inhibit_iconify:1;
       unsigned            autosave:1;
-      unsigned int        opacity;
    } props;
    struct
    {
@@ -751,6 +751,7 @@
    {
       char               *wm_name;
       char               *wm_icon_name;
+      unsigned int        opacity;
    } ewmh;
    int                 shape_x, shape_y;
    int                 req_x, req_y;
@@ -1558,6 +1559,7 @@
 #define EWIN_CHANGE_ICON_PMAP   (1<<2)
 #define EWIN_CHANGE_DESKTOP     (1<<3)
 #define EWIN_CHANGE_LAYER       (1<<4)
+#define EWIN_CHANGE_OPACITY     (1<<5)
 
 void                EwinRefresh(EWin * ewin);
 void                EwinUpdateAfterMoveResize(EWin * ewin, int resize);
@@ -1589,8 +1591,6 @@
 void                EwinRememberPositionGet(EWin * ewin, int *px, int *py);
 
 void                EwinChange(EWin * ewin, unsigned int flag);
-void                EwinChangesStart(EWin * ewin);
-void                EwinChangesProcess(EWin * ewin);
 
 void                EwinsEventsConfigure(int mode);
 void                EwinsSetFree(void);
@@ -1655,8 +1655,8 @@
 void                EWMH_SetWindowName(Window win, const char *name);
 void                EWMH_SetWindowDesktop(const EWin * ewin);
 void                EWMH_SetWindowState(const EWin * ewin);
-void                EWMH_SetWindowBorder(EWin * ewin);
-void                EWMH_SetWindowOpacity(EWin * ewin, unsigned int opacity);
+void                EWMH_SetWindowBorder(const EWin * ewin);
+void                EWMH_SetWindowOpacity(const EWin * ewin);
 void                EWMH_GetWindowHints(EWin * ewin);
 void                EWMH_DelWindowHints(const EWin * ewin);
 void                EWMH_ProcessClientMessage(XClientMessageEvent * event);
@@ -1811,7 +1811,7 @@
 void                HintsSetWindowDesktop(EWin * ewin);
 void                HintsSetWindowArea(EWin * ewin);
 void                HintsSetWindowState(EWin * ewin);
-void                HintsSetWindowOpacity(EWin * ewin, unsigned int opacity);
+void                HintsSetWindowOpacity(EWin * ewin);
 void                HintsSetWindowHints(EWin * ewin);
 void                HintsSetWindowBorder(EWin * ewin);
 void                HintsGetWindowHints(EWin * ewin);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/eobj.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- eobj.c      19 Mar 2005 16:40:01 -0000      1.14
+++ eobj.c      24 Mar 2005 23:38:08 -0000      1.15
@@ -261,6 +261,7 @@
 void
 EobjChangeOpacity(EObj * eo, unsigned int opacity)
 {
+   eo->opacity = opacity;
    ECompMgrWinChangeOpacity(eo, opacity);
 }
 #endif
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewin-ops.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ewin-ops.c  19 Mar 2005 16:40:01 -0000      1.17
+++ ewin-ops.c  24 Mar 2005 23:38:08 -0000      1.18
@@ -1656,7 +1656,8 @@
    unsigned int        op;
 
    op = OpacityExt(opacity);
-   HintsSetWindowOpacity(ewin, op);
+   ewin->ewmh.opacity = op;
+   HintsSetWindowOpacity(ewin);
    EoChangeOpacity(ewin, op);
    SnapshotEwinUpdate(ewin, SNAP_USE_OPACITY);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewins.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- ewins.c     21 Mar 2005 19:02:49 -0000      1.33
+++ ewins.c     24 Mar 2005 23:38:08 -0000      1.34
@@ -41,6 +41,9 @@
    /* StructureNotifyMask | */ ResizeRedirectMask | \
    PropertyChangeMask | ColormapChangeMask | VisibilityChangeMask)
 
+static void         EwinChangesStart(EWin * ewin);
+static void         EwinChangesProcess(EWin * ewin);
+
 static void         EwinHandleEventsToplevel(XEvent * ev, void *prm);
 static void         EwinHandleEventsContainer(XEvent * ev, void *prm);
 static void         EwinHandleEventsClient(XEvent * ev, void *prm);
@@ -94,6 +97,9 @@
    ewin->client.mwm_func_minimize = 1;
    ewin->client.mwm_func_maximize = 1;
    ewin->client.mwm_func_close = 1;
+
+   ewin->ewmh.opacity = 0xFFFFFFFF;
+
    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 */
@@ -106,7 +112,6 @@
    EobjInit(&ewin->o, EOBJ_TYPE_EWIN, -1, -1, -1, -1);
    EoSetDesk(ewin, DesksGetCurrent());
    EoSetLayer(ewin, 4);
-   ewin->props.opacity = 0xFFFFFFFF;
 
    att.event_mask = EWIN_CONTAINER_EVENT_MASK;
    att.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask;
@@ -524,6 +529,8 @@
    SnapshotEwinMatch(ewin);    /* Saved settings */
    if (Mode.wm.startup)
       EHintsGetInfo(ewin);     /* E restart hints */
+   EoSetOpacity(ewin, ewin->ewmh.opacity);
+
    ICCCM_MatchSize(ewin);
 
    EwinAdopt(ewin);
@@ -538,6 +545,7 @@
       EwinInstantShade(ewin, 1);
 
    HintsSetWindowState(ewin);
+   HintsSetWindowOpacity(ewin);
    HintsSetClientList();
 
    if (EventDebug(EDBUG_TYPE_EWINS))
@@ -570,6 +578,8 @@
 
    WindowMatchEwinOps(ewin);   /* Window matches */
    SnapshotEwinMatch(ewin);    /* Saved settings */
+   EoSetOpacity(ewin, ewin->ewmh.opacity);
+
    ICCCM_MatchSize(ewin);
 
    EwinAdopt(ewin);
@@ -584,6 +594,7 @@
       EwinInstantShade(ewin, 1);
 
    HintsSetWindowState(ewin);
+   HintsSetWindowOpacity(ewin);
    HintsSetClientList();
 
    return ewin;
@@ -1724,6 +1735,12 @@
        ModulesSignal(ESIGNAL_EWIN_CHANGE_ICON, ewin);
      }
 
+   if (EWinChanges.flags & EWIN_CHANGE_OPACITY)
+     {
+       EoChangeOpacity(ewin, ewin->ewmh.opacity);
+       SnapshotEwinUpdate(ewin, SNAP_USE_OPACITY);
+     }
+
    EWinChanges.flags = 0;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- ewmh.c      19 Mar 2005 16:40:02 -0000      1.67
+++ ewmh.c      24 Mar 2005 23:38:08 -0000      1.68
@@ -391,7 +391,7 @@
 }
 
 void
-EWMH_SetWindowBorder(EWin * ewin)
+EWMH_SetWindowBorder(const EWin * ewin)
 {
    int                 val[4];
 
@@ -410,15 +410,10 @@
 }
 
 void
-EWMH_SetWindowOpacity(EWin * ewin, unsigned int opacity)
+EWMH_SetWindowOpacity(const EWin * ewin)
 {
-   if (ewin->props.opacity != opacity)
-     {
-       ecore_x_netwm_opacity_set(ewin->client.win, opacity);
-       ewin->props.opacity = opacity;
-     }
-   EoSetOpacity(ewin, opacity);
-   ecore_x_netwm_opacity_set(EoGetWin(ewin), opacity);
+   ecore_x_netwm_opacity_set(ewin->client.win, ewin->ewmh.opacity);
+   ecore_x_netwm_opacity_set(EoGetWin(ewin), ewin->ewmh.opacity);
 }
 
 /*
@@ -465,7 +460,7 @@
 
    num = ecore_x_netwm_desktop_get(ewin->client.win, &desk);
    if (num <= 0)
-      goto done;
+      return;
 
    if (desk == 0xFFFFFFFF)
      {
@@ -479,9 +474,6 @@
        EoSetSticky(ewin, 0);
      }
    EwinChange(ewin, EWIN_CHANGE_DESKTOP);
-
- done:
-   ;
 }
 
 static void
@@ -494,7 +486,7 @@
                                               ECORE_X_ATOM_NET_WM_STATE,
                                               &p_atoms);
    if (n_atoms <= 0)
-      goto done;
+      return;
 
    /* We must clear/set all according to not present/present */
 /* EoSetSticky(ewin, 0); Do not override if set via _NET_WM_DESKTOP */
@@ -533,9 +525,6 @@
 #endif
      }
    Efree(p_atoms);
-
- done:
-   ;
 }
 
 static void
@@ -548,7 +537,7 @@
                                               ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
                                               &p_atoms);
    if (n_atoms <= 0)
-      goto done;
+      return;
 
    atom = p_atoms[0];
    if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP)
@@ -599,9 +588,6 @@
      }
 #endif
    Efree(p_atoms);
-
- done:
-   ;
 }
 
 static void
@@ -630,8 +616,15 @@
    if (num <= 0)
       return;
 
-   ewin->props.opacity = opacity;
-   EWMH_SetWindowOpacity(ewin, opacity);
+   if (ewin->ewmh.opacity == opacity)
+      return;
+
+   ewin->ewmh.opacity = opacity;
+
+   /* Set frame window hint for xcompmgr */
+   ecore_x_netwm_opacity_set(EoGetWin(ewin), opacity);
+
+   EwinChange(ewin, EWIN_CHANGE_OPACITY);
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/hints.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- hints.c     19 Mar 2005 16:40:03 -0000      1.37
+++ hints.c     24 Mar 2005 23:38:09 -0000      1.38
@@ -184,10 +184,10 @@
 }
 
 void
-HintsSetWindowOpacity(EWin * ewin, unsigned int opacity)
+HintsSetWindowOpacity(EWin * ewin)
 {
 #if ENABLE_EWMH
-   EWMH_SetWindowOpacity(ewin, opacity);
+   EWMH_SetWindowOpacity(ewin);
 #endif
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.210
retrieving revision 1.211
diff -u -3 -r1.210 -r1.211
--- ipc.c       20 Mar 2005 15:58:51 -0000      1.210
+++ ipc.c       24 Mar 2005 23:38:09 -0000      1.211
@@ -442,11 +442,10 @@
           EwinOpIconify(ewin, !ewin->iconified);
        break;
 
-#if USE_COMPOSITE
      case EWIN_OP_OPACITY:
        if (!strcmp(param1, "?"))
          {
-            IpcPrintf("opacity: %u", ewin->props.opacity >> 24);
+            IpcPrintf("opacity: %u", ewin->ewmh.opacity >> 24);
             goto done;
          }
        val = 0xff;
@@ -454,6 +453,7 @@
        EwinOpSetOpacity(ewin, val);
        break;
 
+#if USE_COMPOSITE
      case EWIN_OP_SHADOW:
        on = EoGetShadow(ewin);
        if (SetEwinBoolean("shadow", &on, param1, 0))
@@ -1064,7 +1064,13 @@
             "Desktop      %i   Layer        %i(%i)\n"
             "Iconified    %i   Sticky       %i   Shaded       %i   Docked      
 %i\n"
             "State        %i   Shown        %i   Active       %i   Floating    
 %i\n"
-            "Member of groups        %i\n",
+            "Member of groups        %i\n"
+#if USE_COMPOSITE
+            "Opacity    %3i(%x)  Shadow       %i\n"
+#else
+            "Opacity    %3i\n"
+#endif
+            ,
             SS(ewin->icccm.wm_name),
             SS(ewin->icccm.wm_icon_name),
             SS(ewin->icccm.wm_res_name), SS(ewin->icccm.wm_res_class),
@@ -1103,7 +1109,11 @@
             EoGetLayer(ewin), ewin->o.ilayer,
             ewin->iconified, EoIsSticky(ewin), ewin->shaded,
             ewin->docked, ewin->state, ewin->shown, ewin->active,
-            EoIsFloating(ewin), ewin->num_groups);
+            EoIsFloating(ewin), ewin->num_groups, ewin->ewmh.opacity
+#if USE_COMPOSITE
+            , EoGetOpacity(ewin), EoGetShadow(ewin)
+#endif
+      );
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/moveresize.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- moveresize.c        19 Mar 2005 16:40:07 -0000      1.33
+++ moveresize.c        24 Mar 2005 23:38:11 -0000      1.34
@@ -142,7 +142,7 @@
                                    gwins[i]->shape_y);
          }
 
-       EoChangeOpacity(ewin, ewin->props.opacity);
+       EoChangeOpacity(ewin, ewin->ewmh.opacity);
        RaiseEwin(gwins[i]);
      }
    StackDesktop(EoGetDesk(ewin));      /* Restack to "un-float" */
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/snaps.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -3 -r1.89 -r1.90
--- snaps.c     24 Mar 2005 09:40:59 -0000      1.89
+++ snaps.c     24 Mar 2005 23:38:11 -0000      1.90
@@ -353,7 +353,7 @@
 static void
 SnapEwinOpacity(Snapshot * sn, EWin * ewin)
 {
-   sn->opacity = ewin->props.opacity >> 24;
+   sn->opacity = ewin->ewmh.opacity >> 24;
 }
 
 static void
@@ -1461,7 +1461,7 @@
 
 #if USE_COMPOSITE
    if (sn->use_flags & SNAP_USE_OPACITY)
-      ewin->props.opacity = OpacityExt(sn->opacity);
+      ewin->ewmh.opacity = OpacityExt(sn->opacity);
 
    if (sn->use_flags & SNAP_USE_SHADOW)
       EoSetShadow(ewin, sn->shadow);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/windowmatch.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- windowmatch.c       19 Mar 2005 16:40:18 -0000      1.28
+++ windowmatch.c       24 Mar 2005 23:38:12 -0000      1.29
@@ -702,11 +702,11 @@
        ewin->skipfocus = ewin->skiptask = ewin->skipwinlist;
        break;
 
-#if USE_COMPOSITE
      case EWIN_OP_OPACITY:
-       EoSetOpacity(ewin, OpacityExt(atoi(args)));
+       ewin->ewmh.opacity = OpacityExt(atoi(args));
        break;
 
+#if USE_COMPOSITE
      case EWIN_OP_SHADOW:
        WINOP_GET_BOOL(ewin->o.shadow, args);
        break;




-------------------------------------------------------
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://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to