diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c index 6dd28faf16..c8b566bf08 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c @@ -331,8 +331,13 @@ _ecore_evas_wl_show(Ecore_Evas *ee) evas_object_resize(wdata->frame, ee->w + fw, ee->h + fh); } - ee->prop.withdrawn = EINA_FALSE; - if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + if (ee->prop.override) + { + ee->prop.withdrawn = EINA_FALSE; + if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + } + + if (ee->visible) return; ee->visible = 1; if (ee->func.fn_show) ee->func.fn_show(ee); } @@ -360,8 +365,13 @@ _ecore_evas_wl_hide(Ecore_Evas *ee) if (wdata->win) ecore_wl_window_hide(wdata->win); - ee->prop.withdrawn = EINA_TRUE; - if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + if (ee->prop.override) + { + ee->prop.withdrawn = EINA_TRUE; + if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + } + + if (!ee->visible) return; ee->visible = 0; ee->should_be_visible = 0; _ecore_evas_wl_common_frame_callback_clean(ee); diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c index 5f99f7a299..09bf26e128 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c @@ -323,8 +323,13 @@ _ecore_evas_wl_show(Ecore_Evas *ee) evas_object_resize(wdata->frame, ee->w + fw, ee->h + fh); } - ee->prop.withdrawn = EINA_FALSE; - if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + if (ee->prop.override) + { + ee->prop.withdrawn = EINA_FALSE; + if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + } + + if (ee->visible) return; ee->visible = 1; if (ee->func.fn_show) ee->func.fn_show(ee); } @@ -352,8 +357,13 @@ _ecore_evas_wl_hide(Ecore_Evas *ee) if (wdata->win) ecore_wl_window_hide(wdata->win); - ee->prop.withdrawn = EINA_TRUE; - if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + if (ee->prop.override) + { + ee->prop.withdrawn = EINA_TRUE; + if (ee->func.fn_state_change) ee->func.fn_state_change(ee); + } + + if (!ee->visible) return; ee->visible = 0; ee->should_be_visible = 0; _ecore_evas_wl_common_frame_callback_clean(ee);