[metacity] unminimize windows with initial IconicState if first known on MapRequest



commit 6875256e63fbfd4500ddd27a7bf1aafc8d4c1ca3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Sep 18 12:03:53 2014 +0200

    unminimize windows with initial IconicState if first known on MapRequest
    
    In that case, the MetaWindow is created, but it should also be unminimized
    to satisfy the MapRequest triggered by the client, otherwise these would
    stay minimized until they're shown explicitly by the user.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=774333

 src/core/display.c |   38 +++++++++++++++++++++++++-------------
 1 files changed, 25 insertions(+), 13 deletions(-)
---
diff --git a/src/core/display.c b/src/core/display.c
index f14bcc2..ae56542 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -2296,22 +2296,34 @@ event_callback (XEvent   *event,
             {
               meta_compositor_add_window (display->compositor, window, xwindow);
             }
+
+          /* The window might have initial iconic state, but this is a
+           * MapRequest, fall through to ensure it is unminimized in
+           * that case.
+           */
         }
-      /* if frame was receiver it's some malicious send event or something */
-      else if (!frame_was_receiver && window)
+      else if (frame_was_receiver)
         {
-          meta_verbose ("MapRequest on %s mapped = %d minimized = %d\n",
-                        window->desc, window->mapped, window->minimized);
-          if (window->minimized)
+          meta_warning ("Map requests on the frame window are unexpected\n");
+          break;
+        }
+
+      /* Double check that creating the MetaWindow succeeded */
+      if (window == NULL)
+        break;
+
+      meta_verbose ("MapRequest on %s mapped = %d minimized = %d\n",
+                    window->desc, window->mapped, window->minimized);
+
+      if (window->minimized)
+        {
+          meta_window_unminimize (window);
+          if (window->workspace != window->screen->active_workspace)
             {
-              meta_window_unminimize (window);
-              if (window->workspace != window->screen->active_workspace)
-                {
-                  meta_verbose ("Changing workspace due to MapRequest mapped = %d minimized = %d\n",
-                                window->mapped, window->minimized);
-                  meta_window_change_workspace (window,
-                                                window->screen->active_workspace);
-                }
+              meta_verbose ("Changing workspace due to MapRequest mapped = %d minimized = %d\n",
+                            window->mapped, window->minimized);
+              meta_window_change_workspace (window,
+                                            window->screen->active_workspace);
             }
         }
       break;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]