Add configuration of default opacities.
SVN revision: 33724
This commit is contained in:
parent
ddd6f1e00e
commit
11164d37fb
|
@ -56,3 +56,4 @@ Class Kicker Winop shadow off
|
|||
# Specific app hacks - May get fixed, may break stuff in old versions
|
||||
Name Gecko Winop no_app_move
|
||||
Name gecko Winop no_app_move
|
||||
#Class Eterm Winop opacity 0
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
"Opacity" "EMPTY"
|
||||
"Default" NULL "wop * op 0"
|
||||
"20%" NULL "wop * op 20"
|
||||
"40%" NULL "wop * op 40"
|
||||
"60%" NULL "wop * op 60"
|
||||
|
|
2
src/E.h
2
src/E.h
|
@ -337,6 +337,8 @@ typedef struct
|
|||
int movres;
|
||||
int menus;
|
||||
int tooltips;
|
||||
int focused;
|
||||
int unfocused;
|
||||
} opacity;
|
||||
struct
|
||||
{
|
||||
|
|
|
@ -2596,6 +2596,9 @@ ECompMgrConfigGet(cfg_composite * cfg)
|
|||
cfg->enable = Conf_compmgr.enable;
|
||||
cfg->shadow = Conf_compmgr.shadows.mode;
|
||||
cfg->fading = Conf_compmgr.fading.enable;
|
||||
cfg->opacity_focused = Conf.opacity.focused;
|
||||
cfg->opacity_unfocused = Conf.opacity.unfocused;
|
||||
cfg->opacity_override = Conf_compmgr.override_redirect.opacity;
|
||||
cfg->fade_speed = 100 - (Conf_compmgr.fading.time / 10);
|
||||
}
|
||||
|
||||
|
@ -2638,6 +2641,12 @@ ECompMgrConfigSet(const cfg_composite * cfg)
|
|||
Conf_compmgr.fading.enable = cfg->fading;
|
||||
Conf_compmgr.fading.time = (100 - cfg->fade_speed) * 10;
|
||||
|
||||
Conf.opacity.focused = cfg->opacity_focused;
|
||||
Conf.opacity.unfocused = cfg->opacity_unfocused;
|
||||
Conf_compmgr.override_redirect.opacity = cfg->opacity_override;
|
||||
|
||||
EobjsOpacityUpdate(Conf_compmgr.override_redirect.opacity);
|
||||
|
||||
autosave();
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,9 @@ typedef struct
|
|||
int shadow;
|
||||
char fading;
|
||||
int fade_speed;
|
||||
int opacity_focused;
|
||||
int opacity_unfocused;
|
||||
int opacity_override;
|
||||
} cfg_composite;
|
||||
|
||||
int ECompMgrIsActive(void);
|
||||
|
|
26
src/eobj.c
26
src/eobj.c
|
@ -670,3 +670,29 @@ EobjsRepaint(void)
|
|||
#endif
|
||||
ESync();
|
||||
}
|
||||
|
||||
#if USE_COMPOSITE
|
||||
void
|
||||
EobjsOpacityUpdate(int op_or)
|
||||
{
|
||||
EObj *eo, *const *lst;
|
||||
int i, num;
|
||||
|
||||
lst = EobjListStackGet(&num);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
eo = lst[i];
|
||||
switch (eo->type)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
case EOBJ_TYPE_EWIN:
|
||||
EwinUpdateOpacity((EWin *) eo);
|
||||
break;
|
||||
case EOBJ_TYPE_EXT:
|
||||
EobjChangeOpacity(eo, OpacityFromPercent(op_or));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -185,6 +185,8 @@ void EobjsSlideBy(EObj ** peo, int num, int dx, int dy,
|
|||
void EobjSlideSizeTo(EObj * eo, int fx, int fy, int tx, int ty,
|
||||
int fw, int fh, int tw, int th, int speed);
|
||||
|
||||
void EobjsOpacityUpdate(int op_or);
|
||||
|
||||
/* stacking.c */
|
||||
void EobjListStackAdd(EObj * eo, int ontop);
|
||||
void EobjListStackDel(EObj * eo);
|
||||
|
|
10
src/ewins.c
10
src/ewins.c
|
@ -339,9 +339,7 @@ EwinConfigure(EWin * ewin)
|
|||
if (ewin->state.shaded)
|
||||
EwinInstantShade(ewin, 1);
|
||||
|
||||
if (ewin->ewmh.opacity == 0)
|
||||
ewin->ewmh.opacity = 0xffffffff;
|
||||
EoChangeOpacity(ewin, ewin->ewmh.opacity);
|
||||
EwinUpdateOpacity(ewin);
|
||||
|
||||
HintsSetWindowState(ewin);
|
||||
HintsSetWindowOpacity(ewin);
|
||||
|
@ -1892,6 +1890,12 @@ EwinUpdateOpacity(EWin * ewin)
|
|||
opacity = ewin->props.focused_opacity;
|
||||
if (opacity == 0)
|
||||
opacity = ewin->ewmh.opacity;
|
||||
if (opacity == 0)
|
||||
opacity = ewin->state.active ?
|
||||
OpacityFromPercent(Conf.opacity.focused) :
|
||||
OpacityFromPercent(Conf.opacity.unfocused);
|
||||
if (opacity == 0)
|
||||
opacity = 0xffffffff; /* Fallback */
|
||||
|
||||
EoChangeOpacity(ewin, opacity);
|
||||
}
|
||||
|
|
|
@ -162,6 +162,8 @@ static const CfgItem MiscCfgItems[] = {
|
|||
CFG_ITEM_INT(Conf, opacity.menus, 85),
|
||||
CFG_ITEM_INT(Conf, opacity.movres, 60),
|
||||
CFG_ITEM_INT(Conf, opacity.tooltips, 80),
|
||||
CFG_ITEM_INT(Conf, opacity.focused, 100),
|
||||
CFG_ITEM_INT(Conf, opacity.unfocused, 100),
|
||||
|
||||
CFG_ITEM_BOOL(Conf, place.manual, 0),
|
||||
CFG_ITEM_BOOL(Conf, place.manual_mouse_pointer, 0),
|
||||
|
|
|
@ -606,6 +606,17 @@ _DlgFillComposite(Dialog * d __UNUSED__, DItem * table, void *data __UNUSED__)
|
|||
DialogItemSetText(di, _("Enable Fading"));
|
||||
DialogItemCheckButtonSetPtr(di, &Cfg_composite.fading);
|
||||
|
||||
di = DialogAddItem(table, DITEM_TEXT);
|
||||
DialogItemSetFill(di, 0, 0);
|
||||
DialogItemSetAlign(di, 0, 512);
|
||||
DialogItemSetText(di, _("Fading Speed:"));
|
||||
|
||||
di = DialogAddItem(table, DITEM_SLIDER);
|
||||
DialogItemSliderSetBounds(di, 0, 100);
|
||||
DialogItemSliderSetUnits(di, 5);
|
||||
DialogItemSliderSetJump(di, 5);
|
||||
DialogItemSliderSetValPtr(di, &Cfg_composite.fade_speed);
|
||||
|
||||
di = DialogAddItem(table, DITEM_SEPARATOR);
|
||||
DialogItemSetColSpan(di, 2);
|
||||
|
||||
|
@ -634,16 +645,41 @@ _DlgFillComposite(Dialog * d __UNUSED__, DItem * table, void *data __UNUSED__)
|
|||
DialogItemRadioButtonGroupSetVal(di, 2);
|
||||
DialogItemRadioButtonGroupSetValPtr(radio, &Cfg_composite.shadow);
|
||||
|
||||
di = DialogAddItem(table, DITEM_SEPARATOR);
|
||||
DialogItemSetColSpan(di, 2);
|
||||
|
||||
di = DialogAddItem(table, DITEM_TEXT);
|
||||
DialogItemSetFill(di, 0, 0);
|
||||
DialogItemSetAlign(di, 0, 512);
|
||||
DialogItemSetText(di, _("Fading Speed:"));
|
||||
DialogItemSetText(di, _("Default focused window opacity:"));
|
||||
|
||||
di = DialogAddItem(table, DITEM_SLIDER);
|
||||
DialogItemSliderSetBounds(di, 0, 100);
|
||||
DialogItemSliderSetUnits(di, 5);
|
||||
DialogItemSliderSetJump(di, 5);
|
||||
DialogItemSliderSetValPtr(di, &Cfg_composite.fade_speed);
|
||||
DialogItemSliderSetValPtr(di, &Cfg_composite.opacity_focused);
|
||||
|
||||
di = DialogAddItem(table, DITEM_TEXT);
|
||||
DialogItemSetFill(di, 0, 0);
|
||||
DialogItemSetAlign(di, 0, 512);
|
||||
DialogItemSetText(di, _("Default unfocused window opacity:"));
|
||||
|
||||
di = DialogAddItem(table, DITEM_SLIDER);
|
||||
DialogItemSliderSetBounds(di, 0, 100);
|
||||
DialogItemSliderSetUnits(di, 5);
|
||||
DialogItemSliderSetJump(di, 5);
|
||||
DialogItemSliderSetValPtr(di, &Cfg_composite.opacity_unfocused);
|
||||
|
||||
di = DialogAddItem(table, DITEM_TEXT);
|
||||
DialogItemSetFill(di, 0, 0);
|
||||
DialogItemSetAlign(di, 0, 512);
|
||||
DialogItemSetText(di, _("Default pop-up window opacity:"));
|
||||
|
||||
di = DialogAddItem(table, DITEM_SLIDER);
|
||||
DialogItemSliderSetBounds(di, 0, 100);
|
||||
DialogItemSliderSetUnits(di, 5);
|
||||
DialogItemSliderSetJump(di, 5);
|
||||
DialogItemSliderSetValPtr(di, &Cfg_composite.opacity_override);
|
||||
}
|
||||
|
||||
const DialogDef DlgComposite = {
|
||||
|
|
|
@ -1506,7 +1506,7 @@ SnapshotEwinApply(EWin * ewin)
|
|||
#if USE_COMPOSITE
|
||||
if (use_flags & SNAP_USE_OPACITY)
|
||||
{
|
||||
sn->opacity = OpacityFix(sn->opacity, 100);
|
||||
sn->opacity = OpacityFix(sn->opacity, 0);
|
||||
sn->focused_opacity = OpacityFix(sn->focused_opacity, 0);
|
||||
ewin->ewmh.opacity = OpacityFromPercent(sn->opacity);
|
||||
ewin->props.focused_opacity = OpacityFromPercent(sn->focused_opacity);
|
||||
|
|
|
@ -715,7 +715,7 @@ WindowMatchEwinOpsAction(EWin * ewin, int op, const char *args)
|
|||
|
||||
case EWIN_OP_OPACITY:
|
||||
a = atoi(args);
|
||||
ewin->ewmh.opacity = OpacityFromPercent(OpacityFix(a, 100));
|
||||
ewin->ewmh.opacity = OpacityFromPercent(OpacityFix(a, 0));
|
||||
break;
|
||||
|
||||
case EWIN_OP_FOCUSED_OPACITY:
|
||||
|
|
Loading…
Reference in New Issue