Add configuration of default opacities.

SVN revision: 33724
This commit is contained in:
Kim Woelders 2008-02-10 20:21:53 +00:00
parent ddd6f1e00e
commit 11164d37fb
12 changed files with 93 additions and 7 deletions

View File

@ -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

View File

@ -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"

View File

@ -337,6 +337,8 @@ typedef struct
int movres;
int menus;
int tooltips;
int focused;
int unfocused;
} opacity;
struct
{

View File

@ -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();
}

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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),

View File

@ -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 = {

View File

@ -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);

View File

@ -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: