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