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

WindowServer: Make dragging maximized windows up no-op

That's what that piece of logic is probably supposed to be doing.
Let's help it acheive that purpose! Apparently the top of the desktop
(i.e. the menubar) was forgotten, so consider it part of the deadzone.
This commit is contained in:
Ben Wiederhake 2021-01-23 02:45:03 +01:00 committed by Andreas Kling
parent a671a5ba7e
commit e937012870

View file

@ -522,13 +522,14 @@ bool WindowManager::process_ongoing_window_move(MouseEvent& event, Window*& hove
const int tiling_deadzone = 10; const int tiling_deadzone = 10;
const int secondary_deadzone = 2; const int secondary_deadzone = 2;
auto desktop = desktop_rect();
if (m_move_window->is_maximized()) { if (m_move_window->is_maximized()) {
auto pixels_moved_from_start = event.position().pixels_moved(m_move_origin); auto pixels_moved_from_start = event.position().pixels_moved(m_move_origin);
if (pixels_moved_from_start > 5) { if (pixels_moved_from_start > 5) {
// dbgln("[WM] de-maximizing window"); // dbgln("[WM] de-maximizing window");
m_move_origin = event.position(); m_move_origin = event.position();
if (m_move_origin.y() <= secondary_deadzone) if (m_move_origin.y() <= secondary_deadzone + desktop.top())
return true; return true;
m_move_window->set_maximized(false, event.position()); m_move_window->set_maximized(false, event.position());
m_move_window_origin = m_move_window->position(); m_move_window_origin = m_move_window->position();
@ -536,7 +537,6 @@ bool WindowManager::process_ongoing_window_move(MouseEvent& event, Window*& hove
} else { } else {
bool is_resizable = m_move_window->is_resizable(); bool is_resizable = m_move_window->is_resizable();
auto pixels_moved_from_start = event.position().pixels_moved(m_move_origin); auto pixels_moved_from_start = event.position().pixels_moved(m_move_origin);
auto desktop = desktop_rect();
if (is_resizable && event.x() <= tiling_deadzone) { if (is_resizable && event.x() <= tiling_deadzone) {
if (event.y() <= tiling_deadzone + desktop.top()) if (event.y() <= tiling_deadzone + desktop.top())