From 9e0deb76b2b8deee8a1478e84f6a1c91da7bf7c8 Mon Sep 17 00:00:00 2001 From: FrHun <28605587+frhun@users.noreply.github.com> Date: Sun, 4 Dec 2022 22:23:12 +0100 Subject: [PATCH] Magnifier: Prevent 0 size that otherwise hangs --- Userland/Applications/Magnifier/MagnifierWidget.cpp | 5 +++++ Userland/Applications/Magnifier/MagnifierWidget.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Userland/Applications/Magnifier/MagnifierWidget.cpp b/Userland/Applications/Magnifier/MagnifierWidget.cpp index 941fb27d9a..ffe0da2505 100644 --- a/Userland/Applications/Magnifier/MagnifierWidget.cpp +++ b/Userland/Applications/Magnifier/MagnifierWidget.cpp @@ -20,7 +20,10 @@ MagnifierWidget::MagnifierWidget() void MagnifierWidget::set_scale_factor(int scale_factor) { VERIFY(scale_factor == 2 || scale_factor == 4 || scale_factor == 8); + if (m_scale_factor == scale_factor) + return; m_scale_factor = scale_factor; + layout_relevant_change_occurred(); update(); } @@ -77,12 +80,14 @@ void MagnifierWidget::sync() auto size = frame_inner_rect().size(); Gfx::IntSize grab_size { size.width() / m_scale_factor, size.height() / m_scale_factor }; + VERIFY(grab_size.width() != 0 && grab_size.height() != 0); if (m_locked_location.has_value()) { m_grabbed_bitmap = GUI::ConnectionToWindowServer::the().get_screen_bitmap_around_location(grab_size, m_locked_location.value()).bitmap(); } else { m_grabbed_bitmap = GUI::ConnectionToWindowServer::the().get_screen_bitmap_around_cursor(grab_size).bitmap(); } + m_grabbed_bitmaps.enqueue(m_grabbed_bitmap); update(); } diff --git a/Userland/Applications/Magnifier/MagnifierWidget.h b/Userland/Applications/Magnifier/MagnifierWidget.h index 452efe376b..0e9e2400ba 100644 --- a/Userland/Applications/Magnifier/MagnifierWidget.h +++ b/Userland/Applications/Magnifier/MagnifierWidget.h @@ -36,6 +36,11 @@ public: void display_next_frame(); RefPtr current_bitmap() const { return m_grabbed_bitmap; }; + virtual Optional calculated_min_size() const override + { + return GUI::UISize { frame_thickness() * 2 + m_scale_factor, frame_thickness() * 2 + m_scale_factor }; + } + private: MagnifierWidget();