]> git.lyx.org Git - features.git/blobdiff - src/insets/InsetCaption.cpp
Replace the hardcoded TEXT_TO_INSET_OFFSET by tunable values
[features.git] / src / insets / InsetCaption.cpp
index 0ebbcea379c3d440a42a1939267807765c92d7fd..43147ff8646ce03a9cf77ba541155fe174fc54ed 100644 (file)
@@ -86,12 +86,6 @@ void InsetCaption::cursorPos(BufferView const & bv,
 }
 
 
-void InsetCaption::setCustomLabel(docstring const & label)
-{
-       custom_label_ = translateIfPossible(label);
-}
-
-
 void InsetCaption::addToToc(DocIterator const & cpit, bool output_active,
                                                        UpdateType utype, TocBackend & backend) const
 {
@@ -120,7 +114,7 @@ void InsetCaption::metrics(MetricsInfo & mi, Dimension & dim) const
        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_ += 2 * TEXT_TO_INSET_OFFSET;
+       labelwidth_ += leftOffset(mi.base.bv) + rightOffset(mi.base.bv);
        dim.wid = labelwidth_;
        Dimension textdim;
        // Correct for button and label width
@@ -137,8 +131,8 @@ void InsetCaption::metrics(MetricsInfo & mi, Dimension & dim) const
 void InsetCaption::drawBackground(PainterInfo & pi, int x, int y) const
 {
        TextMetrics & tm = pi.base.bv->textMetrics(&text());
-       int const h = tm.height() + 2 * TEXT_TO_INSET_OFFSET;
-       int const yy = y - TEXT_TO_INSET_OFFSET - tm.ascent();
+       int const h = tm.height() + topOffset(pi.base.bv) + bottomOffset(pi.base.bv);
+       int const yy = y - topOffset(pi.base.bv) - tm.ascent();
        pi.pain.fillRectangle(x, yy, labelwidth_, h, pi.backgroundColor(this));
 }
 
@@ -156,7 +150,7 @@ void InsetCaption::draw(PainterInfo & pi, int x, int y) const
        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);
-       int const xx = x + TEXT_TO_INSET_OFFSET;
+       int const xx = x + leftOffset(pi.base.bv);
        pi.pain.text(xx, y, full_label_, pi.base.font);
        InsetText::draw(pi, x + labelwidth_, y);
        pi.base.font = tmpfont;
@@ -264,7 +258,16 @@ void InsetCaption::latex(otexstream & os,
        // \caption{...}, later we will make it take advantage
        // of the one of the caption packages. (Lgb)
        OutputParams runparams = runparams_in;
+       // Some fragile commands (labels, index entries)
+       // are output after the caption (#2154)
+       runparams.postpone_fragile_stuff = buffer().masterParams().postpone_fragile_content;
        InsetText::latex(os, runparams);
+       if (!runparams.post_macro.empty()) {
+               // Output the stored fragile commands (labels, indices etc.)
+               // that need to be output after the caption.
+               os << runparams.post_macro;
+               runparams.post_macro.clear();
+       }
        // Backwards compatibility: We always had a linebreak after
        // the caption (see #8514)
        os << breakln;