]> git.lyx.org Git - lyx.git/commitdiff
Fix bug #9684: Update previews after background color change
authorEnrico Forestieri <forenr@lyx.org>
Tue, 21 Jul 2015 22:56:34 +0000 (00:56 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Tue, 21 Jul 2015 22:56:34 +0000 (00:56 +0200)
src/frontends/qt4/GuiApplication.cpp
src/graphics/PreviewLoader.cpp

index 9d3b3393e525adcf41d9b0fc1ec202a6e4864d40..fe3450912e5167b3c149b53c40b9e50a3004950f 100644 (file)
@@ -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;
        }
 
index f38c157e7ecc7eca387557a459a8af90a2ed5593..cec05ed714c717df4e21fe59eb3756bb03a699c7 100644 (file)
@@ -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.