mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
window: Appear as focused while focusing
Prevent focused window from blinking after switching to another workspace on X11. https://gitlab.gnome.org/GNOME/mutter/merge_requests/850
This commit is contained in:
parent
03514bb31a
commit
0c03702168
@ -550,6 +550,9 @@ struct _MetaWindow
|
|||||||
guint unmanage_idle_id;
|
guint unmanage_idle_id;
|
||||||
|
|
||||||
pid_t client_pid;
|
pid_t client_pid;
|
||||||
|
|
||||||
|
/* Prevent blinking when focusing */
|
||||||
|
gboolean focusing;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MetaWindowClass
|
struct _MetaWindowClass
|
||||||
|
@ -4782,6 +4782,10 @@ meta_window_focus (MetaWindow *window,
|
|||||||
window = modal_transient;
|
window = modal_transient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If the window was already appearing focused, but didn't have has_focus set,
|
||||||
|
* it will now briefly appear unfocused on X11. Set a flag to prevent that. */
|
||||||
|
window->focusing = TRUE;
|
||||||
|
|
||||||
meta_window_flush_calc_showing (window);
|
meta_window_flush_calc_showing (window);
|
||||||
|
|
||||||
if ((!window->mapped || window->hidden) && !window->shaded)
|
if ((!window->mapped || window->hidden) && !window->shaded)
|
||||||
@ -4789,6 +4793,7 @@ meta_window_focus (MetaWindow *window,
|
|||||||
meta_topic (META_DEBUG_FOCUS,
|
meta_topic (META_DEBUG_FOCUS,
|
||||||
"Window %s is not showing, not focusing after all\n",
|
"Window %s is not showing, not focusing after all\n",
|
||||||
window->desc);
|
window->desc);
|
||||||
|
window->focusing = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5274,6 +5279,8 @@ meta_window_set_focused_internal (MetaWindow *window,
|
|||||||
{
|
{
|
||||||
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
|
MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
|
||||||
|
|
||||||
|
window->focusing = FALSE;
|
||||||
|
|
||||||
if (focused)
|
if (focused)
|
||||||
{
|
{
|
||||||
window->has_focus = TRUE;
|
window->has_focus = TRUE;
|
||||||
@ -7272,7 +7279,7 @@ meta_window_appears_focused (MetaWindow *window)
|
|||||||
if (workspace && workspace != workspace_manager->active_workspace)
|
if (workspace && workspace != workspace_manager->active_workspace)
|
||||||
default_window = meta_workspace_get_default_focus_window (workspace);
|
default_window = meta_workspace_get_default_focus_window (workspace);
|
||||||
|
|
||||||
return window->has_focus || (window->attached_focus_window != NULL) || (window == default_window);
|
return window->has_focus || window->focusing || (window->attached_focus_window != NULL) || (window == default_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
Loading…
Reference in New Issue
Block a user