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.
d->color_cache_.clear();
// Update the current view
lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
break;
}

View 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.