Fix some bugs (reported in #120100) regarding the focus window when using

2004-08-02  Elijah Newren  <newren@math.utah.edu>

	Fix some bugs (reported in #120100) regarding the focus window
	when using the workspace switcher.

	* src/display.c (event_callback): When switching workspaces due to
	a _NET_CURRENT_DESKTOP message, make sure to focus the default
	window as well.

	* src/workspace.c (meta_workspace_focus_default_window,
	meta_workspace_focus_mru_window): Make DOCK or DESKTOP windows
	have lower priority than others when choosing a window to focus.
	(For the former function, this means don't focus them at all; for
	the latter, this means only focus them (via the
	meta_workspace_focus_top_window call) if no other mru window can
	be found.)
This commit is contained in:
Elijah Newren 2004-08-02 19:23:03 +00:00 committed by Elijah Newren
parent 38d02fff26
commit cd09a27aa6
3 changed files with 29 additions and 3 deletions

View File

@ -1,3 +1,20 @@
2004-08-02 Elijah Newren <newren@math.utah.edu>
Fix some bugs (reported in #120100) regarding the focus window
when using the workspace switcher.
* src/display.c (event_callback): When switching workspaces due to
a _NET_CURRENT_DESKTOP message, make sure to focus the default
window as well.
* src/workspace.c (meta_workspace_focus_default_window,
meta_workspace_focus_mru_window): Make DOCK or DESKTOP windows
have lower priority than others when choosing a window to focus.
(For the former function, this means don't focus them at all; for
the latter, this means only focus them (via the
meta_workspace_focus_top_window call) if no other mru window can
be found.)
2004-07-31 Rob Adams <readams@readams.net>
Fix bug that caused windows to not be focused on unminimizing

View File

@ -2056,7 +2056,10 @@ event_callback (XEvent *event,
space);
if (workspace)
{
meta_workspace_activate (workspace);
meta_workspace_focus_default_window (workspace, NULL);
}
else
meta_verbose ("Don't know about workspace %d\n", space);
}

View File

@ -787,7 +787,9 @@ meta_workspace_focus_default_window (MetaWorkspace *workspace,
{
MetaWindow * window;
window = meta_screen_get_mouse_window (workspace->screen, not_this_one);
if (window)
if (window &&
window->type != META_WINDOW_DOCK &&
window->type != META_WINDOW_DESKTOP)
{
meta_topic (META_DEBUG_FOCUS,
"Focusing mouse window %s\n", window->desc);
@ -817,7 +819,11 @@ meta_workspace_focus_mru_window (MetaWorkspace *workspace,
while (tmp)
{
if (((MetaWindow*) tmp->data) != not_this_one)
MetaWindow* tmp_window;
tmp_window = ((MetaWindow*) tmp->data);
if (tmp_window != not_this_one &&
tmp_window->type != META_WINDOW_DOCK &&
tmp_window->type != META_WINDOW_DESKTOP)
{
window = tmp->data;
break;