1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 16:27:35 +00:00

WindowServer: Introduce keyboard shortcuts for fast window management

This commit is contained in:
Jami Kettunen 2020-01-04 15:30:11 +02:00 committed by Andreas Kling
parent 6c2fa0ee0a
commit 874a6c4039
2 changed files with 44 additions and 3 deletions

View file

@ -1114,8 +1114,48 @@ void WSWindowManager::event(CEvent& event)
m_switcher.on_key_event(key_event);
return;
}
if (m_active_window)
if (m_active_window) {
if (key_event.type() == WSEvent::KeyDown && key_event.modifiers() == Mod_Logo) {
if (key_event.key() == Key_Down) {
if (m_active_window->is_resizable() && m_active_window->is_maximized()) {
m_active_window->set_maximized(false);
return;
}
if (m_active_window->is_minimizable())
m_active_window->set_minimized(true);
return;
}
if (m_active_window->is_resizable()) {
if (key_event.key() == Key_Up) {
m_active_window->set_maximized(!m_active_window->is_maximized());
return;
}
if (key_event.key() == Key_Left) {
if (m_active_window->tiled() != WindowTileType::None) {
m_active_window->set_tiled(WindowTileType::None);
return;
}
if (m_active_window->is_maximized())
m_active_window->set_maximized(false);
m_active_window->set_tiled(WindowTileType::Left);
return;
}
if (key_event.key() == Key_Right) {
if (m_active_window->tiled() != WindowTileType::None) {
m_active_window->set_tiled(WindowTileType::None);
return;
}
if (m_active_window->is_maximized())
m_active_window->set_maximized(false);
m_active_window->set_tiled(WindowTileType::Right);
return;
}
}
}
return m_active_window->dispatch_event(event);
}
return;
}