diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp index 98d0dd0116..171606137e 100644 --- a/src/insets/InsetCaption.cpp +++ b/src/insets/InsetCaption.cpp @@ -127,6 +127,8 @@ void InsetCaption::addToToc(TocList & toclist, Buffer const & buf, ParConstItera void InsetCaption::metrics(MetricsInfo & mi, Dimension & dim) const { + Font tmpfont = mi.base.font; + mi.base.font = mi.base.bv->buffer().params().getFont(); labelwidth_ = theFontMetrics(mi.base.font).width(full_label_); // add some space to separate the label from the inset text labelwidth_ += 2 * TEXT_TO_INSET_OFFSET; @@ -135,6 +137,7 @@ void InsetCaption::metrics(MetricsInfo & mi, Dimension & dim) const // Correct for button and label width mi.base.textwidth -= dim.wid; InsetText::metrics(mi, textdim); + mi.base.font = tmpfont; mi.base.textwidth += dim.wid; dim.des = std::max(dim.des - textdim.asc + dim.asc, textdim.des); dim.asc = textdim.asc; @@ -152,8 +155,11 @@ void InsetCaption::draw(PainterInfo & pi, int x, int y) const // Answer: the text inset (in buffer_funcs.cpp: setCaption). + Font tmpfont = pi.base.font; + pi.base.font = pi.base.bv->buffer().params().getFont(); pi.pain.text(x, y, full_label_, pi.base.font); InsetText::draw(pi, x + labelwidth_, y); + pi.base.font = tmpfont; } diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp index 0c6b472da8..cfbcf8d1d6 100644 --- a/src/insets/InsetListings.cpp +++ b/src/insets/InsetListings.cpp @@ -198,7 +198,13 @@ int InsetListings::latex(Buffer const & buf, odocstream & os, os << code << *delimiter; } else { - docstring const caption = getCaption(buf, runparams); + OutputParams rp = runparams; + // FIXME: the line below would fix bug 4182, + // but real_current_font moved to cursor. + //rp.local_font = &text_.real_current_font; + rp.moving_arg = true; + docstring const caption = getCaption(buf, rp); + runparams.encoding = rp.encoding; if (param_string.empty() && caption.empty()) os << "\n\\begingroup\n\\inputencoding{latin1}\n\\begin{lstlisting}\n"; else {