Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h ecompmgr.c eobj.c eobj.h ewin-ops.c ewins.c ewins.h 
        focus.c ipc.c menus.c mod-misc.c moveresize.c snaps.c 
        tooltips.c windowmatch.c 


Log Message:
Make window opaque when focused (window option, enabled by default).
Clean up handling of opacity settings, move config options to misc.opacity.
Opacity values in configuration are now 0-100 in stead of 0-255.

===================================================================
RCS file: /cvs/e/e16/e/src/E.h,v
retrieving revision 1.540
retrieving revision 1.541
diff -u -3 -r1.540 -r1.541
--- E.h 29 Mar 2006 23:45:32 -0000      1.540
+++ E.h 2 Apr 2006 09:45:39 -0000       1.541
@@ -347,7 +347,6 @@
       char                warp;
       char                show_icons;
       int                 icon_size;
-      int                 opacity;
       struct
       {
         KeySym              left, right, up, down, escape, ret;
@@ -358,9 +357,14 @@
       int                 mode_move;
       int                 mode_resize;
       int                 mode_info;
-      int                 opacity;
       char                update_while_moving;
    } movres;
+   struct
+   {
+      int                 movres;
+      int                 menus;
+      int                 tooltips;
+   } opacity;
    struct
    {
       char                manual;
===================================================================
RCS file: /cvs/e/e16/e/src/ecompmgr.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -3 -r1.105 -r1.106
--- ecompmgr.c  19 Mar 2006 15:33:38 -0000      1.105
+++ ecompmgr.c  2 Apr 2006 09:45:39 -0000       1.106
@@ -142,12 +142,12 @@
       int                 offset_x, offset_y;
       struct
       {
-        unsigned int        opacity;
+        int                 opacity;
         int                 radius;
       } blur;
       struct
       {
-        unsigned int        opacity;
+        int                 opacity;
       } sharp;
    } shadows;
    struct
@@ -159,7 +159,7 @@
    struct
    {
       int                 mode;
-      unsigned int        opacity;
+      int                 opacity;
    } override_redirect;
 } Conf_compmgr;
 
