From 2083d1a3d640499751773ac582b7fe40781e5d61 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 17 May 2021 12:01:17 +0200 Subject: [PATCH] WindowServer: Ignore window base size in aspect ratio enforcement This makes windows with an aspect ratio behave more naturally if they also have a base size (e.g from the main widget being a GUI::Frame.) --- Userland/Services/WindowServer/WindowManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Userland/Services/WindowServer/WindowManager.cpp b/Userland/Services/WindowServer/WindowManager.cpp index 41cfba60b0..b6aac44d4f 100644 --- a/Userland/Services/WindowServer/WindowManager.cpp +++ b/Userland/Services/WindowServer/WindowManager.cpp @@ -709,10 +709,11 @@ bool WindowManager::process_ongoing_window_resize(const MouseEvent& event, Windo if (m_resize_window->resize_aspect_ratio().has_value()) { auto& ratio = m_resize_window->resize_aspect_ratio().value(); + auto base_size = m_resize_window->base_size(); if (abs(change_w) > abs(change_h)) { - new_rect.set_height(new_rect.width() * ratio.height() / ratio.width()); + new_rect.set_height(base_size.height() + (new_rect.width() - base_size.width()) * ratio.height() / ratio.width()); } else { - new_rect.set_width(new_rect.height() * ratio.width() / ratio.height()); + new_rect.set_width(base_size.width() + (new_rect.height() - base_size.height()) * ratio.width() / ratio.height()); } }