From e455b1095ae9270b5aa63fde3b981a6661ca8923 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Wed, 15 Jan 2020 20:45:29 +1300 Subject: [PATCH] WindowServer: Do not open system menu after window tiling --- Servers/WindowServer/WSWindowManager.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Servers/WindowServer/WSWindowManager.cpp b/Servers/WindowServer/WSWindowManager.cpp index aa7cd1b56b..4584521a18 100644 --- a/Servers/WindowServer/WSWindowManager.cpp +++ b/Servers/WindowServer/WSWindowManager.cpp @@ -942,11 +942,14 @@ void WSWindowManager::event(CEvent& event) return; } - if (key_event.type() == WSEvent::KeyUp && key_event.key() == Key_Logo) { - if (!m_moved_or_resized_since_logo_keydown && !m_switcher.is_visible() && !m_move_window && !m_resize_window) - WSMenuManager::the().open_menu(WSMenuManager::the().system_menu()); - m_moved_or_resized_since_logo_keydown = false; - return; + if (key_event.key() == Key_Logo) { + if (key_event.type() == WSEvent::KeyUp) { + if (!m_moved_or_resized_since_logo_keydown && !m_switcher.is_visible() && !m_move_window && !m_resize_window) + WSMenuManager::the().open_menu(WSMenuManager::the().system_menu()); + return; + } else if (key_event.type() == WSEvent::KeyDown) { + m_moved_or_resized_since_logo_keydown = false; + } } if (WSMenuManager::the().current_menu()) { @@ -964,6 +967,7 @@ void WSWindowManager::event(CEvent& event) if (m_active_window) { if (key_event.type() == WSEvent::KeyDown && key_event.modifiers() == Mod_Logo) { if (key_event.key() == Key_Down) { + m_moved_or_resized_since_logo_keydown = true; if (m_active_window->is_resizable() && m_active_window->is_maximized()) { m_active_window->set_maximized(false); return; @@ -974,10 +978,12 @@ void WSWindowManager::event(CEvent& event) } if (m_active_window->is_resizable()) { if (key_event.key() == Key_Up) { + m_moved_or_resized_since_logo_keydown = true; m_active_window->set_maximized(!m_active_window->is_maximized()); return; } if (key_event.key() == Key_Left) { + m_moved_or_resized_since_logo_keydown = true; if (m_active_window->tiled() != WindowTileType::None) { m_active_window->set_tiled(WindowTileType::None); return; @@ -988,6 +994,7 @@ void WSWindowManager::event(CEvent& event) return; } if (key_event.key() == Key_Right) { + m_moved_or_resized_since_logo_keydown = true; if (m_active_window->tiled() != WindowTileType::None) { m_active_window->set_tiled(WindowTileType::None); return;