@@ -2209,11 +2209,11 @@
 {
    Mode_compmgr.shadow_mode = mode;
 
-   if (Conf_compmgr.shadows.blur.opacity > 100)
-      Conf_compmgr.shadows.blur.opacity = 100;
+   Conf_compmgr.shadows.blur.opacity =
+      OpacityFix(Conf_compmgr.shadows.blur.opacity);
    Mode_compmgr.opac_blur = .01 * Conf_compmgr.shadows.blur.opacity;
-   if (Conf_compmgr.shadows.sharp.opacity > 100)
-      Conf_compmgr.shadows.sharp.opacity = 100;
+   Conf_compmgr.shadows.sharp.opacity =
+      OpacityFix(Conf_compmgr.shadows.sharp.opacity);
    Mode_compmgr.opac_sharp = .01 * Conf_compmgr.shadows.sharp.opacity;
 
    if (gaussianMap)
@@ -2267,13 +2267,10 @@
       return;
    Conf_compmgr.enable = Mode_compmgr.active = 1;
 
-   if (Conf_compmgr.override_redirect.opacity > 255)
-      Conf_compmgr.override_redirect.opacity = 100;
-   else if (Conf_compmgr.override_redirect.opacity > 100)      /* Fixup - 
Remove */
-      Conf_compmgr.override_redirect.opacity =
-        (Conf_compmgr.override_redirect.opacity * 100) / 255;
+   Conf_compmgr.override_redirect.opacity =
+      OpacityFix(Conf_compmgr.override_redirect.opacity);
    Mode_compmgr.opac_or =
-      ((Conf_compmgr.override_redirect.opacity * 255) / 100) << 24;
+      OpacityFromPercent(Conf_compmgr.override_redirect.opacity);
 
    pa.subwindow_mode = IncludeInferiors;
    pictfmt = XRenderFindVisualFormat(disp, VRoot.vis);
===================================================================
RCS file: /cvs/e/e16/e/src/eobj.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- eobj.c      18 Feb 2006 09:50:16 -0000      1.67
+++ eobj.c      2 Apr 2006 09:45:39 -0000       1.68
@@ -29,6 +29,34 @@
 #include "hints.h"
 #include "xwin.h"
 
+int
+OpacityFix(int op)
+{
+   if (op <= 0 || op > 255)
+      op = 100;
+   else if (op > 100)          /* Hack to convert old 0-255 range */
+      op = (100 * op) / 255;
+   return op;
+}
+
+unsigned int
+OpacityFromPercent(int opx)
+{
+   unsigned int        op = (unsigned int)opx;
+
+   /* op is 0-100, extend to 32 bit */
+   /* op <= 0 and op > 100 is mapped to 100 (opaque) */
+   if (op == 0 || op >= 100)
+      return 0xffffffff;
+   return op * 42949672;
+}
+
+int
+OpacityToPercent(unsigned int opacity)
+{
+   return (int)(opacity / 42949672);
+}
+
 void
 EobjSetLayer(EObj * eo, int layer)
 {
===================================================================
RCS file: /cvs/e/e16/e/src/eobj.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- eobj.h      22 Jan 2006 18:25:39 -0000      1.23
+++ eobj.h      2 Apr 2006 09:45:39 -0000       1.24
@@ -175,6 +175,8 @@
 void                EobjListOrderDel(EObj * eo);
 
 /* Hmmm. */
-unsigned int        OpacityExt(int op);
+int                 OpacityFix(int op);
+unsigned int        OpacityFromPercent(int op);
+int                 OpacityToPercent(unsigned int opacity);
 
 #endif /* _EOBJ_H_ */
===================================================================
RCS file: /cvs/e/e16/e/src/ewin-ops.c,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -3 -r1.91 -r1.92
--- ewin-ops.c  30 Mar 2006 22:35:20 -0000      1.91
+++ ewin-ops.c  2 Apr 2006 09:45:39 -0000       1.92
@@ -1792,25 +1792,15 @@
       Efree(gwins);
 }
 
-unsigned int
-OpacityExt(int op)
-{
-   /* op is 0-255, extend to 32 bit */
-   /* op = 0 is mapped to 255 (opaque) */
-   if (op <= 0 || op > 255)
-      op = 255;
-   return (op << 24) | (op << 16) | (op << 8) | op;
-}
-
 void
 EwinOpSetOpacity(EWin * ewin, int source __UNUSED__, int opacity)
 {
    unsigned int        op;
 
-   op = OpacityExt(opacity);
+   op = OpacityFromPercent(opacity);
    ewin->ewmh.opacity = op;
    HintsSetWindowOpacity(ewin);
-   EoChangeOpacity(ewin, op);
+   EwinUpdateOpacity(ewin);
    SnapshotEwinUpdate(ewin, SNAP_USE_OPACITY);
 }
 
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.c,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -3 -r1.148 -r1.149
--- ewins.c     29 Mar 2006 23:45:32 -0000      1.148
+++ ewins.c     2 Apr 2006 09:45:39 -0000       1.149
@@ -122,6 +122,7 @@
    ewin->area_y = -1;
 
    ewin->ewmh.opacity = 0;     /* If 0, ignore */
+   ewin->props.opaque_when_focused = 1;
 
    return ewin;
 }
@@ -1609,6 +1610,22 @@
    ewin->inh_app.all = fm.f.inh_app;
    ewin->inh_user.all = fm.f.inh_user;
    ewin->inh_wm.all = fm.f.inh_wm;
+}
+
+void
+EwinUpdateOpacity(EWin * ewin)
+{
+   unsigned int        opacity;
+
+   if (ewin->state.moving || ewin->state.resizing)
+      opacity = OpacityFromPercent(Conf.opacity.movres);
+   else if (ewin->state.active && ewin->props.opaque_when_focused)
+      opacity = 0xffffffff;
+   else
+      opacity = ewin->ewmh.opacity;
+
+   if (ewin->o.opacity != opacity)
+      EoChangeOpacity(ewin, opacity);
 }
 
 /*
===================================================================
RCS file: /cvs/e/e16/e/src/ewins.h,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -3 -r1.42 -r1.43
--- ewins.h     30 Mar 2006 22:35:20 -0000      1.42
+++ ewins.h     2 Apr 2006 09:45:40 -0000       1.43
@@ -109,6 +109,8 @@
 
       unsigned            showingdesk:1;       /* Iconified by show desktop */
       unsigned            animated:1;
+      unsigned            moving:1;
+      unsigned            resizing:1;
       unsigned            show_coords:1;
       unsigned            maximizing:1;
 
@@ -147,6 +149,7 @@
       unsigned            autosave:1;
       unsigned            no_border:1; /* Never apply border */
       unsigned            focus_when_mapped:1;
