Evas.Object_Smart.add;
Evas.Object_Smart.del;
Evas.Object_Smart.resize;
+ Evas.Object_Smart.smart_no_render.set;
Efl.File.file.set;
Efl.File.file.get;
Efl.File.mmap.set;
}
EOLIAN static void
+_edje_object_evas_object_smart_smart_no_render_set(Eo *obj, Edje *ed, Eina_Bool hide)
+{
+ Eina_List *l;
+ Edje *edg;
+
+ evas_obj_smart_no_render_set(eo_super(obj, MY_CLASS), hide);
+ if (evas_obj_no_render_get(obj) == hide) return;
+
+ EINA_LIST_FOREACH(ed->groups, l, edg)
+ if (edg != ed) evas_obj_smart_no_render_set(edg->obj, hide);
+}
+
+EOLIAN static void
_edje_object_evas_object_smart_calculate(Eo *obj EINA_UNUSED, Edje *ed)
{
_edje_recalc_do(ed);
}
EOLIAN static void
+_elm_widget_evas_object_smart_smart_no_render_set(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Eina_Bool hide)
+{
+ Eina_Iterator *it;
+ Evas_Object *o;
+
+ it = evas_object_smart_iterator_new(obj);
+ EINA_ITERATOR_FOREACH(it, o)
+ {
+ if (evas_object_data_get(o, "_elm_leaveme")) continue;
+ evas_obj_no_render_set(o, hide);
+ }
+ eina_iterator_free(it);
+}
+
+EOLIAN static void
_elm_widget_evas_object_smart_clip_set(Eo *obj, Elm_Widget_Smart_Data *_pd EINA_UNUSED, Evas_Object *clip)
{
Eina_Iterator *it;
evas_object_color_get(obj, &r, &g, &b, &a);
evas_object_color_set(child, r, g, b, a);
+ evas_obj_no_render_set(child, evas_obj_no_render_get(obj));
evas_object_clip_set(child, evas_object_clip_get(obj));
if (evas_object_visible_get(obj))
Evas.Object_Smart.clip.set;
Evas.Object_Smart.member_add;
Evas.Object_Smart.resize;
+ Evas.Object_Smart.smart_no_render.set;
@virtual .focus_direction;
@virtual .focus_next;
@virtual .parent_widget.get;
}
EOLIAN void
-_evas_object_no_render_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool enable)
+_evas_object_no_render_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool enable)
{
obj->no_render = enable;
+ if (obj->is_smart)
+ evas_obj_smart_no_render_set(eo_obj, enable);
}
EOLIAN Eina_Bool
}
EOLIAN static void
+_evas_object_smart_smart_no_render_set(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED, Eina_Bool hide)
+{
+ Evas_Object_Protected_Data *obj2;
+
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
+ evas_obj_no_render_set(obj2->object, hide);
+}
+
+EOLIAN static void
_evas_object_smart_attach(Eo *eo_obj, Evas_Smart_Data *_pd EINA_UNUSED, Evas_Smart *s)
{
MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
@in y: Evas.Coord;
}
}
+ @property smart_no_render {
+ [[Propagates the value of no-render to the smart children.]]
+ set { legacy: null; }
+ values { hide: bool; }
+ }
callbacks_descriptions_set {
[[Set an smart object instance's smart callbacks descriptions.
obj->is_active = is_active;
#ifdef REND_DBG
- RD(level, "[--- PROCESS [%p (eo: %p)", obj, obj->object);
+ RD(level, "[--- PROCESS [%p", obj->object);
IFRD(obj->name, 0, " '%s'", obj->name);
RD(0, "] '%s' active = %i, del = %i | %i %i %ix%i\n", obj->type, is_active, obj->delete_me, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
#endif
- if ((!mapped_parent) && ((is_active) || (obj->delete_me != 0)))
+ if ((!mapped_parent) && ((is_active) || (obj->delete_me != 0)) && !obj->no_render)
OBJ_ARRAY_PUSH(active_objects, obj);
if (is_active && obj->cur->snapshot && !obj->delete_me &&
evas_object_is_visible(eo_obj, obj))
if (obj == top) break;
/* if it's in our outpout rect and it doesn't clip anything */
- RD(level, " OBJ: [%p", obj);
+ RD(level, " OBJ: [%p", eo_obj);
IFRD(obj->name, 0, " '%s'", obj->name);
RD(level, "] '%s' %i %i %ix%i\n", obj->type, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
if ((evas_object_is_in_output_rect(eo_obj, obj, ux - fx, uy - fy, uw, uh) ||
static inline int
evas_object_is_visible(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
-{ /* post 1.0 -> enable? */
- if ((obj->cur->visible)/* && (obj->cur->color.a > 0)*/ &&
+{
+ if ((obj->cur->visible) && (!obj->no_render) &&
((obj->cur->cache.clip.visible) || (obj->is_smart)) &&
((obj->cur->cache.clip.a > 0 && obj->cur->render_op == EVAS_RENDER_BLEND)
|| obj->cur->render_op != EVAS_RENDER_BLEND))