comp wins for injected e objects now wait until animations are done before allowing deletion

SVN revision: 84093
This commit is contained in:
Mike Blumenkrantz 2013-02-19 09:14:58 +00:00
parent 1a0f84960a
commit 6cf4d21438
2 changed files with 13 additions and 3 deletions

View File

@ -1520,7 +1520,12 @@ _e_comp_done_defer(E_Comp_Win *cw)
cw->force = 1;
if (cw->defer_hide) _e_comp_win_hide(cw);
cw->force = 1;
if (cw->delete_me) _e_comp_win_del(cw);
if (cw->delete_me)
{
if (cw->real_obj && (cw->pop || cw->menu))
e_object_unref(evas_object_data_get(cw->obj, "eobj"));
_e_comp_win_del(cw);
}
else cw->force = 0;
}
@ -2442,6 +2447,8 @@ _e_comp_win_hide(E_Comp_Win *cw)
cw->c->animating++;
}
cw->animating = 1;
if (cw->real_obj && (cw->pop || cw->menu))
e_object_ref(evas_object_data_get(cw->obj, "eobj"));
_e_comp_win_render_queue(cw);
cw->pending_count++;

View File

@ -197,10 +197,13 @@ e_popup_hide(E_Popup *pop)
E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE);
if (!pop->visible) return;
pop->visible = 0;
if (pop->cw) e_comp_win_hide(pop->cw);
if (pop->cw)
{
e_comp_win_hide(pop->cw);
e_comp_win_del(pop->cw);
}
if (!pop->autoclose) return;
if (e_object_is_del(E_OBJECT(pop))) return;
autoclose_popup = NULL;
_e_popup_autoclose_cleanup();
}