X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCaption.cpp;h=e1ace0dc925b1c759b0b3eb410eac5c1e735133b;hb=8124e6c02ea1fd6779bb6c47ffe2bca2c8bd2d97;hp=2e037d6cda2687b5742d3bf41c0785377b4e85de;hpb=48e7b1d01ea45a18d7919d5f6a895c99a978ec59;p=lyx.git diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp index 2e037d6cda..e1ace0dc92 100644 --- a/src/insets/InsetCaption.cpp +++ b/src/insets/InsetCaption.cpp @@ -111,8 +111,6 @@ void InsetCaption::addToToc(DocIterator const & cpit, bool output_active, void InsetCaption::metrics(MetricsInfo & mi, Dimension & dim) const { - FontInfo tmpfont = mi.base.font; - mi.base.font = mi.base.bv->buffer().params().getFont().fontInfo(); labelwidth_ = theFontMetrics(mi.base.font).width(full_label_); // add some space to separate the label from the inset text labelwidth_ += leftOffset(mi.base.bv) + rightOffset(mi.base.bv); @@ -121,7 +119,6 @@ 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 = max(dim.des - textdim.asc + dim.asc, textdim.des); dim.asc = textdim.asc; @@ -152,12 +149,10 @@ void InsetCaption::draw(PainterInfo & pi, int x, int y) const rtl_ = !pi.ltr_pos; FontInfo tmpfont = pi.base.font; - pi.base.font = pi.base.bv->buffer().params().getFont().fontInfo(); - pi.base.font.setColor(pi.textColor(pi.base.font.color()).baseColor); - if (is_deleted_) - pi.base.font.setStrikeout(FONT_ON); - else if (isChanged() && lyxrc.ct_additions_underlined) - pi.base.font.setUnderbar(FONT_ON); + if (non_float_) + pi.base.font.setColor(Color_error); + else + pi.base.font.setPaintColor(pi.textColor(pi.base.font.color())); int const lo = leftOffset(pi.base.bv); if (rtl_) { InsetText::draw(pi, x, y); @@ -167,6 +162,10 @@ void InsetCaption::draw(PainterInfo & pi, int x, int y) const pi.pain.text(x + lo, y, full_label_, pi.base.font); InsetText::draw(pi, x + labelwidth_, y); } + // Draw the change tracking cue on the label, unless RowPainter already + // takes care of it. + if (canPaintChange(*pi.base.bv)) + pi.change.paintCue(pi, x, y, x + labelwidth_, pi.base.font); pi.base.font = tmpfont; } @@ -312,7 +311,7 @@ docstring InsetCaption::xhtml(XMLStream & xs, OutputParams const & rp) const return docstring(); InsetLayout const & il = getLayout(); string const & tag = il.htmltag(); - string attr = il.htmlattr(); + string attr = il.htmlGetAttrString(); if (!type_.empty()) { string const our_class = "float-caption-" + type_; size_t const loc = attr.find("class='"); @@ -328,6 +327,15 @@ docstring InsetCaption::xhtml(XMLStream & xs, OutputParams const & rp) const } +docstring InsetCaption::toolTip(BufferView const & bv, int x, int y) const +{ + if (non_float_) + return _("Standard captions are not allowed outside floats. You will get a LaTeX error.\n" + "For captions outside floats, you can use the 'nonfloat' LaTeX package."); + return InsetText::toolTip(bv, x, y); +} + + void InsetCaption::getArgument(otexstream & os, OutputParams const & runparams) const { @@ -369,7 +377,7 @@ int InsetCaption::getCaptionAsPlaintext(odocstream & os, void InsetCaption::getCaptionAsDocBook(XMLStream & xs, - OutputParams const & runparams) const + OutputParams const & runparams) const { if (runparams.docbook_in_float) return; @@ -404,9 +412,10 @@ void InsetCaption::updateBuffer(ParIterator const & it, UpdateType utype, bool c is_deleted_ = deleted; // Memorize type for addToToc(). floattype_ = type; - if (type.empty() || type == "senseless") - full_label_ = master.B_("Senseless!!! "); - else { + if (type.empty() || type == "senseless") { + full_label_ = master.B_("Orphaned caption:"); + non_float_ = true; + } else { // FIXME: life would be _much_ simpler if listings was // listed in Floating. docstring name; @@ -445,6 +454,7 @@ void InsetCaption::updateBuffer(ParIterator const & it, UpdateType utype, bool c if (sec.empty()) sec = from_ascii("#"); full_label_ = bformat(master.B_("%1$s %2$s: [[Caption label (ex. Figure 1: )]]"), name, sec); + non_float_ = false; } // Do the real work now.