+2003-10-09 Angus Leeming <leeming@lyx.org>
+
+ * PreviewedInset.[Ch] (previewReady): remove the side effects.
+ Now simply reports whether the preview is ready.
+
2003-10-09 Angus Leeming <leeming@lyx.org>
* PreviewedInset.[Ch]: move PreviewedInset out of namespace lyx::graphics.
}
-bool PreviewedInset::previewReady(Buffer const & buffer) const
+bool PreviewedInset::previewReady() const
{
- if (!activated() || !previewWanted(buffer))
- return false;
-
- if (!pimage_ || snippet_ != pimage_->snippet()) {
- graphics::PreviewLoader & ploader =
- graphics::Previews::get().loader(buffer);
- pimage_ = ploader.preview(snippet_);
- }
-
return pimage_ ? pimage_->image() : false;
}
void removePreview(Buffer const &);
/// The preview has been generated and is ready to use.
- bool previewReady(Buffer const &) const;
+ bool previewReady() const;
/// If the preview is not ready, returns 0.
lyx::graphics::PreviewImage const * const pimage() const { return pimage_; }
+2003-10-09 Angus Leeming <leeming@lyx.org>
+
+ * insetinclude.C (metrics, draw): no longer need to pass a Buffer arg
+ to PreviewedInset::previewReady.
+
2003-10-09 Angus Leeming <leeming@lyx.org>
* insetexternal.[Ch] (statusChanged):
void InsetInclude::metrics(MetricsInfo & mi, Dimension & dim) const
{
- Buffer const * buffer_ptr = mi.base.bv ? mi.base.bv->buffer() : 0;
- if (buffer_ptr && preview_->previewReady(*buffer_ptr)) {
+ if (preview_->previewReady()) {
dim.asc = preview_->pimage()->ascent();
dim.des = preview_->pimage()->descent();
dim.wid = preview_->pimage()->width();
void InsetInclude::draw(PainterInfo & pi, int x, int y) const
{
cache(pi.base.bv);
- Buffer const * buffer_ptr = pi.base.bv ? pi.base.bv->buffer() : 0;
- bool const use_preview = buffer_ptr && preview_->previewReady(*buffer_ptr);
- if (!use_preview) {
+ if (!preview_->previewReady()) {
button_.draw(pi, x + button_.box().x1, y);
return;
}
+2003-10-09 Angus Leeming <leeming@lyx.org>
+
+ * formula.C (metrics, draw): no longer need to pass a Buffer arg
+ to PreviewedInset::previewReady because it no longer has the side
+ effect of secretly starting preview generation.
+ (draw): call PreviewedInset::generatePreview explicitly if the
+ inset is no longer being edited.
+
2003-10-09 Angus Leeming <leeming@lyx.org>
* formula.[Ch]: mods to PreviewImpl due to the changes to
void InsetFormula::draw(PainterInfo & pi, int x, int y) const
{
- cache(pi.base.bv);
- // This initiates the loading of the preview, so should come
- // before the metrics are computed.
- Buffer const * buffer_ptr = pi.base.bv ? pi.base.bv->buffer() : 0;
- bool const use_preview = buffer_ptr && preview_->previewReady(*buffer_ptr);
+ BufferView * bv = pi.base.bv;
+ cache(bv);
+
+ // The previews are drawn only when we're not editing the inset.
+ bool const editing_inset = mathcursor && mathcursor->formula() == this;
+ bool const use_preview = !editing_inset && preview_->previewReady();
+
+ if (!editing_inset && bv) {
+ Buffer const * buffer_ptr = bv->buffer();
+ if (buffer_ptr)
+ preview_->generatePreview(*buffer_ptr);
+ }
int const w = dim_.wid;
int const d = dim_.des;
pi.pain.image(x + 1, y - a, w, h, // one pixel gap in front
*(preview_->pimage()->image()));
} else {
- PainterInfo p(pi.base.bv);
+ PainterInfo p(bv);
p.base.style = LM_ST_TEXT;
p.base.font = pi.base.font;
p.base.font.setColor(LColor::math);
!= lcolor.getX11Name(LColor::background))
p.pain.fillRectangle(x, y - a, w, h, LColor::mathbg);
- if (mathcursor &&
- const_cast<InsetFormulaBase const *>(mathcursor->formula()) == this)
- {
+ if (editing_inset) {
mathcursor->drawSelection(pi);
//p.pain.rectangle(x, y - a, w, h, LColor::mathframe);
}
void InsetFormula::metrics(MetricsInfo & m, Dimension & dim) const
{
view_ = m.base.bv;
- Buffer const * buffer_ptr = m.base.bv ? m.base.bv->buffer() : 0;
- if (buffer_ptr && preview_->previewReady(*buffer_ptr)) {
+
+ bool const editing_inset = mathcursor && mathcursor->formula() == this;
+ bool const use_preview = !editing_inset && preview_->previewReady();
+
+ if (use_preview) {
dim.asc = preview_->pimage()->ascent();
dim.des = preview_->pimage()->descent();
// insert a one pixel gap in front of the formula