+      unsigned            opaque_when_focused:1;
    } props;
    EWinInhibit         inh_app;
    EWinInhibit         inh_user;
@@ -319,6 +322,7 @@
                                            int *px, int *py);
 unsigned int        EwinFlagsEncode(const EWin * ewin);
 void                EwinFlagsDecode(EWin * ewin, unsigned int flags);
+void                EwinUpdateOpacity(EWin * ewin);
 
 void                EwinChange(EWin * ewin, unsigned int flag);
 
===================================================================
RCS file: /cvs/e/e16/e/src/focus.c,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -3 -r1.141 -r1.142
--- focus.c     18 Feb 2006 08:30:08 -0000      1.141
+++ focus.c     2 Apr 2006 09:45:40 -0000       1.142
@@ -246,6 +246,7 @@
 
    ewin->state.active = active;
    EwinBorderUpdateState(ewin);
+   EwinUpdateOpacity(ewin);
 
    FocusGrabsUpdate();
 
===================================================================
RCS file: /cvs/e/e16/e/src/ipc.c,v
retrieving revision 1.258
retrieving revision 1.259
diff -u -3 -r1.258 -r1.259
--- ipc.c       30 Mar 2006 20:50:44 -0000      1.258
+++ ipc.c       2 Apr 2006 09:45:40 -0000       1.259
@@ -648,13 +648,21 @@
        break;
 
      case EWIN_OP_OPACITY:
+       val = OpacityToPercent(ewin->ewmh.opacity);
        if (!strcmp(param1, "?"))
          {
-            IpcPrintf("opacity: %u", ewin->ewmh.opacity >> 24);
+            IpcPrintf("opacity: %u", val);
             goto done;
          }
-       val = 0xff;
-       sscanf(param1, "%i", &val);
+       if (!strcmp(param1, "opaque_when_focused"))
+         {
+            ewin->props.opaque_when_focused = !ewin->props.opaque_when_focused;
+         }
+       else
+         {
+            sscanf(param1, "%i", &val);
+            val = OpacityFix(val);
+         }
        EwinOpSetOpacity(ewin, OPSRC_USER, val);
        break;
 
@@ -994,7 +1002,7 @@
             ewin->state.iconified, EoIsSticky(ewin), ewin->state.shaded,
             ewin->state.docked, ewin->state.state, EoIsShown(ewin),
             ewin->state.visibility, ewin->state.active, ewin->num_groups,
-            ewin->ewmh.opacity >> 24
+            OpacityToPercent(ewin->ewmh.opacity)
 #if USE_COMPOSITE
             , EoGetOpacity(ewin), EoGetShadow(ewin), EoGetNoRedirect(ewin)
 #endif
@@ -1235,7 +1243,7 @@
     "  win_op <windowid> <fullscreen/zoom>\n"
     "  win_op <windowid> layer <0-100,4=normal>\n"
     "  win_op <windowid> <raise/lower>\n"
-    "  win_op <windowid> opacity <1-255,255=opaque>\n"
+    "  win_op <windowid> opacity <1-100(100=opaque),opaque_when_focused>\n"
     "  win_op <windowid> snap <what>\n"
     "         <what>: all, none, border, command, desktop, dialog, group, 
icon,\n"
     "                 layer, location, opacity, shade, shadow, size, sticky\n"
===================================================================
RCS file: /cvs/e/e16/e/src/menus.c,v
retrieving revision 1.232
retrieving revision 1.233
diff -u -3 -r1.232 -r1.233
--- menus.c     29 Mar 2006 19:13:17 -0000      1.232
+++ menus.c     2 Apr 2006 09:45:40 -0000       1.233
@@ -239,7 +239,7 @@
    EoSetSticky(ewin, 1);
    EoSetLayer(ewin, 3);
    EoSetFloating(ewin, 1);
-   ewin->ewmh.opacity = OpacityExt(Conf.menus.opacity);
+   ewin->ewmh.opacity = OpacityFromPercent(Conf.opacity.menus);
 }
 
 static void         MenuShowMasker(Menu * m);
@@ -2135,7 +2135,6 @@
    CFG_ITEM_BOOL(Conf.menus, warp, 1),
    CFG_ITEM_BOOL(Conf.menus, show_icons, 1),
    CFG_ITEM_INT(Conf.menus, icon_size, 16),
