[mutter] window: Clean up the set_focused_internal function



commit e430e051b7b415c15adb61d9ae279517aea192ff
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sun Dec 16 22:24:15 2012 -0500

    window: Clean up the set_focused_internal function
    
    Move things out of an indentation layer, and reshuffle
    things around.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=647706

 src/core/window.c |  168 +++++++++++++++++++++++++----------------------------
 1 files changed, 80 insertions(+), 88 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index 59eb056..e6dd691 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -7214,110 +7214,102 @@ meta_window_set_focused_internal (MetaWindow *window,
 {
   if (focused)
     {
-      if (window != window->display->focus_window)
+      if (window == window->display->focus_window)
+        return;
+
+      meta_topic (META_DEBUG_FOCUS,
+                  "* Focus --> %s\n", window->desc);
+      window->display->focus_window = window;
+      window->has_focus = TRUE;
+
+      /* Move to the front of the focusing workspace's MRU list.
+       * We should only be "removing" it from the MRU list if it's
+       * not already there.  Note that it's possible that we might
+       * be processing this FocusIn after we've changed to a
+       * different workspace; we should therefore update the MRU
+       * list only if the window is actually on the active
+       * workspace.
+       */
+      if (window->screen->active_workspace &&
+          meta_window_located_on_workspace (window,
+                                            window->screen->active_workspace))
         {
-          meta_topic (META_DEBUG_FOCUS,
-                      "* Focus --> %s\n", window->desc);
-          window->display->focus_window = window;
-          window->has_focus = TRUE;
-
-          /* Move to the front of the focusing workspace's MRU list.
-           * We should only be "removing" it from the MRU list if it's
-           * not already there.  Note that it's possible that we might
-           * be processing this FocusIn after we've changed to a
-           * different workspace; we should therefore update the MRU
-           * list only if the window is actually on the active
-           * workspace.
-           */
-          if (window->screen->active_workspace &&
-              meta_window_located_on_workspace (window,
-                                                window->screen->active_workspace))
-            {
-              GList* link;
-              link = g_list_find (window->screen->active_workspace->mru_list,
-                                  window);
-              g_assert (link);
-
-              window->screen->active_workspace->mru_list =
-                g_list_remove_link (window->screen->active_workspace->mru_list,
-                                    link);
-              g_list_free (link);
-
-              window->screen->active_workspace->mru_list =
-                g_list_prepend (window->screen->active_workspace->mru_list,
-                                window);
-            }
+          GList* link;
+          link = g_list_find (window->screen->active_workspace->mru_list,
+                              window);
+          g_assert (link);
 
-          if (window->frame)
-            meta_frame_queue_draw (window->frame);
+          window->screen->active_workspace->mru_list =
+            g_list_remove_link (window->screen->active_workspace->mru_list,
+                                link);
+          g_list_free (link);
 
-          meta_error_trap_push (window->display);
-          XInstallColormap (window->display->xdisplay,
-                            window->colormap);
-          meta_error_trap_pop (window->display);
+          window->screen->active_workspace->mru_list =
+            g_list_prepend (window->screen->active_workspace->mru_list,
+                            window);
+        }
 
-          /* move into FOCUSED_WINDOW layer */
-          meta_window_update_layer (window);
+      if (window->frame)
+        meta_frame_queue_draw (window->frame);
 
-          /* Ungrab click to focus button since the sync grab can interfere
-           * with some things you might do inside the focused window, by
-           * causing the client to get funky enter/leave events.
-           *
-           * The reason we usually have a passive grab on the window is
-           * so that we can intercept clicks and raise the window in
-           * response. For click-to-focus we don't need that since the
-           * focused window is already raised. When raise_on_click is
-           * FALSE we also don't need that since we don't do anything
-           * when the window is clicked.
-           *
-           * There is dicussion in bugs 102209, 115072, and 461577
-           */
-          if (meta_prefs_get_focus_mode () == G_DESKTOP_FOCUS_MODE_CLICK ||
-              !meta_prefs_get_raise_on_click())
-            meta_display_ungrab_focus_window_button (window->display, window);
+      meta_error_trap_push (window->display);
+      XInstallColormap (window->display->xdisplay,
+                        window->colormap);
+      meta_error_trap_pop (window->display);
 
-          g_signal_emit (window, window_signals[FOCUS], 0);
-          g_object_notify (G_OBJECT (window->display), "focus-window");
+      /* move into FOCUSED_WINDOW layer */
+      meta_window_update_layer (window);
 
-          if (!window->attached_focus_window)
-            meta_window_appears_focused_changed (window);
+      /* Ungrab click to focus button since the sync grab can interfere
+       * with some things you might do inside the focused window, by
+       * causing the client to get funky enter/leave events.
+       *
+       * The reason we usually have a passive grab on the window is
+       * so that we can intercept clicks and raise the window in
+       * response. For click-to-focus we don't need that since the
+       * focused window is already raised. When raise_on_click is
+       * FALSE we also don't need that since we don't do anything
+       * when the window is clicked.
+       *
+       * There is dicussion in bugs 102209, 115072, and 461577
+       */
+      if (meta_prefs_get_focus_mode () == G_DESKTOP_FOCUS_MODE_CLICK ||
+          !meta_prefs_get_raise_on_click())
+        meta_display_ungrab_focus_window_button (window->display, window);
 
-          meta_window_propagate_focus_appearance (window, TRUE);
-        }
+      g_signal_emit (window, window_signals[FOCUS], 0);
+      g_object_notify (G_OBJECT (window->display), "focus-window");
+
+      if (!window->attached_focus_window)
+        meta_window_appears_focused_changed (window);
+
+      meta_window_propagate_focus_appearance (window, TRUE);
     }
   else
     {
-      if (window == window->display->focus_window)
-        {
-          meta_topic (META_DEBUG_FOCUS,
-                      "%s is now the previous focus window due to being focused out or unmapped\n",
-                      window->desc);
-
-          meta_topic (META_DEBUG_FOCUS,
-                      "* Focus --> NULL (was %s)\n", window->desc);
-
-          meta_window_propagate_focus_appearance (window, FALSE);
+      if (window != window->display->focus_window)
+        return;
 
-          window->display->focus_window = NULL;
-          g_object_notify (G_OBJECT (window->display), "focus-window");
-          window->has_focus = FALSE;
+      meta_window_propagate_focus_appearance (window, FALSE);
+      window->display->focus_window = NULL;
+      g_object_notify (G_OBJECT (window->display), "focus-window");
+      window->has_focus = FALSE;
 
-          if (!window->attached_focus_window)
-            meta_window_appears_focused_changed (window);
+      if (!window->attached_focus_window)
+        meta_window_appears_focused_changed (window);
 
-          meta_error_trap_push (window->display);
-          XUninstallColormap (window->display->xdisplay,
-                              window->colormap);
-          meta_error_trap_pop (window->display);
+      meta_error_trap_push (window->display);
+      XUninstallColormap (window->display->xdisplay,
+                          window->colormap);
+      meta_error_trap_pop (window->display);
 
-          /* move out of FOCUSED_WINDOW layer */
-          meta_window_update_layer (window);
+      /* move out of FOCUSED_WINDOW layer */
+      meta_window_update_layer (window);
 
-          /* Re-grab for click to focus and raise-on-click, if necessary */
-          if (meta_prefs_get_focus_mode () == G_DESKTOP_FOCUS_MODE_CLICK ||
-              !meta_prefs_get_raise_on_click ())
-            meta_display_grab_focus_window_button (window->display, window);
-        }
+      /* Re-grab for click to focus and raise-on-click, if necessary */
+      if (meta_prefs_get_focus_mode () == G_DESKTOP_FOCUS_MODE_CLICK ||
+          !meta_prefs_get_raise_on_click ())
+        meta_display_grab_focus_window_button (window->display, window);
     }
 }
 


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