0x0 smarts will no be rendered again - well children will be... but its still

bad form to do this. oddly - the desktop panning in e does this. need to check.



SVN revision: 43799
This commit is contained in:
Carsten Haitzler 2009-11-19 08:37:22 +00:00
parent d3135f8f27
commit 8ce36a26c9
2 changed files with 32 additions and 9 deletions

View File

@ -126,8 +126,7 @@ static Eina_Bool
_evas_render_has_map(Evas_Object *obj)
{
return ((!((obj->func->can_map) && (obj->func->can_map(obj)))) &&
((obj->cur.map) && (obj->cur.map->count == 4) &&
(obj->cur.usemap)));
((obj->cur.map) && (obj->cur.usemap)));
}
static Eina_Bool
@ -258,6 +257,14 @@ _evas_render_phase1_object_process(Evas *e, Evas_Object *obj,
RD(" [--- PROCESS [%p] '%s' active = %i, del = %i | %i %i %ix%i\n", obj, obj->type, is_active, obj->delete_me, obj->cur.geometry.x, obj->cur.geometry.y, obj->cur.geometry.w, obj->cur.geometry.h);
if ((is_active) || (obj->delete_me != 0))
eina_array_push(active_objects, obj);
#ifdef REND_DGB
if (!is_active)
{
RDI(level);
RD(" [%p] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj, obj->cur.visible, obj->cur.cache.clip.visible, obj->cur.cache.clip.a, obj->func->is_visible);
}
#endif
if (_evas_render_has_map(obj)) map = 1;

View File

@ -81,7 +81,7 @@ static inline int
evas_object_is_visible(Evas_Object *obj)
{
if ((obj->cur.visible) &&
(obj->cur.cache.clip.visible) &&
((obj->cur.cache.clip.visible) || (obj->smart.smart)) &&
(obj->cur.cache.clip.a > 0))
{
if (obj->func->is_visible)
@ -119,12 +119,28 @@ evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
static inline int
evas_object_is_active(Evas_Object *obj)
{
if ((evas_object_is_visible(obj) || evas_object_was_visible(obj)) &&
(evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h) ||
evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h)))
return 1;
if (evas_object_is_visible(obj) || evas_object_was_visible(obj))
{
if (obj->smart.smart)
{
int mapsmt = 0;
if (obj->smart.smart && (obj->cur.map && obj->cur.usemap)) mapsmt = 1;
if (!mapsmt) return 1;
if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h) ||
evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h))
return 1;
}
else
{
if (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h) ||
evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
obj->layer->evas->output.h))
return 1;
}
}
return 0;
}