]> git.lyx.org Git - lyx.git/blobdiff - src/RowPainter.cpp
DocBook: don't use a surrounding <para> for rendered insets.
[lyx.git] / src / RowPainter.cpp
index 8cc7202ccc51ca67db5693684fbfb516e0a67cf6..400b7b66e83ce101d7b27474283ca465a2eb6978 100644 (file)
@@ -82,7 +82,11 @@ FontInfo RowPainter::labelFont(bool end) const
 
 void RowPainter::paintInset(Row::Element const & e) const
 {
-       // Handle selection
+       // Handle selection (first left/right, then middle).
+       pi_.selected_left = pi_.selected
+                           || (row_.isRTL() ? row_.end_margin_sel : row_.begin_margin_sel);
+       pi_.selected_right = pi_.selected
+                            || (row_.isRTL() ? row_.begin_margin_sel : row_.end_margin_sel);
        bool const pi_selected = pi_.selected;
        Cursor const & cur = pi_.base.bv->cursor();
        if (cur.selection() && cur.text() == &text_
@@ -289,7 +293,10 @@ void RowPainter::paintChange(Row::Element const & e) const
 
 void RowPainter::paintChangeBar() const
 {
-       pi_.pain.fillRectangle(5, yo_ - row_.ascent(), 3, row_.height(), Color_changebar);
+       int const x = pi_.base.bv->leftMargin() - pi_.base.bv->zoomedPixels(7);
+       Dimension const & cdim = row_.contents_dim();
+       pi_.pain.fillRectangle(x, yo_ - cdim.ascent(),
+                              3, cdim.height(), Color_changebar);
 }
 
 
@@ -378,18 +385,17 @@ void RowPainter::paintAppendixStart(int y) const
 
 void RowPainter::paintTooLargeMarks(bool const left, bool const right) const
 {
-       if (left)
-               pi_.pain.line(pi_.base.dottedLineThickness(), yo_ - row_.ascent(),
-                                         pi_.base.dottedLineThickness(), yo_ + row_.descent(),
-                                         Color_scroll, Painter::line_onoffdash,
-                             pi_.base.dottedLineThickness());
+       int const lwid = pi_.base.dottedLineThickness();
+       Dimension const & cdim = row_.contents_dim();
+       if (left) {
+               int const x = pi_.base.bv->leftMargin() - lwid;
+               pi_.pain.line(x, yo_ - cdim.ascent(), x, yo_ + cdim.descent(),
+                             Color_scroll, Painter::line_onoffdash, lwid);
+       }
        if (right) {
-               int const wwidth =
-                       pi_.base.bv->workWidth() - pi_.base.dottedLineThickness();
-               pi_.pain.line(wwidth, yo_ - row_.ascent(),
-                                         wwidth, yo_ + row_.descent(),
-                                         Color_scroll, Painter::line_onoffdash,
-                             pi_.base.dottedLineThickness());
+               int const x = pi_.base.bv->workWidth() - pi_.base.bv->rightMargin();
+               pi_.pain.line(x, yo_ - cdim.ascent(), x, yo_ + cdim.descent(),
+                             Color_scroll, Painter::line_onoffdash, lwid);
        }
 }
 
@@ -632,12 +638,15 @@ void RowPainter::paintSelection() const
 
 void RowPainter::paintBookmark(int num) const
 {
-       int const x = row_.isRTL()
-               ? pi_.base.bv->workWidth() - pi_.base.bv->rightMargin() : 0;
-       FontInfo fi = pi_.base.bv->buffer().params().getFont().fontInfo();
+       BufferView const * bv = pi_.base.bv;
+       FontInfo fi = bv->buffer().params().getFont().fontInfo();
+       FontMetrics const & fm = theFontMetrics(fi);
        fi.setColor(Color_bookmark);
        // ❶ U+2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE
        char_type const ch = 0x2775 + num;
+       int const x = row_.isRTL()
+               ? bv->workWidth() - bv->rightMargin() + (bv->defaultMargin() - fm.width(ch)) / 2
+               : bv->leftMargin() - (bv->defaultMargin() + fm.width(ch)) / 2;
        pi_.pain.text(x, yo_, ch, fi);
 }