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 10ae53b994
commit c1cd24a561
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"))