-   CFG_ITEM_INT(Conf.menus, opacity, 220),
    CFG_ITEM_INT(Conf.menus, key.left, XK_Left),
    CFG_ITEM_INT(Conf.menus, key.right, XK_Right),
    CFG_ITEM_INT(Conf.menus, key.up, XK_Up),
===================================================================
RCS file: /cvs/e/e16/e/src/mod-misc.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- mod-misc.c  27 Feb 2006 19:17:34 -0000      1.30
+++ mod-misc.c  2 Apr 2006 09:45:40 -0000       1.31
@@ -119,7 +119,10 @@
    CFG_ITEM_INT(Conf, movres.mode_resize, 2),
    CFG_ITEM_INT(Conf, movres.mode_info, 1),
    CFG_ITEM_INT(Conf, movres.update_while_moving, 0),
-   CFG_ITEM_INT(Conf, movres.opacity, 150),
+
+   CFG_ITEM_INT(Conf, opacity.menus, 85),
+   CFG_ITEM_INT(Conf, opacity.movres, 60),
+   CFG_ITEM_INT(Conf, opacity.tooltips, 80),
 
    CFG_ITEM_BOOL(Conf, place.manual, 0),
    CFG_ITEM_BOOL(Conf, place.manual_mouse_pointer, 0),
===================================================================
RCS file: /cvs/e/e16/e/src/moveresize.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- moveresize.c        19 Feb 2006 22:23:50 -0000      1.63
+++ moveresize.c        2 Apr 2006 09:45:40 -0000       1.64
@@ -98,9 +98,10 @@
    for (i = 0; i < num; i++)
      {
        EwinShapeSet(gwins[i]);
+       ewin->state.moving = 1;
        EwinFloatAt(gwins[i], EoGetX(gwins[i]), EoGetY(gwins[i]));
        if (Mode_mr.mode == 0)
-          EoChangeOpacity(gwins[i], OpacityExt(Conf.movres.opacity));
+          EwinUpdateOpacity(gwins[i]);
      }
    Efree(gwins);
 
@@ -154,8 +155,9 @@
           EwinUnfloatAt(ewin, d2,
                         ewin->shape_x - (EoGetX(d2) - EoGetX(d1)),
                         ewin->shape_y - (EoGetY(d2) - EoGetY(d1)));
+       ewin->state.moving = 0;
        if (Mode_mr.mode == 0)
-          EoChangeOpacity(ewin, ewin->ewmh.opacity);
+          EwinUpdateOpacity(ewin);
      }
 
    Efree(gwins);
@@ -269,6 +271,7 @@
 
    SoundPlay("SOUND_RESIZE_START");
 
+   ewin->state.resizing = 1;
    if (Conf.movres.mode_resize < 0 || Conf.movres.mode_resize > 4)
       Conf.movres.mode_resize = 0;
    if (Conf.movres.mode_resize > 0)
@@ -280,7 +283,7 @@
      }
    else
      {
-       EoChangeOpacity(ewin, OpacityExt(Conf.movres.opacity));
+       EwinUpdateOpacity(ewin);
      }
 
    if (grab)
@@ -385,13 +388,14 @@
    if (!ewin)
       goto done;
 
+   ewin->state.resizing = 0;
    ewin->state.show_coords = 0;
    DrawEwinShape(ewin, Conf.movres.mode_resize, ewin->shape_x, ewin->shape_y,
                 ewin->client.w, ewin->client.h, 2);
 
    if (Conf.movres.mode_resize == 0)
      {
-       EoChangeOpacity(ewin, ewin->ewmh.opacity);
+       EwinUpdateOpacity(ewin);
      }
    else
      {
===================================================================
RCS file: /cvs/e/e16/e/src/snaps.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -3 -r1.115 -r1.116
--- snaps.c     18 Feb 2006 08:30:09 -0000      1.115
+++ snaps.c     2 Apr 2006 09:45:40 -0000       1.116
@@ -62,6 +62,7 @@
    char                skipwinlist;
 #if USE_COMPOSITE
    int                 opacity;
+   char                opaque_when_focused;
    char                shadow;
 #endif
 };
@@ -457,7 +458,8 @@
 static void
 SnapEwinOpacity(Snapshot * sn, const EWin * ewin)
 {
-   sn->opacity = ewin->ewmh.opacity >> 24;
+   sn->opacity = OpacityToPercent(ewin->ewmh.opacity);
+   sn->opaque_when_focused = ewin->props.opaque_when_focused;
 }
 
 static void
