diff options
-rw-r--r-- | ChangeLog | 14 | ||||
-rw-r--r-- | doc/how-to-get-focus-right.txt | 5 | ||||
-rw-r--r-- | src/workspace.c | 43 |
3 files changed, 20 insertions, 42 deletions
@@ -1,5 +1,19 @@ 2004-09-15 Elijah Newren <newren@math.utah.edu> + Focus the no_focus_window if no suitable window is in the mru list + (should fix the almost contrived extra issue found in #147475) + + * doc/how-to-get-focus-right.txt: We no longer need to lie about + only focusing panels upon explicit request. + + * src/workspace.c: (meta_workspace_focus_top_window): removed this + function--it was more code than needed and was unreliable anyway, + (meta_workspace_focus_mru_window): if a suitable window isn't in + the mru list, focus the no_focus_window instead of calling + focus_top_window. + +2004-09-15 Elijah Newren <newren@math.utah.edu> + Prevent focus inconsistencies by only providing one focus method (fixes #151990) diff --git a/doc/how-to-get-focus-right.txt b/doc/how-to-get-focus-right.txt index dbf1d9ef..2f5da047 100644 --- a/doc/how-to-get-focus-right.txt +++ b/doc/how-to-get-focus-right.txt @@ -78,10 +78,7 @@ without using the mouse, for example, by grabs). Finally, windows of type WM_DOCK or WM_DESKTOP (e.g. the desktop and the panel) present a special case. For all focus modes, we only focus these windows if the user clicks on them or uses Ctrl-Alt-Tab to -navigate to them. (Well, erm, actually they can be focused in click -and sloppy focus modes if no other window besides these are found, but -there shouldn't be any difference in behavior between doing this and -focusing the designated "no_focus_window") +navigate to them. diff --git a/src/workspace.c b/src/workspace.c index 912a41bd..728c333f 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -31,8 +31,6 @@ void meta_workspace_queue_calc_showing (MetaWorkspace *workspace); static void set_active_space_hint (MetaScreen *screen); static void meta_workspace_focus_mru_window (MetaWorkspace *workspace, MetaWindow *not_this_one); -static void meta_workspace_focus_top_window (MetaWorkspace *workspace, - MetaWindow *not_this_one); static void maybe_add_to_list (MetaScreen *screen, MetaWindow *window, gpointer data) @@ -867,41 +865,10 @@ meta_workspace_focus_mru_window (MetaWorkspace *workspace, } else { - meta_topic (META_DEBUG_FOCUS, "No MRU window to focus found\n"); - meta_workspace_focus_top_window (workspace, not_this_one); - } -} - -/* Focus top window on workspace */ -void -meta_workspace_focus_top_window (MetaWorkspace *workspace, - MetaWindow *not_this_one) -{ - MetaWindow *window; - - if (not_this_one) - meta_topic (META_DEBUG_FOCUS, - "Focusing top window excluding %s\n", not_this_one->desc); - - window = meta_stack_get_default_focus_window (workspace->screen->stack, - workspace, - not_this_one); - - /* FIXME I'm a loser on the CurrentTime front */ - if (window) - { - meta_topic (META_DEBUG_FOCUS, - "Focusing top window %s\n", window->desc); - - meta_window_focus (window, - meta_display_get_current_time (workspace->screen->display)); - - /* Also raise the window if in click-to-focus */ - if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK) - meta_window_raise (window); - } - else - { - meta_topic (META_DEBUG_FOCUS, "No top window to focus found\n"); + meta_topic (META_DEBUG_FOCUS, "No MRU window to focus found; focusing no_focus_window.\n"); + XSetInputFocus (workspace->screen->display->xdisplay, + workspace->screen->display->no_focus_window, + RevertToPointerRoot, + meta_display_get_current_time (workspace->screen->display)); } } |