commit 2fd8b6fc2a402c00e78f71d7d6ad986270283a3e
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Tue Dec 7 18:15:01 2021 +0100

    Fix the way the top and bottom selection are drawn
    
    When a selection extends on more than a row, the space between the two
    rows should always be painted in full. Otherwise, with layouts like
    Chapter, the "Chapter" label may seem selected in part.
---
 src/RowPainter.cpp |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp
index 400b7b6..b7b479b 100644
--- a/src/RowPainter.cpp
+++ b/src/RowPainter.cpp
@@ -585,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);
@@ -629,10 +633,16 @@ 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);
 }
 
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to