diff --git a/Userland/Services/WindowServer/ClientConnection.cpp b/Userland/Services/WindowServer/ClientConnection.cpp index 2cfee30ac2..f6c38c4a92 100644 --- a/Userland/Services/WindowServer/ClientConnection.cpp +++ b/Userland/Services/WindowServer/ClientConnection.cpp @@ -863,8 +863,12 @@ void ClientConnection::did_become_responsive() set_unresponsive(false); } -Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bitmap() +Messages::WindowServer::GetScreenBitmapResponse ClientConnection::get_screen_bitmap(Optional const& rect) { + if (rect.has_value()) { + auto bitmap = Compositor::the().front_bitmap_for_screenshot({}).cropped(rect.value()); + return bitmap->to_shareable_bitmap(); + } auto& bitmap = Compositor::the().front_bitmap_for_screenshot({}); return bitmap.to_shareable_bitmap(); } diff --git a/Userland/Services/WindowServer/ClientConnection.h b/Userland/Services/WindowServer/ClientConnection.h index 7be8fd5401..4f9f0f7be4 100644 --- a/Userland/Services/WindowServer/ClientConnection.h +++ b/Userland/Services/WindowServer/ClientConnection.h @@ -9,10 +9,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -144,7 +146,7 @@ private: virtual Messages::WindowServer::GetMouseAccelerationResponse get_mouse_acceleration() override; virtual void set_scroll_step_size(u32) override; virtual Messages::WindowServer::GetScrollStepSizeResponse get_scroll_step_size() override; - virtual Messages::WindowServer::GetScreenBitmapResponse get_screen_bitmap() override; + virtual Messages::WindowServer::GetScreenBitmapResponse get_screen_bitmap(Optional const&) override; virtual void set_double_click_speed(i32) override; virtual Messages::WindowServer::GetDoubleClickSpeedResponse get_double_click_speed() override; virtual void set_window_modified(i32, bool) override; diff --git a/Userland/Services/WindowServer/WindowServer.ipc b/Userland/Services/WindowServer/WindowServer.ipc index 94410d650a..0ac4ff44f8 100644 --- a/Userland/Services/WindowServer/WindowServer.ipc +++ b/Userland/Services/WindowServer/WindowServer.ipc @@ -120,7 +120,7 @@ endpoint WindowServer set_scroll_step_size(u32 step_size) => () get_scroll_step_size() => (u32 step_size) - get_screen_bitmap() => (Gfx::ShareableBitmap bitmap) + get_screen_bitmap(Optional rect) => (Gfx::ShareableBitmap bitmap) pong() =| diff --git a/Userland/Utilities/shot.cpp b/Userland/Utilities/shot.cpp index 7b75712c31..21de0438b7 100644 --- a/Userland/Utilities/shot.cpp +++ b/Userland/Utilities/shot.cpp @@ -34,7 +34,7 @@ int main(int argc, char** argv) auto app = GUI::Application::construct(argc, argv); sleep(delay); - auto shared_bitmap = GUI::WindowServerConnection::the().get_screen_bitmap(); + auto shared_bitmap = GUI::WindowServerConnection::the().get_screen_bitmap({}); auto* bitmap = shared_bitmap.bitmap(); if (!bitmap) {