[LyX/master] Revert "Improve handling of top and bottom margin"

Jean-Marc Lasgouttes lasgouttes at lyx.org
Tue Feb 16 11:26:09 UTC 2021


commit a40ca1430ebe844790c69d0a4f8a1509c255a878
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Tue Feb 16 10:34:40 2021 +0100

    Revert "Improve handling of top and bottom margin"
    
    This reverts commit 907f020724b4d73a75644642f3e097f74c75c3b5.
---
 src/BufferView.cpp  |   14 --------------
 src/BufferView.h    |    5 +----
 src/TextMetrics.cpp |   36 +++++++++++++++++++++++-------------
 3 files changed, 24 insertions(+), 31 deletions(-)

diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 9bafc8c..6063168 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -349,20 +349,6 @@ int BufferView::leftMargin() const
 }
 
 
-int BufferView::topMargin() const
-{
-	// original value was 20px, which is 0.2in at 100dpi
-	return zoomedPixels(20);
-}
-
-
-int BufferView::bottomMargin() const
-{
-	// original value was 20px, which is 0.2in at 100dpi
-	return zoomedPixels(20);
-}
-
-
 int BufferView::inPixels(Length const & len) const
 {
 	Font const font = buffer().params().getFont();
diff --git a/src/BufferView.h b/src/BufferView.h
index 830c2d7..462bf0e 100644
--- a/src/BufferView.h
+++ b/src/BufferView.h
@@ -102,12 +102,9 @@ 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 0f1814c..d3242f9 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -581,6 +581,28 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows)
 		}
 	}
 
+	// 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;
+		}
+	}
+
 	// The space above and below the paragraph.
 	int const top = parTopSpacing(pit);
 	pm.rows().front().dim().asc += top;
@@ -591,18 +613,6 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows)
 	pm.dim().asc += pm.rows()[0].ascent();
 	pm.dim().des -= pm.rows()[0].ascent();
 
-	// 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.
-	if (text_->isMainText()) {
-		if (pit == 0)
-			pm.dim().asc += bv_->topMargin();
-		ParagraphList const & pars = text_->paragraphs();
-		if (pit + 1 == pit_type(pars.size())) {
-			pm.dim().des += bv_->bottomMargin();
-		}
-	}
-
 	changed |= old_dim.height() != pm.dim().height();
 
 	return changed;
@@ -1349,7 +1359,7 @@ Row const & TextMetrics::getPitAndRowNearY(int & y, pit_type & pit,
 {
 	ParagraphMetrics const & pm = par_metrics_[pit];
 
-	int yy = pm.position() - pm.rows().front().ascent();
+	int yy = pm.position() - pm.ascent();
 	LBUFERR(!pm.rows().empty());
 	RowList::const_iterator rit = pm.rows().begin();
 	RowList::const_iterator rlast = pm.rows().end();


More information about the lyx-cvs mailing list