From: Juergen Spitzmueller Date: Sun, 20 Nov 2022 17:18:59 +0000 (+0100) Subject: Regenerate previews after zoom (#11919) X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=e26a60edef3eae39c2e8379f395febedc5ba7efa;p=features.git Regenerate previews after zoom (#11919) --- diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 9826b51f7f..34291542e8 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -4253,6 +4253,13 @@ void Buffer::updateTitles() const } +void Buffer::scheduleRedrawWorkAreas() const +{ + if (d->wa_) + d->wa_->scheduleRedraw(); +} + + void Buffer::resetAutosaveTimers() const { if (d->gui_) diff --git a/src/Buffer.h b/src/Buffer.h index fb7236c3f4..8f4474d311 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -666,6 +666,8 @@ public: void setBusy(bool on) const; /// Update window titles of all users. void updateTitles() const; + /// Schedule redraw of work areas + void scheduleRedrawWorkAreas() const; /// Reset autosave timers for all users. void resetAutosaveTimers() const; /// diff --git a/src/frontends/WorkAreaManager.cpp b/src/frontends/WorkAreaManager.cpp index 0d1d189cf2..8d32c6b6d8 100644 --- a/src/frontends/WorkAreaManager.cpp +++ b/src/frontends/WorkAreaManager.cpp @@ -62,6 +62,13 @@ void WorkAreaManager::updateTitles() } +void WorkAreaManager::scheduleRedraw() +{ + for (WorkArea * wa : work_areas_) + wa->scheduleRedraw(true); +} + + } // namespace frontend } // namespace lyx diff --git a/src/frontends/WorkAreaManager.h b/src/frontends/WorkAreaManager.h index cd716fc087..94c528b3a6 100644 --- a/src/frontends/WorkAreaManager.h +++ b/src/frontends/WorkAreaManager.h @@ -44,6 +44,8 @@ public: /// Update window titles of all users and the external modifications /// warning. void updateTitles(); + /// Schedule redraw of work areas + void scheduleRedraw(); /// If there is no work area, create a new one in the current view using the /// buffer buf. Returns false if not possible. bool unhide(Buffer * buf) const; diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp index 24d6703e30..d51dcc6143 100644 --- a/src/frontends/qt/GuiView.cpp +++ b/src/frontends/qt/GuiView.cpp @@ -69,6 +69,8 @@ #include "Toolbars.h" #include "version.h" +#include "graphics/PreviewLoader.h" + #include "support/convert.h" #include "support/debug.h" #include "support/ExceptionMessage.h" @@ -4891,6 +4893,10 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr) lyxrc.currentZoom, lyxrc.defaultZoom)); guiApp->fontLoader().update(); + // Regenerate instant previews + if (lyxrc.preview != LyXRC::PREVIEW_OFF + && doc_buffer && doc_buffer->loader()) + doc_buffer->loader()->refreshPreviews(); dr.screenUpdate(Update::ForceAll | Update::FitCursor); break; } diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp index 1c8d12ff0e..f6ca607e46 100644 --- a/src/graphics/PreviewLoader.cpp +++ b/src/graphics/PreviewLoader.cpp @@ -799,6 +799,7 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval) imageReady(*nit->get()); } finished_generating_ = true; + buffer_.scheduleRedrawWorkAreas(); }