fix more map+clip goop.

SVN revision: 51830
This commit is contained in:
Carsten Haitzler 2010-09-02 09:40:23 +00:00
parent 3527150853
commit b37a2117d1
3 changed files with 32 additions and 1 deletions

View File

@ -93,16 +93,43 @@ evas_object_child_map_across_mark(Evas_Object *obj, Evas_Object *map_obj, Eina_B
evas_object_child_map_across_mark(obj2, map_obj, force);
}
}
else if (obj->clip.clipees)
{
Eina_List *l;
Evas_Object *obj2;
EINA_LIST_FOREACH(obj->clip.clipees, l, obj2)
evas_object_child_map_across_mark(obj2, map_obj, force);
}
}
#endif
}
static void
void
evas_object_clip_across_check(Evas_Object *obj)
{
#ifdef MAP_ACROSS
if (!obj->cur.clipper) return;
if (obj->cur.clipper->cur.map_parent != obj->cur.map_parent)
evas_object_child_map_across_mark(obj, obj->cur.map_parent, 1);
#endif
}
void
evas_object_clip_across_clippees_check(Evas_Object *obj)
{
#ifdef MAP_ACROSS
Eina_List *l;
Evas_Object *obj2;
if (!obj->clip.clipees) return;
evas_object_child_map_across_mark(obj, obj->cur.map_parent, 1);
if (obj->cur.cache.clip.dirty)
{
EINA_LIST_FOREACH(obj->clip.clipees, l, obj2)
evas_object_clip_across_clippees_check(obj2);
}
#endif
}
// this function is called on an object when map is enabled or disabled on it

View File

@ -1080,6 +1080,7 @@ evas_object_show(Evas_Object *obj)
evas_object_clip_dirty(obj);
if (obj->layer->evas->events_frozen <= 0)
{
evas_object_clip_across_clippees_check(obj);
evas_object_recalc_clippees(obj);
if (!evas_event_passes_through(obj))
{
@ -1135,6 +1136,7 @@ evas_object_hide(Evas_Object *obj)
evas_object_clip_dirty(obj);
if (obj->layer->evas->events_frozen <= 0)
{
evas_object_clip_across_clippees_check(obj);
evas_object_recalc_clippees(obj);
if (!evas_event_passes_through(obj))
{

View File

@ -734,6 +734,8 @@ int evas_object_was_opaque(Evas_Object *obj);
int evas_object_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
int evas_object_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
int evas_object_clippers_was_visible(Evas_Object *obj);
void evas_object_clip_across_check(Evas_Object *obj);
void evas_object_clip_across_clippees_check(Evas_Object *obj);
void evas_object_mapped_clip_across_mark(Evas_Object *obj);
void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info);
void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info);