unsigned int failures; //number of consecutive e_pixmap_image_draw() failures
Eina_Bool delete_pending : 1; // delete pendig
Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide
+ Eina_Bool showing : 1; // object is currently in "show" animation
Eina_Bool visible : 1; // is visible
Eina_Bool shaped : 1; // is shaped
if (!cw->animating)
{
e_comp->animating--;
+ cw->showing = 0;
UNREFD(cw->ec, 2);
/* remove ref from animation start, account for possibility of deletion from unref */
return e_object_unref(E_OBJECT(cw->ec));
return;
}
/* already hidden or currently animating */
- if ((!cw->visible) || (cw->animating && (!cw->ec->iconic))) return;
+ if ((!cw->visible) || (cw->animating && (!cw->showing) && (!cw->ec->iconic))) return;
/* don't try hiding during shutdown */
cw->defer_hide |= stopping;
cw->ec->delete_requested = 0;
e_hints_window_hidden_set(cw->ec);
}
- if ((!cw->animating) || (cw->ec->iconic))
+ if ((!cw->animating) || cw->showing || cw->ec->iconic)
{
if (cw->ec->iconic)
e_comp_object_signal_emit(obj, "e,action,iconify", "e");
e_comp_object_effect_params_set(obj, 0, (int[]){1}, 1);
e_comp_object_effect_start(obj, _e_comp_object_done_defer, cw);
}
+ cw->showing = 1;
}
/* ensure some random effect doesn't lock the client offscreen */
if (!cw->animating)
{
+ cw->showing = 0;
e_comp_object_effect_set(obj, NULL);
e_comp_shape_queue();
}