remove shadow option - this is handled by styles anyway, and make a

basic vs advanced cfg dialog for people unable to cope with settings
widgets. :)



SVN revision: 74637
This commit is contained in:
Carsten Haitzler 2012-07-31 10:25:20 +00:00
parent 68b11c3a2c
commit 78cb275b28
6 changed files with 202 additions and 72 deletions

View File

@ -4,8 +4,7 @@ MODULE = comp
# data files for the module
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
files_DATA = \
e-module-$(MODULE).edj module.desktop \
shadow.edj
e-module-$(MODULE).edj module.desktop
EXTRA_DIST = $(files_DATA)

View File

@ -1579,13 +1579,6 @@ _e_mod_comp_win_shadow_setup(E_Comp_Win *cw)
"base/theme/borders",
"e/comp/none");
}
// use different shadow objects/group per window type?
if (!ok)
{
if (_comp_mod->conf->shadow_file)
ok = edje_object_file_set(cw->shobj, _comp_mod->conf->shadow_file,
"shadow");
}
if (!ok)
{
if (_comp_mod->conf->shadow_style)
@ -1599,18 +1592,9 @@ _e_mod_comp_win_shadow_setup(E_Comp_Win *cw)
ok = e_theme_edje_object_set(cw->shobj, "base/theme/borders",
"e/comp/default");
}
if (!ok) // fallback to local shadow.edj - will go when default theme supports this
{
snprintf(buf, sizeof(buf), "%s/shadow.edj",
e_module_dir_get(_comp_mod->module));
ok = edje_object_file_set(cw->shobj, buf, "shadow");
}
edje_object_part_swallow(cw->shobj, "e.swallow.content", cw->obj);
if (!_comp_mod->conf->use_shadow
|| (cw->bd && cw->bd->client.e.state.video))
{
edje_object_signal_emit(cw->shobj, "e,state,shadow,off", "e");
}
if (cw->bd && cw->bd->client.e.state.video)
edje_object_signal_emit(cw->shobj, "e,state,shadow,off", "e");
else
{
if (_e_mod_comp_win_do_shadow(cw))

View File

@ -30,7 +30,6 @@ e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
#undef D
#define T Config
#define D *conf_edd
E_CONFIG_VAL(D, T, shadow_file, STR);
E_CONFIG_VAL(D, T, shadow_style, STR);
E_CONFIG_VAL(D, T, engine, INT);
E_CONFIG_VAL(D, T, max_unmapped_pixels, INT);
@ -39,7 +38,6 @@ e_mod_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
E_CONFIG_VAL(D, T, fps_average_range, INT);
E_CONFIG_VAL(D, T, fps_corner, UCHAR);
E_CONFIG_VAL(D, T, fps_show, UCHAR);
E_CONFIG_VAL(D, T, use_shadow, UCHAR);
E_CONFIG_VAL(D, T, indirect, UCHAR);
E_CONFIG_VAL(D, T, texture_from_pixmap, UCHAR);
E_CONFIG_VAL(D, T, lock_fps, UCHAR);
@ -66,7 +64,6 @@ e_mod_comp_cfdata_config_new(void)
Match *mat;
cfg = E_NEW(Config, 1);
cfg->shadow_file = NULL;
cfg->shadow_style = eina_stringshare_add("default");
cfg->engine = ENGINE_SW;
cfg->max_unmapped_pixels = 32 * 1024; // implement
@ -75,7 +72,6 @@ e_mod_comp_cfdata_config_new(void)
cfg->fps_average_range = 30;
cfg->fps_corner = 0;
cfg->fps_show = 0;
cfg->use_shadow = 1;
cfg->indirect = 0;
cfg->texture_from_pixmap = 1;
cfg->lock_fps = 1;
@ -159,7 +155,6 @@ _match_list_free(Eina_List *list)
EAPI void
e_mod_cfdata_config_free(Config *cfg)
{
if (cfg->shadow_file) eina_stringshare_del(cfg->shadow_file);
if (cfg->shadow_style) eina_stringshare_del(cfg->shadow_style);
_match_list_free(cfg->match.popups);

View File

@ -6,7 +6,6 @@ typedef struct _Match Match;
struct _Config
{
const char *shadow_file;
const char *shadow_style;
int engine;
int max_unmapped_pixels;
@ -15,7 +14,6 @@ struct _Config
int fps_average_range;
unsigned char fps_corner;
unsigned char fps_show;
unsigned char use_shadow;
unsigned char indirect;
unsigned char texture_from_pixmap;
unsigned char lock_fps;

View File

@ -24,7 +24,6 @@ typedef struct _Match_Config
struct _E_Config_Dialog_Data
{
int use_shadow;
int engine;
int indirect;
int texture_from_pixmap;
@ -76,6 +75,11 @@ static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd,
E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd,
E_Config_Dialog_Data *cfdata);
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata);
static int _advanced_apply_data(E_Config_Dialog *cfd,
E_Config_Dialog_Data *cfdata);
E_Config_Dialog *
e_int_config_comp_module(E_Container *con,
@ -93,7 +97,9 @@ e_int_config_comp_module(E_Container *con,
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create_widgets;
v->advanced.apply_cfdata = _advanced_apply_data;
v->advanced.create_widgets = _advanced_create_widgets;
snprintf(buf, sizeof(buf), "%s/e-module-comp.edj",
e_module_dir_get(mod->module));
cfd = e_config_dialog_new(con, _("Composite Settings"),
@ -124,7 +130,6 @@ _create_data(E_Config_Dialog *cfd)
cfdata = E_NEW(E_Config_Dialog_Data, 1);
cfdata->use_shadow = _comp_mod->conf->use_shadow;
cfdata->engine = _comp_mod->conf->engine;
if ((cfdata->engine != ENGINE_SW) &&
(cfdata->engine != ENGINE_GL))
@ -233,28 +238,6 @@ _free_data(E_Config_Dialog *cfd __UNUSED__,
free(cfdata);
}
static void
_shadow_changed(void *data,
Evas_Object *obj,
void *event_info __UNUSED__)
{
E_Config_Dialog_Data *cfdata = data;
Evas_Object *orec0;
Eina_List *style_list;
const E_Demo_Style_Item *it;
const Eina_List *l;
orec0 = evas_object_name_find(evas_object_evas_get(obj), "style_shadows");
style_list = evas_object_data_get(orec0, "list");
EINA_LIST_FOREACH(style_list, l, it)
{
if (cfdata->use_shadow)
edje_object_signal_emit(it->preview, "e,state,shadow,on", "e");
else
edje_object_signal_emit(it->preview, "e,state,shadow,off", "e");
}
}
static Eina_Bool
_style_demo(void *data)
{
@ -347,7 +330,6 @@ _style_selector_del(void *data __UNUSED__,
static Evas_Object *
_style_selector(Evas *evas,
int use_shadow,
const char **source)
{
Evas_Object *oi, *ob, *oo, *obd, *orec, *oly, *orec0;
@ -390,7 +372,7 @@ _style_selector(Evas *evas,
e_layout_pack(oly, oo);
e_layout_child_move(oo, 39, 39);
e_layout_child_resize(oo, 162, 162);
if (use_shadow) edje_object_signal_emit(oo, "e,state,shadow,on", "e");
edje_object_signal_emit(oo, "e,state,shadow,on", "e");
edje_object_signal_emit(oo, "e,state,visible,on", "e");
evas_object_show(oo);
@ -622,7 +604,7 @@ _edit_ok(void *d1,
void *d2)
{
Match_Config *m = d1;
Evas_Object *dia, *bg, *of = d2;
Evas_Object *dia, *bg, *of = d2;
Evas_Object *il;
char *label;
int n;
@ -925,7 +907,7 @@ _create_edit_frame(E_Config_Dialog *cfd,
e_widget_toolbook_page_append(tb, NULL, _("Flags"), tab2,
1, 1, 1, 1, 0.5, 0.0);
oi = _style_selector(evas, cfdata->use_shadow, &(m->match.shadow_style));
oi = _style_selector(evas, &(m->match.shadow_style));
e_widget_toolbook_page_append(tb, NULL, _("Style"), oi,
1, 1, 1, 1, 0.5, 0.0);
@ -1131,7 +1113,7 @@ _create_styles_toolbook(E_Config_Dialog *cfd,
tb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
oi = _style_selector(evas, cfdata->use_shadow, &(cfdata->shadow_style));
oi = _style_selector(evas, &(cfdata->shadow_style));
e_widget_toolbook_page_append(tb, NULL, _("Default"), oi, 1, 1, 1, 1, 0.5, 0.0);
oi = _create_match_editor(cfd, evas, cfdata, &(cfdata->match.borders), &il);
@ -1156,11 +1138,11 @@ _create_styles_toolbook(E_Config_Dialog *cfd,
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata)
_advanced_create_widgets(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata)
{
Evas_Object *ob, *ol, *ol2, *of, *otb, *oi, *orec0, *tab;
Evas_Object *ob,*ol, *ol2, *of, *otb, *oi, *orec0, *tab;
E_Radio_Group *rg;
orec0 = evas_object_rectangle_add(evas);
@ -1173,9 +1155,6 @@ _basic_create_widgets(E_Config_Dialog *cfd,
///////////////////////////////////////////
ol = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Shadows"), &(cfdata->use_shadow));
evas_object_smart_callback_add(ob, "changed", _shadow_changed, cfdata);
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
ob = e_widget_check_add(evas, _("Limit framerate"), &(cfdata->lock_fps));
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows));
@ -1205,6 +1184,7 @@ _basic_create_widgets(E_Config_Dialog *cfd,
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("Sync"), ol, 0, 0, 0, 0, 0.5, 0.0);
///////////////////////////////////////////
ol = e_widget_list_add(evas, 0, 0);
rg = e_widget_radio_group_new(&(cfdata->engine));
ob = e_widget_radio_add(evas, _("Software"), ENGINE_SW, rg);
@ -1220,8 +1200,6 @@ _basic_create_widgets(E_Config_Dialog *cfd,
e_widget_framelist_content_align_set(of, 0.5, 0.0);
ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap));
e_widget_framelist_object_append(of, ob);
ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home resets compositor"));
e_widget_framelist_object_append(of, ob);
ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect));
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(ol, of, 1, 1, 0.5);
@ -1235,7 +1213,7 @@ _basic_create_widgets(E_Config_Dialog *cfd,
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Send dump"), &(cfdata->send_dump));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Don't composite fullscreen"), &(cfdata->nocomp_fs));
ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Keep hidden windows"), &(cfdata->keep_unmapped));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
@ -1372,11 +1350,188 @@ _match_dup2(Match_Config *m2,
}
static int
_basic_apply_data(E_Config_Dialog *cfd __UNUSED__,
E_Config_Dialog_Data *cfdata)
_advanced_apply_data(E_Config_Dialog *cfd __UNUSED__,
E_Config_Dialog_Data *cfdata)
{
if ((cfdata->use_shadow != _comp_mod->conf->use_shadow) ||
(cfdata->lock_fps != _comp_mod->conf->lock_fps) ||
if ((cfdata->lock_fps != _comp_mod->conf->lock_fps) ||
(cfdata->smooth_windows != _comp_mod->conf->smooth_windows) ||
(cfdata->grab != _comp_mod->conf->grab) ||
(cfdata->keep_unmapped != _comp_mod->conf->keep_unmapped) ||
(cfdata->nocomp_fs != _comp_mod->conf->nocomp_fs) ||
(cfdata->shadow_style != _comp_mod->conf->shadow_style) ||
(cfdata->max_unmapped_pixels != _comp_mod->conf->max_unmapped_pixels) ||
(cfdata->max_unmapped_time != _comp_mod->conf->max_unmapped_time) ||
(cfdata->min_unmapped_time != _comp_mod->conf->min_unmapped_time) ||
(cfdata->send_flush != _comp_mod->conf->send_flush) ||
(cfdata->send_dump != _comp_mod->conf->send_dump) ||
(cfdata->fps_show != _comp_mod->conf->fps_show) ||
(cfdata->fps_corner != _comp_mod->conf->fps_corner) ||
(cfdata->fps_average_range != _comp_mod->conf->fps_average_range) ||
(cfdata->first_draw_delay != _comp_mod->conf->first_draw_delay) ||
(cfdata->match.changed)
)
{
if (cfdata->match.changed)
{
Eina_List *l;
Match *m;
Match_Config *m2;
_match_list_free(_comp_mod->conf->match.popups);
_match_list_free(_comp_mod->conf->match.borders);
_match_list_free(_comp_mod->conf->match.overrides);
_match_list_free(_comp_mod->conf->match.menus);
_comp_mod->conf->match.popups = NULL;
_comp_mod->conf->match.borders = NULL;
_comp_mod->conf->match.overrides = NULL;
_comp_mod->conf->match.menus = NULL;
EINA_LIST_FOREACH(cfdata->match.popups, l, m2)
{
m = E_NEW(Match, 1);
_match_dup2(m2, m);
_comp_mod->conf->match.popups =
eina_list_append(_comp_mod->conf->match.popups, m);
}
EINA_LIST_FOREACH(cfdata->match.borders, l, m2)
{
m = E_NEW(Match, 1);
_match_dup2(m2, m);
_comp_mod->conf->match.borders =
eina_list_append(_comp_mod->conf->match.borders, m);
}
EINA_LIST_FOREACH(cfdata->match.overrides, l, m2)
{
m = E_NEW(Match, 1);
_match_dup2(m2, m);
_comp_mod->conf->match.overrides =
eina_list_append(_comp_mod->conf->match.overrides, m);
}
EINA_LIST_FOREACH(cfdata->match.menus, l, m2)
{
m = E_NEW(Match, 1);
_match_dup2(m2, m);
_comp_mod->conf->match.menus =
eina_list_append(_comp_mod->conf->match.menus, m);
}
cfdata->match.changed = 0;
}
_comp_mod->conf->lock_fps = cfdata->lock_fps;
_comp_mod->conf->smooth_windows = cfdata->smooth_windows;
_comp_mod->conf->grab = cfdata->grab;
_comp_mod->conf->keep_unmapped = cfdata->keep_unmapped;
_comp_mod->conf->nocomp_fs = cfdata->nocomp_fs;
_comp_mod->conf->max_unmapped_pixels = cfdata->max_unmapped_pixels;
_comp_mod->conf->max_unmapped_time = cfdata->max_unmapped_time;
_comp_mod->conf->min_unmapped_time = cfdata->min_unmapped_time;
_comp_mod->conf->send_flush = cfdata->send_flush;
_comp_mod->conf->send_dump = cfdata->send_dump;
_comp_mod->conf->fps_show = cfdata->fps_show;
_comp_mod->conf->fps_corner = cfdata->fps_corner;
_comp_mod->conf->fps_average_range = cfdata->fps_average_range;
_comp_mod->conf->first_draw_delay = cfdata->first_draw_delay;
if (_comp_mod->conf->shadow_style)
eina_stringshare_del(_comp_mod->conf->shadow_style);
_comp_mod->conf->shadow_style = NULL;
if (cfdata->shadow_style)
_comp_mod->conf->shadow_style = eina_stringshare_add(cfdata->shadow_style);
e_mod_comp_shadow_set();
}
if ((cfdata->engine != _comp_mod->conf->engine) ||
(cfdata->indirect != _comp_mod->conf->indirect) ||
(cfdata->texture_from_pixmap != _comp_mod->conf->texture_from_pixmap) ||
(cfdata->efl_sync != _comp_mod->conf->efl_sync) ||
(cfdata->loose_sync != _comp_mod->conf->loose_sync) ||
(cfdata->vsync != _comp_mod->conf->vsync))
{
E_Action *a;
_comp_mod->conf->engine = cfdata->engine;
_comp_mod->conf->indirect = cfdata->indirect;
_comp_mod->conf->texture_from_pixmap = cfdata->texture_from_pixmap;
_comp_mod->conf->efl_sync = cfdata->efl_sync;
_comp_mod->conf->loose_sync = cfdata->loose_sync;
_comp_mod->conf->vsync = cfdata->vsync;
a = e_action_find("restart");
if ((a) && (a->func.go)) a->func.go(NULL, NULL);
// e_mod_comp_shutdown();
// e_mod_comp_init();
}
e_config_save_queue();
return 1;
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd,
Evas *evas,
E_Config_Dialog_Data *cfdata)
{
Evas_Object *ob,*ol, *ol2, *of, *otb, *oi, *orec0, *tab;
E_Radio_Group *rg;
orec0 = evas_object_rectangle_add(evas);
evas_object_name_set(orec0, "style_shadows");
tab = e_widget_table_add(evas, 0);
evas_object_name_set(tab, "dia_table");
otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
///////////////////////////////////////////
ol = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Sync screen (VBlank)"), &(cfdata->vsync));
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows));
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs));
e_widget_list_object_append(ol, ob, 1, 0, 0.5);
of = e_widget_frametable_add(evas, _("Select default style"), 0);
e_widget_frametable_content_align_set(of, 0.5, 0.5);
oi = _style_selector(evas, &(cfdata->shadow_style));
e_widget_frametable_object_append(of, oi, 0, 0, 1, 1, 1, 1, 1, 1);
e_widget_list_object_append(ol, of, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("General"), ol, 1, 1, 1, 1, 0.5, 0.0);
///////////////////////////////////////////
ol = e_widget_list_add(evas, 0, 0);
rg = e_widget_radio_group_new(&(cfdata->engine));
ob = e_widget_radio_add(evas, _("Software"), ENGINE_SW, rg);
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
if (!getenv("ECORE_X_NO_XLIB"))
{
if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))
{
ob = e_widget_radio_add(evas, _("OpenGL"), ENGINE_GL, rg);
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
}
}
ob = e_widget_label_add(evas, _("To reset compositor:"));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home"));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
e_widget_toolbook_page_append(otb, NULL, _("Rendering"), ol, 0, 0, 0, 0, 0.5, 0.0);
e_widget_toolbook_page_show(otb, 0);
e_dialog_resizable_set(cfd->dia, 1);
e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1);
return tab;
}
static int
_basic_apply_data(E_Config_Dialog *cfd __UNUSED__,
E_Config_Dialog_Data *cfdata)
{
if ((cfdata->lock_fps != _comp_mod->conf->lock_fps) ||
(cfdata->smooth_windows != _comp_mod->conf->smooth_windows) ||
(cfdata->grab != _comp_mod->conf->grab) ||
(cfdata->keep_unmapped != _comp_mod->conf->keep_unmapped) ||
@ -1440,7 +1595,6 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__,
}
cfdata->match.changed = 0;
}
_comp_mod->conf->use_shadow = cfdata->use_shadow;
_comp_mod->conf->lock_fps = cfdata->lock_fps;
_comp_mod->conf->smooth_windows = cfdata->smooth_windows;
_comp_mod->conf->grab = cfdata->grab;

Binary file not shown.