summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI
diff options
context:
space:
mode:
authorTimothy Flynn <trflynn89@pm.me>2022-11-02 09:57:12 -0400
committerLinus Groh <mail@linusgroh.de>2022-11-02 15:41:19 +0000
commit0d5209cee67fa29aac7bb92529aa465b6748de19 (patch)
tree7e83ed1c779a6858c32dee5b415ce87b82e76a32 /Userland/Libraries/LibGUI
parent89b2ff72f7b63ec378595f5931ff1166a512c792 (diff)
downloadserenity-0d5209cee67fa29aac7bb92529aa465b6748de19.zip
LibGUI+WindowServer: Allow programatically minimizing windows
The backend methods in WindowServer already exist. This just adds the IPC plumbing to connect those methods to GUI::Window.
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r--Userland/Libraries/LibGUI/Window.cpp12
-rw-r--r--Userland/Libraries/LibGUI/Window.h4
2 files changed, 16 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGUI/Window.cpp b/Userland/Libraries/LibGUI/Window.cpp
index 84ac0f610b..9f6e671a1c 100644
--- a/Userland/Libraries/LibGUI/Window.cpp
+++ b/Userland/Libraries/LibGUI/Window.cpp
@@ -1036,6 +1036,18 @@ void Window::set_maximized(bool maximized)
ConnectionToWindowServer::the().async_set_maximized(m_window_id, maximized);
}
+void Window::set_minimized(bool minimized)
+{
+ if (!is_minimizable())
+ return;
+
+ m_minimized = minimized;
+ if (!is_visible())
+ return;
+
+ ConnectionToWindowServer::the().async_set_minimized(m_window_id, minimized);
+}
+
void Window::update_min_size()
{
if (main_widget()) {
diff --git a/Userland/Libraries/LibGUI/Window.h b/Userland/Libraries/LibGUI/Window.h
index 12031d41a8..68c4b372c8 100644
--- a/Userland/Libraries/LibGUI/Window.h
+++ b/Userland/Libraries/LibGUI/Window.h
@@ -45,6 +45,9 @@ public:
bool is_maximized() const { return m_maximized; }
void set_maximized(bool);
+ bool is_minimized() const { return m_minimized; }
+ void set_minimized(bool);
+
bool is_frameless() const { return m_frameless; }
void set_frameless(bool);
@@ -306,6 +309,7 @@ private:
bool m_minimizable { true };
bool m_closeable { true };
bool m_maximized { false };
+ bool m_minimized { false };
bool m_fullscreen { false };
bool m_frameless { false };
bool m_forced_shadow { false };