process comp object hide/show signals immediately during intercept

for objects without animations, it's important to instantly perform
state transitions in order to preserve intended visibility behaviors of
these objects and avoid race conditions due to asynchronous signal
processing

fix T6722
This commit is contained in:
Mike Blumenkrantz 2018-02-22 12:36:47 -05:00
parent a6d1933823
commit 2e0e3a356b
1 changed files with 2 additions and 0 deletions

View File

@ -2816,6 +2816,7 @@ _e_comp_object_util_show(void *data EINA_UNUSED, Evas_Object *obj)
evas_object_data_set(obj, "comp_ref", (void*)1);
}
edje_object_signal_emit(obj, "e,state,visible", "e");
edje_object_message_signal_process(obj);
evas_object_data_set(obj, "comp_showing", (void*)1);
if (e_comp_util_object_is_above_nocomp(obj))
{
@ -2844,6 +2845,7 @@ _e_comp_object_util_hide(void *data EINA_UNUSED, Evas_Object *obj)
evas_object_data_set(obj, "comp_ref", (void*)1);
}
edje_object_signal_emit(obj, "e,state,hidden", "e");
edje_object_message_signal_process(obj);
evas_object_data_set(obj, "comp_hiding", (void*)1);
if (evas_object_data_del(obj, "comp_override"))