@@ -1164,7 +1166,7 @@
         fprintf(f, "FLAGS: %#x\n", sn->flags);
 #if USE_COMPOSITE
       if (sn->use_flags & SNAP_USE_OPACITY)
-        fprintf(f, "OPACITY: %i\n", sn->opacity);
+        fprintf(f, "OPACITY: %i %i\n", sn->opacity, sn->opaque_when_focused);
       if (sn->use_flags & SNAP_USE_SHADOW)
         fprintf(f, "SHADOW: %i\n", sn->shadow);
 #endif
@@ -1390,7 +1392,11 @@
             else if (!strcmp(buf, "OPACITY"))
               {
                  sn->use_flags |= SNAP_USE_OPACITY;
-                 sn->opacity = atoi(s);
+                 a = 100;
+                 b = 1;
+                 sscanf(s, "%i %i", &a, &b);
+                 sn->opacity = a;
+                 sn->opaque_when_focused = b;
               }
             else if (!strcmp(buf, "SHADOW"))
               {
@@ -1431,7 +1437,8 @@
    use_flags = sn->use_flags;
    /* If restarting don't override stuff set in attributes/properties */
    if (ewin->state.identified)
-      use_flags &= SNAP_USE_LAYER | SNAP_USE_SHADOW | SNAP_USE_GROUPS;
+      use_flags &= SNAP_USE_LAYER | SNAP_USE_SHADOW | SNAP_USE_GROUPS |
+        SNAP_USE_OPACITY;
 
    if (use_flags & SNAP_USE_STICKY)
       EoSetSticky(ewin, sn->sticky);
@@ -1503,7 +1510,11 @@
 
 #if USE_COMPOSITE
    if (use_flags & SNAP_USE_OPACITY)
-      ewin->ewmh.opacity = OpacityExt(sn->opacity);
+     {
+       sn->opacity = OpacityFix(sn->opacity);
+       ewin->ewmh.opacity = OpacityFromPercent(sn->opacity);
+       ewin->props.opaque_when_focused = sn->opaque_when_focused;
+     }
 
    if (use_flags & SNAP_USE_SHADOW)
       EoSetShadow(ewin, sn->shadow);
===================================================================
RCS file: /cvs/e/e16/e/src/tooltips.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -3 -r1.95 -r1.96
--- tooltips.c  29 Mar 2006 19:13:17 -0000      1.95
+++ tooltips.c  2 Apr 2006 09:45:40 -0000       1.96
@@ -40,7 +40,6 @@
    char                enable;
    char                showroottooltip;
    int                 delay;  /* milliseconds */
-   unsigned int        opacity;
 } Conf_tooltips;
 
 static struct
@@ -104,7 +103,7 @@
 
        eo = EobjWindowCreate(EOBJ_TYPE_MISC, -50, -100, wh, wh, 1, name);
        ImageclassIncRefcount(tt->iclass[i]);
-       EobjChangeOpacity(eo, OpacityExt(Conf_tooltips.opacity));
+       EobjChangeOpacity(eo, OpacityFromPercent(Conf.opacity.tooltips));
        tt->win[i] = eo;
      }
    tt->iwin = ECreateWindow(tt->TTWIN->win, 0, 0, 1, 1, 0);
@@ -913,7 +912,6 @@
    CFG_ITEM_BOOL(Conf_tooltips, enable, 1),
    CFG_ITEM_BOOL(Conf_tooltips, showroottooltip, 1),
    CFG_ITEM_INT(Conf_tooltips, delay, 1500),
-   CFG_ITEM_INT(Conf_tooltips, opacity, 200),
 };
 #define N_CFG_ITEMS (sizeof(TooltipsCfgItems)/sizeof(CfgItem))
 
===================================================================
RCS file: /cvs/e/e16/e/src/windowmatch.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- windowmatch.c       18 Feb 2006 08:30:09 -0000      1.46
+++ windowmatch.c       2 Apr 2006 09:45:40 -0000       1.47
@@ -733,7 +733,8 @@
        break;
 
      case EWIN_OP_OPACITY:
-       ewin->ewmh.opacity = OpacityExt(atoi(args));
+       a = atoi(args);
+       ewin->ewmh.opacity = OpacityFromPercent(OpacityFix(a));
        break;
 
      case EWIN_OP_SKIP_LISTS:




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to