derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f560c76b528753ab8a478e5a6f314838eac02221
commit f560c76b528753ab8a478e5a6f314838eac02221 Author: Derek Foreman <der...@osg.samsung.com> Date: Wed Apr 11 11:39:36 2018 -0500 ecore_wl2: Properly handle minimize request before shell surface exists If we're asked to iconify a window before it's visible we need to track this and apply the state as soon as we create the shell surface. fix T6834 --- src/lib/ecore_wl2/ecore_wl2_private.h | 1 + src/lib/ecore_wl2/ecore_wl2_window.c | 9 +++++++++ src/lib/ecore_wl2/window_v6.x | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index e47c3ffaae..cbeca119f6 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -264,6 +264,7 @@ struct _Ecore_Wl2_Window } wm_rot; Eina_Bool has_buffer : 1; Eina_Bool updating : 1; + Eina_Bool deferred_minimize : 1; }; struct _Ecore_Wl2_Output diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index ac57ba2f84..4398ffd824 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -365,6 +365,10 @@ _window_shell_surface_create(Ecore_Wl2_Window *window) xdg_toplevel_add_listener(window->xdg_toplevel, &_xdg_toplevel_listener, window); + if (window->deferred_minimize) + xdg_toplevel_set_minimized(window->xdg_toplevel); + window->deferred_minimize = EINA_FALSE; + if (window->title) xdg_toplevel_set_title(window->xdg_toplevel, window->title); if (window->class) @@ -1094,6 +1098,11 @@ ecore_wl2_window_iconified_set(Ecore_Wl2_Window *window, Eina_Bool iconified) iconified = !!iconified; + if (!window->xdg_toplevel && !window->zxdg_toplevel) + { + window->deferred_minimize = iconified; + return; + } if (iconified) { diff --git a/src/lib/ecore_wl2/window_v6.x b/src/lib/ecore_wl2/window_v6.x index 28ff1b40c4..4d8ece5ae6 100644 --- a/src/lib/ecore_wl2/window_v6.x +++ b/src/lib/ecore_wl2/window_v6.x @@ -161,6 +161,10 @@ _window_v6_shell_surface_create(Ecore_Wl2_Window *window) zxdg_toplevel_v6_add_listener(window->zxdg_toplevel, &_zxdg_toplevel_listener, window); + if (window->deferred_minimize) + zxdg_toplevel_v6_set_minimized(window->zxdg_toplevel); + window->deferred_minimize = EINA_FALSE; + if (window->title) zxdg_toplevel_v6_set_title(window->zxdg_toplevel, window->title); if (window->class) --