diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 3fd2e8bdd..5f695218c 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -646,6 +646,8 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char * /* hide only after animation finishes to guarantee a full run of the animation */ if (cw->defer_hide && (!strcmp(emission, "e,action,hide,done"))) evas_object_hide(cw->smart_obj); + else if (!cw->animating) + e_comp_shape_queue(cw->comp); } ///////////////////////////////////////////// @@ -1970,8 +1972,11 @@ _e_comp_smart_show(Evas_Object *obj) if (cw->ec->internal_elm_win && (!evas_object_visible_get(cw->ec->internal_elm_win))) evas_object_show(cw->ec->internal_elm_win); e_comp_render_queue(cw->comp); - e_comp_shape_queue(cw->comp); - if (cw->ec->input_only) return; + if (cw->ec->input_only) + { + e_comp_shape_queue(cw->comp); + return; + } if (cw->ec->iconic && (!cw->ec->new_client)) e_comp_object_signal_emit(cw->smart_obj, "e,action,uniconify", "e"); else @@ -1983,7 +1988,10 @@ _e_comp_smart_show(Evas_Object *obj) } /* ensure some random effect doesn't lock the client offscreen */ if (!cw->animating) - e_comp_object_effect_set(obj, NULL); + { + e_comp_object_effect_set(obj, NULL); + e_comp_shape_queue(cw->comp); + } } static void @@ -2106,7 +2114,8 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h) } if (!cw->visible) return; e_comp_render_queue(cw->comp); - e_comp_shape_queue(cw->comp); + if (!cw->animating) + e_comp_shape_queue(cw->comp); } static void @@ -3502,7 +3511,8 @@ _e_comp_object_effect_end_cb(void *data, Evas_Object *obj, const char *emission, { cw->comp->animating--; cw->animating--; - e_object_unref(E_OBJECT(cw->ec)); + if (e_object_unref(E_OBJECT(cw->ec))) + e_comp_shape_queue(cw->comp); } end_cb = evas_object_data_get(obj, "_e_comp.end_cb");