commit 090e9a6c3664e3f984cb34a57836dc8aac47abca
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Tue Feb 16 12:01:40 2021 +0100

    Keep the useful parts of reverted commits
    
    Keep from 907f0207 the introduction of BufferView::top/bottomMargin()
    and the setting of the top/bottom margin of the document. The
    difference is that the extra height is still added to the relevant
    rows, and not only to the paragraph metrics.
    
    Keep from f41ca959 the reduction of top/bottom margin for Adv F&R
    workareas.
---
 src/BufferView.cpp  |   14 ++++++++++++++
 src/BufferView.h    |    5 ++++-
 src/TextMetrics.cpp |   34 +++++++++++++---------------------
 3 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 6063168..0025277 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -349,6 +349,20 @@ int BufferView::leftMargin() const
 }
 
 
+int BufferView::topMargin() const
+{
+       // Original value was 20px at 100dpi. For internal buffers like in
+       // advanced search and replace, a value of 5px is enough.
+       return zoomedPixels(buffer().isInternal() ? 5 : 20);
+}
+
+
+int BufferView::bottomMargin() const
+{
+       return topMargin();
+}
+
+
 int BufferView::inPixels(Length const & len) const
 {
        Font const font = buffer().params().getFont();
diff --git a/src/BufferView.h b/src/BufferView.h
index 462bf0e..830c2d7 100644
--- a/src/BufferView.h
+++ b/src/BufferView.h
@@ -102,9 +102,12 @@ public:
 
        /// right margin
        int rightMargin() const;
-
        /// left margin
        int leftMargin() const;
+       /// top margin
+       int topMargin() const;
+       /// bottom margin
+       int bottomMargin() const;
 
        docstring const & searchRequestCache() const;
        void setSearchRequestCache(docstring const & text);
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index d3242f9..3154f0d 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -581,37 +581,29 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool 
const align_rows)
                }
        }
 
+       // The space above and below the paragraph.
+       int top = parTopSpacing(pit);
+       int bottom = parBottomSpacing(pit);
+
+       // Top and bottom margin of the document (only at top-level)
        // FIXME: It might be better to move this in another method
        // specially tailored for the main text.
-       // Top and bottom margin of the document (only at top-level)
        if (text_->isMainText()) {
-               // original value was 20px, which is 0.2in at 100dpi
-               int const margin = bv_->zoomedPixels(20);
-               if (pit == 0) {
-                       pm.rows().front().dim().asc += margin;
-                       /* coverity thinks that we should update pm.dim().asc
-                        * below, but all the rows heights are actually counted 
as
-                        * part of the paragraph metric descent see loop above).
-                        */
-                       // coverity[copy_paste_error]
-                       pm.dim().des += margin;
-               }
-               ParagraphList const & pars = text_->paragraphs();
-               if (pit + 1 == pit_type(pars.size())) {
-                       pm.rows().back().dim().des += margin;
-                       pm.dim().des += margin;
+               if (pit == 0)
+                       top += bv_->topMargin();
+               if (pit + 1 == pit_type(text_->paragraphs().size())) {
+                       bottom += bv_->bottomMargin();
                }
        }
 
-       // The space above and below the paragraph.
-       int const top = parTopSpacing(pit);
+       // Add the top/bottom space to rows and paragraph metrics
        pm.rows().front().dim().asc += top;
-       int const bottom = parBottomSpacing(pit);
        pm.rows().back().dim().des += bottom;
        pm.dim().des += top + bottom;
 
-       pm.dim().asc += pm.rows()[0].ascent();
-       pm.dim().des -= pm.rows()[0].ascent();
+       // Move the pm ascent to be the same as the first row ascent
+       pm.dim().asc += pm.rows().front().ascent();
+       pm.dim().des -= pm.rows().front().ascent();
 
        changed |= old_dim.height() != pm.dim().height();
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to