WindowServer: Implement switching windows in reverse order
This commit is contained in:
parent
58517bc068
commit
dfd759f75a
Notes:
sideshowbarker
2024-07-19 10:28:48 +09:00
Author: https://github.com/JamiKettunen Commit: https://github.com/SerenityOS/serenity/commit/dfd759f75a7 Pull-request: https://github.com/SerenityOS/serenity/pull/982 Reviewed-by: https://github.com/awesomekling
2 changed files with 13 additions and 2 deletions
|
@ -1065,7 +1065,8 @@ void WSWindowManager::event(CEvent& event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key_event.type() == WSEvent::KeyDown && key_event.modifiers() == Mod_Logo && key_event.key() == Key_Tab)
|
if (key_event.type() == WSEvent::KeyDown && ((key_event.modifiers() == Mod_Logo && key_event.key() == Key_Tab) ||
|
||||||
|
(key_event.modifiers() == (Mod_Logo | Mod_Shift) && key_event.key() == Key_Tab)))
|
||||||
m_switcher.show();
|
m_switcher.show();
|
||||||
if (m_switcher.is_visible()) {
|
if (m_switcher.is_visible()) {
|
||||||
m_switcher.on_key_event(key_event);
|
m_switcher.on_key_event(key_event);
|
||||||
|
|
|
@ -56,13 +56,23 @@ void WSWindowSwitcher::on_key_event(const WSKeyEvent& event)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.key() == Key_LeftShift || event.key() == Key_RightShift)
|
||||||
|
return;
|
||||||
if (event.key() != Key_Tab) {
|
if (event.key() != Key_Tab) {
|
||||||
WSWindowManager::the().set_highlight_window(nullptr);
|
WSWindowManager::the().set_highlight_window(nullptr);
|
||||||
hide();
|
hide();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ASSERT(!m_windows.is_empty());
|
ASSERT(!m_windows.is_empty());
|
||||||
m_selected_index = (m_selected_index + 1) % m_windows.size();
|
|
||||||
|
if (!event.shift()) {
|
||||||
|
m_selected_index = (m_selected_index + 1) % m_windows.size();
|
||||||
|
} else {
|
||||||
|
m_selected_index = (m_selected_index - 1) % m_windows.size();
|
||||||
|
if (m_selected_index < 0)
|
||||||
|
m_selected_index = m_windows.size() - 1;
|
||||||
|
}
|
||||||
ASSERT(m_selected_index < m_windows.size());
|
ASSERT(m_selected_index < m_windows.size());
|
||||||
auto* highlight_window = m_windows.at(m_selected_index).ptr();
|
auto* highlight_window = m_windows.at(m_selected_index).ptr();
|
||||||
ASSERT(highlight_window);
|
ASSERT(highlight_window);
|
||||||
|
|
Loading…
Add table
Reference in a new issue