From 0c093a626472c759a9fab430344cb1322fc2a9ee Mon Sep 17 00:00:00 2001 From: Enrico Forestieri Date: Wed, 22 Jul 2015 00:56:34 +0200 Subject: [PATCH] Fix bug #9684: Update previews after background color change --- src/frontends/qt4/GuiApplication.cpp | 2 ++ src/graphics/PreviewLoader.cpp | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/frontends/qt4/GuiApplication.cpp b/src/frontends/qt4/GuiApplication.cpp index 9d3b3393e5..fe3450912e 100644 --- a/src/frontends/qt4/GuiApplication.cpp +++ b/src/frontends/qt4/GuiApplication.cpp @@ -1737,6 +1737,8 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr) } // Make sure we don't keep old colors in cache. d->color_cache_.clear(); + // Update the current view + lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); break; } diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp index f38c157e7e..cec05ed714 100644 --- a/src/graphics/PreviewLoader.cpp +++ b/src/graphics/PreviewLoader.cpp @@ -253,6 +253,10 @@ private: /// mutable int font_scaling_factor_; /// + mutable int fg_color_; + /// + mutable int bg_color_; + /// QTimer * delay_refresh_; /// bool finished_generating_; @@ -407,6 +411,8 @@ PreviewLoader::Impl::Impl(PreviewLoader & p, Buffer const & b) : parent_(p), buffer_(b), finished_generating_(true) { font_scaling_factor_ = int(buffer_.fontScalingFactor()); + fg_color_ = strtol(theApp()->hexName(foregroundColor()).c_str(), 0, 16); + bg_color_ = strtol(theApp()->hexName(backgroundColor()).c_str(), 0, 16); if (!pconverter_) pconverter_ = setConverter("lyxpreview"); @@ -433,10 +439,14 @@ PreviewImage const * PreviewLoader::Impl::preview(string const & latex_snippet) const { int fs = int(buffer_.fontScalingFactor()); - if (font_scaling_factor_ != fs) { - // Schedule refresh of all previews on zoom changes. + int fg = strtol(theApp()->hexName(foregroundColor()).c_str(), 0, 16); + int bg = strtol(theApp()->hexName(backgroundColor()).c_str(), 0, 16); + if (font_scaling_factor_ != fs || fg_color_ != fg || bg_color_ != bg) { + // Schedule refresh of all previews on zoom or color changes. // The previews are regenerated only after the zoom factor // has not been changed for about 1 second. + fg_color_ = fg; + bg_color_ = bg; delay_refresh_->start(1000); } // Don't try to access the cache until we are done. -- 2.39.2