From b2f79a74d474a8c6751ec8d30e72e88b2bdb3703 Mon Sep 17 00:00:00 2001 From: Matthew Olsson Date: Sun, 27 Mar 2022 09:11:02 -0700 Subject: [PATCH] PDFViewer: Clear rendered page cache on application resize When resizing the application, the pages are expected to grow or shrink proportionally. This means that after a resize, we need to rerender every page. --- Userland/Applications/PDFViewer/PDFViewer.cpp | 7 +++++++ Userland/Applications/PDFViewer/PDFViewer.h | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/Userland/Applications/PDFViewer/PDFViewer.cpp b/Userland/Applications/PDFViewer/PDFViewer.cpp index b756ea3dd8..eedee72d24 100644 --- a/Userland/Applications/PDFViewer/PDFViewer.cpp +++ b/Userland/Applications/PDFViewer/PDFViewer.cpp @@ -101,6 +101,13 @@ void PDFViewer::paint_event(GUI::PaintEvent& event) painter.blit({ x, y }, *page, page->rect()); } +void PDFViewer::resize_event(GUI::ResizeEvent&) +{ + for (auto& map : m_rendered_page_list) + map.clear(); + update(); +} + void PDFViewer::mousewheel_event(GUI::MouseEvent& event) { if (!m_document) diff --git a/Userland/Applications/PDFViewer/PDFViewer.h b/Userland/Applications/PDFViewer/PDFViewer.h index 5f53958087..374bbfb790 100644 --- a/Userland/Applications/PDFViewer/PDFViewer.h +++ b/Userland/Applications/PDFViewer/PDFViewer.h @@ -18,6 +18,11 @@ class PDFViewer : public GUI::AbstractScrollableWidget { C_OBJECT(PDFViewer) public: + enum class PageViewMode { + Single, + Multiple, + }; + virtual ~PDFViewer() override = default; ALWAYS_INLINE u32 current_page() const { return m_current_page_index; } @@ -37,6 +42,7 @@ protected: PDFViewer(); virtual void paint_event(GUI::PaintEvent&) override; + virtual void resize_event(GUI::ResizeEvent&) override; virtual void mousewheel_event(GUI::MouseEvent&) override; virtual void mousedown_event(GUI::MouseEvent&) override; virtual void mouseup_event(GUI::MouseEvent&) override;