diff options
author | Boram Park <boram1288.park@samsung.com> | 2015-04-30 19:25:25 +0900 |
---|---|---|
committer | Boram Park <boram1288.park@samsung.com> | 2015-04-30 19:25:25 +0900 |
commit | c18839df8234733458eb419eaf71ee9c199f7904 (patch) | |
tree | 5fac6256660ddde70067f0ab876433591cf04480 | |
parent | 8de0036a7eb92812139640267f346a0f246cf5cd (diff) | |
download | efl-c18839df8234733458eb419eaf71ee9c199f7904.tar.gz |
send ECORE_WL_EVENT_WINDOW_HIDE when window is destroyed
Change-Id: I05ce1ed7810e8ce7155f712d16416bf31812bb81
-rw-r--r-- | src/lib/ecore_wayland/ecore_wl_private.h | 1 | ||||
-rw-r--r-- | src/lib/ecore_wayland/ecore_wl_window.c | 15 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/lib/ecore_wayland/ecore_wl_private.h b/src/lib/ecore_wayland/ecore_wl_private.h index f45b77141f..78f7dcdbe4 100644 --- a/src/lib/ecore_wayland/ecore_wl_private.h +++ b/src/lib/ecore_wayland/ecore_wl_private.h @@ -126,6 +126,7 @@ struct _Ecore_Wl_Window struct xdg_surface *xdg_surface; struct xdg_popup *xdg_popup; + Eina_Bool visible : 1; Eina_Bool focused : 1; Eina_Bool resizing : 1; diff --git a/src/lib/ecore_wayland/ecore_wl_window.c b/src/lib/ecore_wayland/ecore_wl_window.c index ec1ea6571e..8e305ab145 100644 --- a/src/lib/ecore_wayland/ecore_wl_window.c +++ b/src/lib/ecore_wayland/ecore_wl_window.c @@ -146,6 +146,9 @@ ecore_wl_window_free(Ecore_Wl_Window *win) } } + if (win->visible) _ecore_wl_window_hide_send(win); + win->visible = EINA_FALSE; + if (win->anim_callback) wl_callback_destroy(win->anim_callback); win->anim_callback = NULL; @@ -452,7 +455,11 @@ ecore_wl_window_show(Ecore_Wl_Window *win) break; } - _ecore_wl_window_show_send(win); + if (!win->visible) + { + _ecore_wl_window_show_send(win); + win->visible = EINA_TRUE; + } } EAPI void @@ -462,7 +469,11 @@ ecore_wl_window_hide(Ecore_Wl_Window *win) if (!win) return; - _ecore_wl_window_hide_send(win); + if (win->visible) + { + _ecore_wl_window_hide_send(win); + win->visible = EINA_FALSE; + } if (win->xdg_surface) xdg_surface_destroy(win->xdg_surface); win->xdg_surface = NULL; |