summaryrefslogtreecommitdiff
path: root/Libraries/LibGUI/Window.cpp
diff options
context:
space:
mode:
authorPeter Elliott <pelliott@ualberta.ca>2020-07-30 19:52:45 -0600
committerAndreas Kling <kling@serenityos.org>2020-08-01 08:06:48 +0200
commit5ae9eee4a37a473ef768a2fe8d95d84202443cbe (patch)
treede8530dec7fb7d3290c6ca86253e090192dedc30 /Libraries/LibGUI/Window.cpp
parent586ada7a148d350a7d699c35cf8a0b30bc829e77 (diff)
downloadserenity-5ae9eee4a37a473ef768a2fe8d95d84202443cbe.zip
LibGUI+WindowServer: Provide default placement to windows
This prevents windows from being opened directly on top of eachother, and provides default behavior for when window position is not specified. The new behavior is as follows: - Windows that have been created without a set position are assigned one by WindowServer. - The assigned position is either offset from the last window that is still in an assigned position, or a default position if no such window is available.
Diffstat (limited to 'Libraries/LibGUI/Window.cpp')
-rw-r--r--Libraries/LibGUI/Window.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/Libraries/LibGUI/Window.cpp b/Libraries/LibGUI/Window.cpp
index f590184ff2..9add84eebf 100644
--- a/Libraries/LibGUI/Window.cpp
+++ b/Libraries/LibGUI/Window.cpp
@@ -62,7 +62,7 @@ Window::Window(Core::Object* parent)
: Core::Object(parent)
{
all_windows->set(this);
- m_rect_when_windowless = { 100, 400, 140, 140 };
+ m_rect_when_windowless = { -5000, -5000, 140, 140 };
m_title_when_windowless = "GUI::Window";
}
@@ -95,6 +95,7 @@ void Window::show()
m_override_cursor = StandardCursor::None;
auto response = WindowServerConnection::the().send_sync<Messages::WindowServer::CreateWindow>(
m_rect_when_windowless,
+ !m_moved_by_client,
m_has_alpha_channel,
m_modal,
m_minimizable,
@@ -192,6 +193,10 @@ Gfx::IntRect Window::rect() const
void Window::set_rect(const Gfx::IntRect& a_rect)
{
+ if (a_rect.location() != m_rect_when_windowless.location()) {
+ m_moved_by_client = true;
+ }
+
m_rect_when_windowless = a_rect;
if (!is_visible()) {
if (m_main_widget)