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)

-- 


Reply via email to