[mutter] window: Clean up the set_focused_internal function
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] window: Clean up the set_focused_internal function
- Date: Wed, 22 May 2013 16:35:48 +0000 (UTC)
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]