]> git.lyx.org Git - features.git/blobdiff - src/RowPainter.cpp
Change label "Show Zoom" to "Show Zoom Value"
[features.git] / src / RowPainter.cpp
index 07913c72ea46598e19574796a160210b8251b682..b7b479babd64db8487da2cf4a05acf2f0f350304 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_
@@ -581,12 +585,16 @@ void RowPainter::paintSelection() const
        if (!row_.selection())
                return;
 
-       int const y1 = yo_ - (row_.begin_margin_sel ? row_.ascent()
-                                                   : row_.contents_dim().asc);
-       int const y2 = yo_ + (row_.end_margin_sel ? row_.descent()
-                                                 : row_.contents_dim().des);
+       int const y1 = yo_ - row_.contents_dim().asc;
+       int const y2 = yo_ + row_.contents_dim().des;
 
-       // draw the margins
+       // The top selection
+       if (row_.begin_margin_sel)
+               pi_.pain.fillRectangle(int(xo_), yo_ - row_.ascent(),
+                                      tm_.width(), row_.ascent() - row_.contents_dim().asc,
+                                      Color_selection);
+
+       // The left margin selection
        if (row_.isRTL() ? row_.end_margin_sel : row_.begin_margin_sel)
                pi_.pain.fillRectangle(int(xo_), y1, row_.left_margin, y2 - y1,
                                       Color_selection);
@@ -625,21 +633,30 @@ void RowPainter::paintSelection() const
                x += e.full_width();
        }
 
+       // the right margin selection
        if (row_.isRTL() ? row_.begin_margin_sel : row_.end_margin_sel)
                pi_.pain.fillRectangle(int(x), y1,
                                       int(xo_ + tm_.width()) - int(x), y2 - y1,
                                       Color_selection);
+       // The bottom selection
+       if (row_.end_margin_sel)
+               pi_.pain.fillRectangle(int(xo_), yo_ + row_.contents_dim().des,
+                                      tm_.width(), row_.descent() - row_.contents_dim().des,
+                                      Color_selection);
 }
 
 
 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);
 }