mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-08 12:19:37 +03:00
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.
This commit is contained in:
parent
89b2ff72f7
commit
0d5209cee6
Notes:
sideshowbarker
2024-07-17 09:49:33 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/0d5209cee6 Pull-request: https://github.com/SerenityOS/serenity/pull/15888 Reviewed-by: https://github.com/Lubrsi Reviewed-by: https://github.com/linusg ✅
@ -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()) {
|
||||
|
@ -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 };
|
||||
|
@ -414,6 +414,26 @@ void ConnectionFromClient::set_maximized(i32 window_id, bool maximized)
|
||||
it->value->set_maximized(maximized);
|
||||
}
|
||||
|
||||
Messages::WindowServer::IsMinimizedResponse ConnectionFromClient::is_minimized(i32 window_id)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
did_misbehave("IsMinimized: Bad window ID");
|
||||
return nullptr;
|
||||
}
|
||||
return it->value->is_minimized();
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_minimized(i32 window_id, bool minimized)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
if (it == m_windows.end()) {
|
||||
did_misbehave("SetMinimized: Bad window ID");
|
||||
return;
|
||||
}
|
||||
it->value->set_minimized(minimized);
|
||||
}
|
||||
|
||||
void ConnectionFromClient::set_window_icon_bitmap(i32 window_id, Gfx::ShareableBitmap const& icon)
|
||||
{
|
||||
auto it = m_windows.find(window_id);
|
||||
|
@ -109,6 +109,8 @@ private:
|
||||
virtual Messages::WindowServer::GetWindowTitleResponse get_window_title(i32) override;
|
||||
virtual Messages::WindowServer::IsMaximizedResponse is_maximized(i32) override;
|
||||
virtual void set_maximized(i32, bool) override;
|
||||
virtual Messages::WindowServer::IsMinimizedResponse is_minimized(i32) override;
|
||||
virtual void set_minimized(i32, bool) override;
|
||||
virtual void start_window_resize(i32, i32) override;
|
||||
virtual Messages::WindowServer::SetWindowRectResponse set_window_rect(i32, Gfx::IntRect const&) override;
|
||||
virtual Messages::WindowServer::GetWindowRectResponse get_window_rect(i32) override;
|
||||
|
@ -85,6 +85,9 @@ endpoint WindowServer
|
||||
is_maximized(i32 window_id) => (bool maximized)
|
||||
set_maximized(i32 window_id, bool maximized) =|
|
||||
|
||||
is_minimized(i32 window_id) => (bool minimized)
|
||||
set_minimized(i32 window_id, bool minimized) =|
|
||||
|
||||
invalidate_rect(i32 window_id, Vector<Gfx::IntRect> rects, bool ignore_occlusion) =|
|
||||
did_finish_painting(i32 window_id, Vector<Gfx::IntRect> rects) =|
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user