From 3f6235fe3223abe5596aa5e50f024f5ad6ff7c47 Mon Sep 17 00:00:00 2001 From: luisangelsm Date: Fri, 6 Mar 2026 17:19:02 +0100 Subject: [PATCH] Trigger a rendering pass when the settings change --- YACReader/continuous_page_widget.cpp | 7 +++++++ YACReader/continuous_page_widget.h | 1 + YACReader/main_window_viewer.cpp | 2 +- YACReader/viewer.cpp | 9 +++++++++ YACReader/viewer.h | 1 + 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/YACReader/continuous_page_widget.cpp b/YACReader/continuous_page_widget.cpp index 17b3f9c3..9391c1d1 100644 --- a/YACReader/continuous_page_widget.cpp +++ b/YACReader/continuous_page_widget.cpp @@ -2,6 +2,7 @@ #include "continuous_view_model.h" #include "render.h" #include "resize_image.h" +#include "configuration.h" #include #include @@ -78,6 +79,12 @@ QSize ContinuousPageWidget::sizeHint() const return QSize(width(), continuousViewModel->totalHeight()); } +void ContinuousPageWidget::invalidateScaledImageCache() +{ + scaledPageCache.invalidateAll(); + update(); +} + void ContinuousPageWidget::onPageAvailable(int absolutePageIndex) { if (!render || !continuousViewModel || absolutePageIndex < 0 || absolutePageIndex >= continuousViewModel->numPages()) { diff --git a/YACReader/continuous_page_widget.h b/YACReader/continuous_page_widget.h index 819d7a19..16be8f2f 100644 --- a/YACReader/continuous_page_widget.h +++ b/YACReader/continuous_page_widget.h @@ -28,6 +28,7 @@ public: public slots: void onPageAvailable(int absolutePageIndex); + void invalidateScaledImageCache(); protected: void paintEvent(QPaintEvent *event) override; diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index f8f5a8ca..d83d4401 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -148,7 +148,7 @@ void MainWindowViewer::setupUI() connect(optionsDialog, &QDialog::accepted, viewer, &Viewer::updateOptions); connect(optionsDialog, &YACReaderOptionsDialog::optionsChanged, this, &MainWindowViewer::reloadOptions); connect(optionsDialog, &OptionsDialog::changedFilters, viewer, &Viewer::updateFilters); - connect(optionsDialog, &OptionsDialog::changedImageOptions, viewer, &Viewer::updatePage); + connect(optionsDialog, &OptionsDialog::changedImageOptions, viewer, &Viewer::onImageOptionsChanged); optionsDialog->restoreOptions(settings); // shortcutsDialog = new ShortcutsDialog(this); diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index fd5adefa..3675b6f9 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -358,6 +358,15 @@ void Viewer::goTo(unsigned int page) render->goTo(page); } +void Viewer::onImageOptionsChanged() +{ + if (continuousScroll) { + continuousWidget->invalidateScaledImageCache(); + } else { + updatePage(); + } +} + void Viewer::updatePage() { if (continuousScroll) { diff --git a/YACReader/viewer.h b/YACReader/viewer.h index b2393a89..0189c7f4 100644 --- a/YACReader/viewer.h +++ b/YACReader/viewer.h @@ -58,6 +58,7 @@ public slots: void goToLastPage(); void goTo(unsigned int page); void updatePage(); + void onImageOptionsChanged(); void updateContentSize(); void updateVerticalScrollBar(); void updateOptions();