WindowServer: Update window switcher when moving window to front

If the window switcher is up when a window is made frontmost (usually
by clicking on it), the window will now become the selected window in
the switcher.

This still has a slight feeling of "hmm" but is definitely better than
what we had before.
This commit is contained in:
Andreas Kling 2020-02-11 18:38:48 +01:00
parent ba135dc0c0
commit 4c620dea83
Notes: sideshowbarker 2024-07-19 09:26:17 +09:00
3 changed files with 18 additions and 0 deletions

View file

@ -187,6 +187,12 @@ void WindowManager::move_to_front_and_make_active(Window& window)
recompute_occlusions();
set_active_window(&window);
if (m_switcher.is_visible()) {
m_switcher.refresh();
m_switcher.select_window(window);
set_highlight_window(&window);
}
}
void WindowManager::remove_window(Window& window)

View file

@ -126,6 +126,16 @@ void WindowSwitcher::on_key_event(const KeyEvent& event)
select_window_at_index(new_selected_index);
}
void WindowSwitcher::select_window(Window& window)
{
for (int i = 0; i < m_windows.size(); ++i) {
if (m_windows.at(i) == &window) {
select_window_at_index(i);
return;
}
}
}
void WindowSwitcher::select_window_at_index(int index)
{
m_selected_index = index;

View file

@ -68,6 +68,8 @@ public:
int padding() const { return 8; }
int item_padding() const { return 8; }
void select_window(Window&);
Window* selected_window();
Window* switcher_window() { return m_switcher_window.ptr(); }