forked from enlightenment/enlightenment
break out comp util object type setting into separate function
there was previously no way to change the type of one of these objects, meaning that if an object with a dropshadow should no longer have a dropshadow, it must be re-created
This commit is contained in:
parent
26ab47f679
commit
980135fc38
|
@ -2575,22 +2575,23 @@ _e_comp_object_util_moveresize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj
|
|||
e_comp_shape_queue();
|
||||
}
|
||||
|
||||
E_API Evas_Object *
|
||||
e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
|
||||
E_API void
|
||||
e_comp_object_util_type_set(Evas_Object *obj, E_Comp_Object_Type type)
|
||||
{
|
||||
Evas_Object *o, *z = NULL;
|
||||
const char *name;
|
||||
Evas_Object *content;
|
||||
const char *name = NULL;
|
||||
Eina_List *l, *list = NULL;
|
||||
E_Comp_Config *conf = e_comp_config_get();
|
||||
Eina_Bool skip = EINA_FALSE, fast = EINA_FALSE, shadow = EINA_FALSE;
|
||||
E_Comp_Match *m;
|
||||
const char *grp;
|
||||
char buf[1024];
|
||||
int ok = 0;
|
||||
int x, y, w, h;
|
||||
Eina_Bool vis;
|
||||
int w, h;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
|
||||
EINA_SAFETY_ON_NULL_RETURN(obj);
|
||||
|
||||
edje_object_file_get(obj, NULL, &grp);
|
||||
switch (type)
|
||||
{
|
||||
case E_COMP_OBJECT_TYPE_MENU:
|
||||
|
@ -2609,15 +2610,21 @@ e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
|
|||
skip = conf->match.disable_objects;
|
||||
fast = conf->fast_objects;
|
||||
}
|
||||
name = evas_object_name_get(obj);
|
||||
vis = evas_object_visible_get(obj);
|
||||
o = edje_object_add(e_comp->evas);
|
||||
evas_object_data_set(o, "comp_object", (void*)1);
|
||||
content = edje_object_part_swallow_get(obj, "e.swallow.content");
|
||||
if (content)
|
||||
{
|
||||
if (eina_streq(evas_object_type_get(content), "e_zoomap"))
|
||||
name = evas_object_name_get(e_zoomap_child_get(content));
|
||||
else
|
||||
name = evas_object_name_get(content);
|
||||
}
|
||||
if (name && (!skip))
|
||||
skip = (!strncmp(name, "noshadow", 8));
|
||||
if (skip)
|
||||
evas_object_data_set(o, "comp_object_skip", (void*)1);
|
||||
else if (list)
|
||||
evas_object_data_set(obj, "comp_object_skip", (void*)1);
|
||||
else
|
||||
evas_object_data_del(obj, "comp_object_skip");
|
||||
if (list && (!skip))
|
||||
{
|
||||
EINA_LIST_FOREACH(list, l, m)
|
||||
{
|
||||
|
@ -2628,12 +2635,14 @@ e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
|
|||
if (fast)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", m->shadow_style);
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", buf);
|
||||
if (eina_streq(buf, grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", buf);
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "e/comp/frame/%s", m->shadow_style);
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", buf);
|
||||
if (eina_streq(buf, grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", buf);
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
|
@ -2647,32 +2656,95 @@ e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
|
|||
while (!ok)
|
||||
{
|
||||
if (skip)
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/none");
|
||||
{
|
||||
if (eina_streq("e/comp/frame/none", grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", "e/comp/frame/none");
|
||||
}
|
||||
if (ok) break;
|
||||
if (conf->shadow_style)
|
||||
{
|
||||
if (fast)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "e/comp/frame/%s/fast", conf->shadow_style);
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", buf);
|
||||
if (eina_streq(buf, grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", buf);
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "e/comp/frame/%s", conf->shadow_style);
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", buf);
|
||||
if (eina_streq(buf, grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", buf);
|
||||
}
|
||||
if (ok) break;
|
||||
}
|
||||
if (fast)
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/default/fast");
|
||||
{
|
||||
if (eina_streq("e/comp/frame/default/fast", grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", "e/comp/frame/default/fast");
|
||||
}
|
||||
if (!ok)
|
||||
ok = e_theme_edje_object_set(o, "base/theme/comp", "e/comp/frame/default");
|
||||
{
|
||||
if (eina_streq("e/comp/frame/default", grp)) return;
|
||||
ok = e_theme_edje_object_set(obj, "base/theme/comp", "e/comp/frame/default");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (shadow && (e_util_strcmp(evas_object_type_get(obj), "edje") || (!edje_object_data_get(obj, "noshadow"))))
|
||||
edje_object_signal_emit(o, "e,state,shadow,on", "e");
|
||||
edje_object_signal_emit(obj, "e,state,shadow,on", "e");
|
||||
else
|
||||
edje_object_signal_emit(o, "e,state,shadow,off", "e");
|
||||
edje_object_signal_emit(obj, "e,state,shadow,off", "e");
|
||||
if (!content) return;
|
||||
{
|
||||
Evas_Object *child;
|
||||
|
||||
if (eina_streq(evas_object_type_get(content), "e_zoomap"))
|
||||
child = e_zoomap_child_get(content);
|
||||
else
|
||||
child = content;
|
||||
|
||||
if (list && (child == content))
|
||||
{
|
||||
evas_object_geometry_get(child, NULL, NULL, &w, &h);
|
||||
content = e_zoomap_add(e_comp->evas);
|
||||
e_zoomap_child_edje_solid_setup(content);
|
||||
e_zoomap_smooth_set(content, conf->smooth_windows);
|
||||
e_zoomap_child_set(content, child);
|
||||
e_zoomap_child_resize(content, w, h);
|
||||
evas_object_show(content);
|
||||
}
|
||||
else if (child != content)
|
||||
{
|
||||
e_zoomap_child_set(content, NULL);
|
||||
evas_object_del(content);
|
||||
}
|
||||
edje_object_part_swallow(obj, "e.swallow.content", content);
|
||||
}
|
||||
}
|
||||
|
||||
E_API Evas_Object *
|
||||
e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type)
|
||||
{
|
||||
Evas_Object *o, *z = NULL;
|
||||
Eina_List *list = NULL;
|
||||
E_Comp_Config *conf = e_comp_config_get();
|
||||
int x, y, w, h;
|
||||
Eina_Bool vis;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
|
||||
switch (type)
|
||||
{
|
||||
case E_COMP_OBJECT_TYPE_MENU:
|
||||
list = conf->match.menus;
|
||||
break;
|
||||
case E_COMP_OBJECT_TYPE_POPUP:
|
||||
list = conf->match.popups;
|
||||
break;
|
||||
default:
|
||||
list = conf->match.objects;
|
||||
}
|
||||
vis = evas_object_visible_get(obj);
|
||||
o = edje_object_add(e_comp->evas);
|
||||
e_comp_object_util_type_set(o, type);
|
||||
|
||||
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
||||
evas_object_geometry_set(o, x, y, w, h);
|
||||
|
|
|
@ -39,6 +39,7 @@ E_API void e_comp_object_zoomap_set(Evas_Object *obj, Eina_Bool enabled);
|
|||
E_API Eina_Bool e_comp_object_mirror_visibility_check(Evas_Object *obj);
|
||||
E_API Evas_Object *e_comp_object_client_add(E_Client *ec);
|
||||
E_API Evas_Object *e_comp_object_util_mirror_add(Evas_Object *obj);
|
||||
E_API void e_comp_object_util_type_set(Evas_Object *obj, E_Comp_Object_Type type);
|
||||
E_API Evas_Object *e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type);
|
||||
E_API void e_comp_object_frame_xy_adjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
|
||||
E_API void e_comp_object_frame_xy_unadjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
|
||||
|
|
Loading…
Reference in New Issue