WindowServer: Actually don't bring up system menu during move/resize

It was still possible to pop up the system menu by letting go of the
mouse button before letting go of the Logo key. This patch fixes that.
This commit is contained in:
Andreas Kling 2020-01-12 02:33:24 +01:00
commit 0d2bfc4ea0
Notes: sideshowbarker 2024-07-19 10:09:31 +09:00
2 changed files with 8 additions and 6 deletions

View file

@ -799,11 +799,13 @@ void WSWindowManager::process_mouse_event(WSMouseEvent& event, WSWindow*& hovere
if (!window.is_fullscreen() && m_keyboard_modifiers == Mod_Logo && event.type() == WSEvent::MouseDown && event.button() == MouseButton::Left) { if (!window.is_fullscreen() && m_keyboard_modifiers == Mod_Logo && event.type() == WSEvent::MouseDown && event.button() == MouseButton::Left) {
hovered_window = &window; hovered_window = &window;
start_window_move(window, event); start_window_move(window, event);
m_moved_or_resized_since_logo_keydown = true;
return IterationDecision::Break; return IterationDecision::Break;
} }
if (window.is_resizable() && m_keyboard_modifiers == Mod_Logo && event.type() == WSEvent::MouseDown && event.button() == MouseButton::Right && !window.is_blocked_by_modal_window()) { if (window.is_resizable() && m_keyboard_modifiers == Mod_Logo && event.type() == WSEvent::MouseDown && event.button() == MouseButton::Right && !window.is_blocked_by_modal_window()) {
hovered_window = &window; hovered_window = &window;
start_window_resize(window, event); start_window_resize(window, event);
m_moved_or_resized_since_logo_keydown = true;
return IterationDecision::Break; return IterationDecision::Break;
} }
} }
@ -940,12 +942,10 @@ void WSWindowManager::event(CEvent& event)
return; return;
} }
if (key_event.type() == WSEvent::KeyUp if (key_event.type() == WSEvent::KeyUp && key_event.key() == Key_Logo) {
&& key_event.key() == Key_Logo if (!m_moved_or_resized_since_logo_keydown && !m_switcher.is_visible() && !m_move_window && !m_resize_window)
&& !m_switcher.is_visible()
&& !m_move_window
&& !m_resize_window) {
WSMenuManager::the().open_menu(WSMenuManager::the().system_menu()); WSMenuManager::the().open_menu(WSMenuManager::the().system_menu());
m_moved_or_resized_since_logo_keydown = false;
return; return;
} }

View file

@ -253,6 +253,8 @@ private:
Point m_resize_origin; Point m_resize_origin;
ResizeDirection m_resize_direction { ResizeDirection::None }; ResizeDirection m_resize_direction { ResizeDirection::None };
bool m_moved_or_resized_since_logo_keydown { false };
u8 m_keyboard_modifiers { 0 }; u8 m_keyboard_modifiers { 0 };
WSWindowSwitcher m_switcher; WSWindowSwitcher m_switcher;