diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index b16a8ca85..d570f7b00 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -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++; diff --git a/src/bin/e_popup.c b/src/bin/e_popup.c index 035d3f5ee..b98f41f65 100644 --- a/src/bin/e_popup.c +++ b/src/bin/e_popup.c @@ -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(); }