add options (conf2 only for the next few minutes) and functionality to enable "fast" comp effects in theme

SVN revision: 82631
This commit is contained in:
Mike Blumenkrantz 2013-01-11 11:53:29 +00:00
parent 34aab4c595
commit 71003dbeac
6 changed files with 128 additions and 11 deletions

View File

@ -4,6 +4,7 @@
* added option to disable comp effects on screen
* fixed bug where backlight settings would try to update dummy backlight devices
* added focus-out color class and functionality to default theme
* added options and functionality for "fast" composite effects
2013-01-10 Carsten Haitzler

1
NEWS
View File

@ -25,6 +25,7 @@ Additions:
* comp settings now uses the "e_comp" config domain
* added options to disable comp effects on types of windows
* added option to disable comp effects on screen
* added options and functionality for "fast" composite effects
Changes:
Modules:

View File

@ -323,6 +323,7 @@ group { name: "e/comp/default";
target: "shadow";
}
program {
name: "visible_on";
signal: "e,state,visible,on"; source: "e";
action: STATE_SET "visible" 0.0;
transition: DECELERATE 0.15;
@ -334,6 +335,7 @@ group { name: "e/comp/default";
action: SIGNAL_EMIT "e,action,show,done" "e";
}
program {
name: "visible_off";
signal: "e,state,visible,off"; source: "e";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.30;
@ -345,6 +347,7 @@ group { name: "e/comp/default";
action: SIGNAL_EMIT "e,action,hide,done" "e";
}
program {
name: "focus_on";
signal: "e,state,focus,on"; source: "e";
action: STATE_SET "focused" 0.0;
transition: SINUSOIDAL 0.1;
@ -358,6 +361,7 @@ group { name: "e/comp/default";
target: "glow";
}
program {
name: "focus_off";
signal: "e,state,focus,off"; source: "e";
action: STATE_SET "default" 0.0;
transition: SINUSOIDAL 0.1;
@ -385,6 +389,38 @@ group { name: "e/comp/default";
}
}
group { name: "e/comp/default/fast";
alias: "e/comp/popup/fast";
inherit: "e/comp/default";
programs {
program {
name: "visible_on";
transition: DECELERATE 0;
}
program {
name: "visible_off";
transition: DECELERATE 0;
}
program {
name: "focus_on";
transition: SINUSOIDAL 0.1;
target: "glow";
after: "focus2";
}
program {
name: "focus_on2";
signal: "e,state,focus,on"; source: "e";
action: STATE_SET "focused" 0.0;
target: "focus-clipper";
}
program {
name: "focus_off";
transition: SINUSOIDAL 0;
}
}
}
group { name: "e/comp/none";
parts {
part { name: "e.swallow.content"; type: SWALLOW;
@ -416,6 +452,18 @@ group { name: "e/comp/still";
}
}
group { name: "e/comp/still/fast";
inherit: "e/comp/default/fast";
parts {
part { name: "shower";
description { state: "default" 0.0;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
}
}
}
}
group { name: "e/comp/menu";
inherit: "e/comp/default";
parts {
@ -428,6 +476,18 @@ group { name: "e/comp/menu";
}
}
group { name: "e/comp/menu/fast";
inherit: "e/comp/default/fast";
parts {
part { name: "shower";
description { state: "default" 0.0;
rel1.relative: 0.05 0.0;
rel2.relative: 0.95 0.9;
}
}
}
}
group { name: "e/comp/everything";
inherit: "e/comp/default";
parts {
@ -440,6 +500,18 @@ group { name: "e/comp/everything";
}
}
group { name: "e/comp/everything";
inherit: "e/comp/default/fast";
parts {
part { name: "shower";
description { state: "default" 0.0;
rel1.relative: -0.3 -0.3;
rel2.relative: 1.3 1.3;
}
}
}
}
group { name: "e/comp/fullscreen";
images.image: "win_shadow.png" COMP;
images.image: "screen_circular_shadow.png" COMP;

View File

@ -1616,7 +1616,7 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
char buf[4096];
Eina_List *list = NULL, *l;
E_Comp_Match *m;
Eina_Bool focus = EINA_FALSE, urgent = EINA_FALSE, skip = EINA_FALSE;
Eina_Bool focus = EINA_FALSE, urgent = EINA_FALSE, skip = EINA_FALSE, fast = EINA_FALSE;
const char *title = NULL, *name = NULL, *clas = NULL, *role = NULL;
Ecore_X_Window_Type primary_type = ECORE_X_WINDOW_TYPE_UNKNOWN;
@ -1635,6 +1635,7 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
role = cw->bd->client.icccm.window_role;
primary_type = cw->bd->client.netwm.type;
skip = (conf->match.disable_borders);
fast = conf->fast_borders;
}
else if (cw->pop)
{
@ -1644,12 +1645,14 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
list = conf->match.popups;
name = cw->pop->name;
skip = (conf->match.disable_popups);
fast = conf->fast_popups;
}
else if (cw->menu)
{
// FIXME: e has no way to tell e menus apart... need naming
list = conf->match.menus;
skip = (conf->match.disable_menus);
fast = conf->fast_menus;
}
else
{
@ -1660,6 +1663,7 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
role = cw->role;
primary_type = cw->primary_type;
skip = (conf->match.disable_overrides);
fast = conf->fast_overrides;
}
if (!skip)
@ -1766,10 +1770,16 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
urgent = m->urgent;
if (m->shadow_style)
{
snprintf(buf, sizeof(buf), "e/comp/%s",
m->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders",
buf);
if (fast)
{
snprintf(buf, sizeof(buf), "e/comp/%s/fast", m->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", buf);
}
if (!ok)
{
snprintf(buf, sizeof(buf), "e/comp/%s", m->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", buf);
}
if (ok) break;
}
}
@ -1783,14 +1793,24 @@ _e_comp_win_shadow_setup(E_Comp_Win *cw)
if (ok) break;
if (conf->shadow_style)
{
snprintf(buf, sizeof(buf), "e/comp/%s",
conf->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders",
buf);
if (fast)
{
snprintf(buf, sizeof(buf), "e/comp/%s/fast", conf->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", buf);
}
if (!ok)
{
snprintf(buf, sizeof(buf), "e/comp/%s", conf->shadow_style);
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", buf);
}
}
if (!ok)
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders",
"e/comp/default");
{
if (fast)
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", "e/comp/default/fast");
if (!ok)
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders", "e/comp/default");
}
break;
}
edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
@ -4221,6 +4241,20 @@ _e_comp_cfg_init(void)
E_CONFIGURE_OPTION_ADD(co, BOOL, vsync, conf, _("Tear-free compositing (VSYNC)"), _("composite"), _("border"));
co->requires_restart = 1;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));
E_CONFIGURE_OPTION_ADD(co, BOOL, fast_borders, conf, _("Use fast composite effects for windows"), _("composite"), _("border"), _("theme"), _("animate"));
co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));
E_CONFIGURE_OPTION_ADD(co, BOOL, fast_menus, conf, _("Use fast composite effects for menus"), _("composite"), _("menu"), _("theme"), _("animate"));
co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));
E_CONFIGURE_OPTION_ADD(co, BOOL, fast_popups, conf, _("Use fast composite effects for popups"), _("composite"), _("popup"), _("theme"), _("animate"));
co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));
E_CONFIGURE_OPTION_ADD(co, BOOL, fast_overrides, conf, _("Use fast composite effects for override-redirect windows (tooltips and such)"), _("composite"), _("theme"), _("animate"));
co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));
E_CONFIGURE_OPTION_ADD(co, BOOL, match.disable_borders, conf, _("Disable composite effects for windows"), _("composite"), _("border"), _("theme"), _("animate"));
co->funcs[1].none = co->funcs[0].none = e_comp_shadows_reset;
cfg_opts = eina_inlist_append(cfg_opts, EINA_INLIST_GET(co));

View File

@ -54,6 +54,10 @@ e_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
E_CONFIG_VAL(D, T, smooth_windows, UCHAR);
E_CONFIG_VAL(D, T, first_draw_delay, DOUBLE);
E_CONFIG_VAL(D, T, disable_screen_effects, UCHAR);
E_CONFIG_VAL(D, T, fast_popups, UCHAR);
E_CONFIG_VAL(D, T, fast_borders, UCHAR);
E_CONFIG_VAL(D, T, fast_menus, UCHAR);
E_CONFIG_VAL(D, T, fast_overrides, UCHAR);
E_CONFIG_VAL(D, T, match.disable_popups, UCHAR);
E_CONFIG_VAL(D, T, match.disable_borders, UCHAR);
E_CONFIG_VAL(D, T, match.disable_overrides, UCHAR);

View File

@ -29,6 +29,11 @@ struct _E_Comp_Config
unsigned char smooth_windows;
double first_draw_delay;
Eina_Bool disable_screen_effects;
// the following options add the "/fast" suffix to the normal groups
Eina_Bool fast_popups;
Eina_Bool fast_borders;
Eina_Bool fast_menus;
Eina_Bool fast_overrides;
struct
{