X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetPreview.cpp;h=1a70b1e17a2b1ece64adf280bcf5fbc451c5d034;hb=2748e33be542862f94af4a131a17dde5ebc064b2;hp=d327fe5b52bd17ce41b6ba32285d84270d0f58b1;hpb=cea2d71e641e6a4023128a367d1cd5a593ed1706;p=lyx.git diff --git a/src/insets/InsetPreview.cpp b/src/insets/InsetPreview.cpp index d327fe5b52..1a70b1e17a 100644 --- a/src/insets/InsetPreview.cpp +++ b/src/insets/InsetPreview.cpp @@ -19,6 +19,7 @@ #include "MetricsInfo.h" #include "OutputParams.h" #include "RenderPreview.h" +#include "texstream.h" #include "frontends/Painter.h" @@ -34,16 +35,15 @@ using namespace std; namespace lyx { -InsetPreview::InsetPreview(Buffer * buf) - : InsetText(buf), - preview_(new RenderPreview(this)), use_preview_(true) +InsetPreview::InsetPreview(Buffer * buf) + : InsetText(buf), preview_(new RenderPreview(this)) { setDrawFrame(true); setFrameColor(Color_previewframe); } -InsetPreview::~InsetPreview() +InsetPreview::~InsetPreview() {} @@ -80,11 +80,10 @@ void InsetPreview::addPreview(DocIterator const & inset_pos, } -void InsetPreview::preparePreview(DocIterator const & pos) const +void InsetPreview::preparePreview(DocIterator const & pos) const { - TexRow texrow; odocstringstream str; - otexstream os(str, texrow); + otexstream os(str); OutputParams runparams(&pos.buffer()->params().encoding()); latex(os, runparams); @@ -100,7 +99,7 @@ void InsetPreview::preparePreview(DocIterator const & pos) const dit.forwardInset(); for (; dit != dend; dit.forwardInset()) { InsetMath * im = dit.nextInset()->asInsetMath(); - InsetMathHull * hull = im ? im->asHullInset() : 0; + InsetMathHull * hull = im ? im->asHullInset() : nullptr; if (!hull) continue; for (idx_type idx = 0; idx < hull->nargs(); ++idx) @@ -137,15 +136,11 @@ void InsetPreview::reloadPreview(DocIterator const & pos) const void InsetPreview::draw(PainterInfo & pi, int x, int y) const { - use_preview_ = previewState(pi.base.bv); - - if (use_preview_) { + if (previewState(pi.base.bv)) { // one pixel gap in front - preview_->draw(pi, x + 1 + TEXT_TO_INSET_OFFSET, y); - setPosCache(pi, x, y); - return; - } - InsetText::draw(pi, x, y); + preview_->draw(pi, x + 1, y); + } else + InsetText::draw(pi, x, y); } @@ -158,7 +153,7 @@ void InsetPreview::edit(Cursor & cur, bool front, EntryDirection entry_from) Inset * InsetPreview::editXY(Cursor & cur, int x, int y) { - if (use_preview_) { + if (previewState(&cur.bv())) { edit(cur, true, ENTRY_DIRECTION_IGNORE); return this; } @@ -171,20 +166,14 @@ void InsetPreview::metrics(MetricsInfo & mi, Dimension & dim) const { if (previewState(mi.base.bv)) { preview_->metrics(mi, dim); - mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET; - + dim.wid = max(dim.wid, 4); dim.asc = max(dim.asc, 4); - - dim.asc += TEXT_TO_INSET_OFFSET; - dim.des += TEXT_TO_INSET_OFFSET; - dim.wid += TEXT_TO_INSET_OFFSET; - dim_ = dim; - dim.wid += TEXT_TO_INSET_OFFSET; + + dim.asc += topOffset(mi.base.bv); + dim.des += bottomOffset(mi.base.bv); // insert a one pixel gap dim.wid += 1; - // Cache the inset dimension. - setDimCache(mi, dim); Dimension dim_dummy; MetricsInfo mi_dummy = mi; InsetText::metrics(mi_dummy, dim_dummy);