Fix bug #9684: Update previews after background color change

This commit is contained in:
Enrico Forestieri 2015-07-22 00:56:34 +02:00
parent b63421b7dc
commit 0c093a6264
2 changed files with 14 additions and 2 deletions

View File

@ -1737,6 +1737,8 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
} }
// Make sure we don't keep old colors in cache. // Make sure we don't keep old colors in cache.
d->color_cache_.clear(); d->color_cache_.clear();
// Update the current view
lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
break; break;
} }

View File

@ -253,6 +253,10 @@ private:
/// ///
mutable int font_scaling_factor_; mutable int font_scaling_factor_;
/// ///
mutable int fg_color_;
///
mutable int bg_color_;
///
QTimer * delay_refresh_; QTimer * delay_refresh_;
/// ///
bool finished_generating_; bool finished_generating_;
@ -407,6 +411,8 @@ PreviewLoader::Impl::Impl(PreviewLoader & p, Buffer const & b)
: parent_(p), buffer_(b), finished_generating_(true) : parent_(p), buffer_(b), finished_generating_(true)
{ {
font_scaling_factor_ = int(buffer_.fontScalingFactor()); 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_) if (!pconverter_)
pconverter_ = setConverter("lyxpreview"); pconverter_ = setConverter("lyxpreview");
@ -433,10 +439,14 @@ PreviewImage const *
PreviewLoader::Impl::preview(string const & latex_snippet) const PreviewLoader::Impl::preview(string const & latex_snippet) const
{ {
int fs = int(buffer_.fontScalingFactor()); int fs = int(buffer_.fontScalingFactor());
if (font_scaling_factor_ != fs) { int fg = strtol(theApp()->hexName(foregroundColor()).c_str(), 0, 16);
// Schedule refresh of all previews on zoom changes. 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 // The previews are regenerated only after the zoom factor
// has not been changed for about 1 second. // has not been changed for about 1 second.
fg_color_ = fg;
bg_color_ = bg;
delay_refresh_->start(1000); delay_refresh_->start(1000);
} }
// Don't try to access the cache until we are done. // Don't try to access the cache until we are done.