From a40ca1430ebe844790c69d0a4f8a1509c255a878 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Tue, 16 Feb 2021 10:34:40 +0100 Subject: [PATCH] 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 9bafc8c6da..6063168380 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 830c2d738d..462bf0e9d6 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 0f1814cab2..d3242f9ea4 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(); -- 2.39.5