Eina_Bool delete_pending : 1; // delete pending
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 hiding : 1; // object is currently in "hide" animation
Eina_Bool visible : 1; // is visible
Eina_Bool shaped : 1; // is shaped
}
}
e_comp->animating--;
- cw->showing = 0;
+ cw->showing = cw->hiding = 0;
UNREFD(cw->ec, 2);
if (e_comp->animating == 0)
e_client_visibility_calculate();
return;
}
/* already hidden or currently animating */
- if ((!cw->visible) || (cw->animating && (!cw->showing) && (!cw->ec->iconic))) return;
+ if ((!cw->visible) || (cw->animating && cw->hiding && (!cw->ec->iconic))) return;
/* don't try hiding during shutdown */
cw->defer_hide |= stopping;
if ((!cw->ec->iconic) && (!cw->ec->override))
/* unset delete requested so the client doesn't break */
cw->ec->delete_requested = 0;
- if ((!cw->animating) || cw->showing || cw->ec->iconic)
+ if ((!cw->animating) || (!cw->hiding) || cw->ec->iconic)
{
if (cw->ec->iconic)
e_comp_object_signal_emit(obj, "e,action,iconify", "e");
INTERNAL_ENTRY;
cw->visible = 0;
+ cw->hiding = 0;
evas_object_hide(cw->clip);
if (cw->input_obj) evas_object_hide(cw->input_obj);
evas_object_hide(cw->effect_obj);
return cw->effect_obj;
}
+
+E_API Eina_Bool
+e_comp_object_effect_hiding_set(Evas_Object *obj, Eina_Bool set)
+{
+ API_ENTRY EINA_FALSE;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(cw->ec, EINA_FALSE);
+ if (!cw->effect_set) return EINA_FALSE;
+
+ cw->hiding = set;
+
+ return EINA_TRUE;
+}
+
////////////////////////////////////
static void
E_API void e_comp_object_hwc_update_set(Evas_Object *obj, Eina_Bool set);
E_API Eina_Bool e_comp_object_effect_object_part_swallow(Evas_Object *obj, const char *part_name, Evas_Object *swallow_obj);
+E_API Eina_Bool e_comp_object_effect_hiding_set(Evas_Object *obj, Eina_Bool set);
E_API void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
E_API void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);