mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -05:00
Patch from Ken Harris in #135786 to focus a new default window when
2004-09-15 Elijah Newren <newren@math.utah.edu> Patch from Ken Harris in #135786 to focus a new default window when lowering via middle-click on the frame. * src/core.[hc], src/frames.c: rename meta_core_user_lower to meta_core_user_lower_and_unfocus * src/core.c (meta_core_user_lower_and_unfocus): if in click-to-focus mode then also move the window to the back of the mru list and focus the new default window for the active workspace
This commit is contained in:
parent
cffe7e9566
commit
63e1624bd7
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
2004-09-15 Elijah Newren <newren@math.utah.edu>
|
||||
|
||||
Patch from Ken Harris in #135786 to focus a new default window
|
||||
when lowering via middle-click on the frame.
|
||||
|
||||
* src/core.[hc], src/frames.c: rename meta_core_user_lower to
|
||||
meta_core_user_lower_and_unfocus
|
||||
|
||||
* src/core.c (meta_core_user_lower_and_unfocus): if in
|
||||
click-to-focus mode then also move the window to the back of the
|
||||
mru list and focus the new default window for the active workspace
|
||||
|
||||
2004-09-15 Elijah Newren <newren@math.utah.edu>
|
||||
|
||||
Focus the no_focus_window if no suitable window is in the mru list
|
||||
|
34
src/core.c
34
src/core.c
@ -236,8 +236,8 @@ meta_core_user_raise (Display *xdisplay,
|
||||
}
|
||||
|
||||
void
|
||||
meta_core_user_lower (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
meta_core_user_lower_and_unfocus (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
MetaWindow *window;
|
||||
@ -249,6 +249,36 @@ meta_core_user_lower (Display *xdisplay,
|
||||
meta_bug ("No such frame window 0x%lx!\n", frame_xwindow);
|
||||
|
||||
meta_window_lower (window);
|
||||
|
||||
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
|
||||
{
|
||||
/* Move window to the back of the focusing workspace's MRU list.
|
||||
* Do extra sanity checks to avoid possible race conditions.
|
||||
* (Borrowed from window.c.)
|
||||
*/
|
||||
if (window->screen->active_workspace &&
|
||||
meta_window_visible_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_append (window->screen->active_workspace->mru_list,
|
||||
window);
|
||||
}
|
||||
|
||||
/* focus on the (new) topmost window */
|
||||
if (window->has_focus)
|
||||
meta_workspace_focus_default_window (window->screen->active_workspace, window);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -60,8 +60,8 @@ void meta_core_user_resize (Display *xdisplay,
|
||||
|
||||
void meta_core_user_raise (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_user_lower (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
void meta_core_user_lower_and_unfocus (Display *xdisplay,
|
||||
Window frame_xwindow);
|
||||
|
||||
void meta_core_user_focus (Display *xdisplay,
|
||||
Window frame_xwindow,
|
||||
|
@ -1373,7 +1373,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
}
|
||||
else if (event->button == 2)
|
||||
{
|
||||
meta_core_user_lower (gdk_display, frame->xwindow);
|
||||
meta_core_user_lower_and_unfocus (gdk_display, frame->xwindow);
|
||||
}
|
||||
else if (event->button == 3)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user