commit 501f4e848ffd75208efe83652325c52c652adb48
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Tue Jul 14 00:08:07 2020 +0200
Cleanup: BufferView should not need to be friend of TextMetrics
It did access par_metrics_[] directly because there was no non-const
parMetrics().
This patch adds one and unfriends BufferView. The code is equivalent
since in all these cases, the metrics have just been computed with
redoParagraph().
---
src/BufferView.cpp | 8 ++++----
src/TextMetrics.cpp | 6 ++++++
src/TextMetrics.h | 5 +++--
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 24d811c..fe02be5 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -2788,7 +2788,7 @@ bool BufferView::singleParUpdate()
// (if this paragraph contains insets etc., rebreaking will
// recursively descend)
tm.redoParagraph(bottom_pit);
- ParagraphMetrics & pm = tm.par_metrics_[bottom_pit];
+ ParagraphMetrics & pm = tm.parMetrics(bottom_pit);
if (pm.height() != old_dim.height()) {
// Paragraph height has changed so we cannot proceed to
// the singlePar optimisation.
@@ -2845,7 +2845,7 @@ void BufferView::updateMetrics(Update::flags &
update_flags)
// Rebreak anchor paragraph.
tm.redoParagraph(d->anchor_pit_);
- ParagraphMetrics & anchor_pm = tm.par_metrics_[d->anchor_pit_];
+ ParagraphMetrics & anchor_pm = tm.parMetrics(d->anchor_pit_);
// position anchor
if (d->anchor_pit_ == 0) {
@@ -2872,7 +2872,7 @@ void BufferView::updateMetrics(Update::flags &
update_flags)
pit_type pit1 = d->anchor_pit_ - 1;
for (; pit1 >= 0 && y1 >= 0; --pit1) {
tm.redoParagraph(pit1);
- ParagraphMetrics & pm = tm.par_metrics_[pit1];
+ ParagraphMetrics & pm = tm.parMetrics(pit1);
y1 -= pm.descent();
// Save the paragraph position in the cache.
pm.setPosition(y1);
@@ -2886,7 +2886,7 @@ void BufferView::updateMetrics(Update::flags &
update_flags)
pit_type pit2 = d->anchor_pit_ + 1;
for (; pit2 < npit && y2 <= height_; ++pit2) {
tm.redoParagraph(pit2);
- ParagraphMetrics & pm = tm.par_metrics_[pit2];
+ ParagraphMetrics & pm = tm.parMetrics(pit2);
y2 += pm.ascent();
// Save the paragraph position in the cache.
pm.setPosition(y2);
diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 95c9f83..87f0d33 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -185,6 +185,12 @@ ParagraphMetrics const & TextMetrics::parMetrics(pit_type
pit) const
}
+ParagraphMetrics & TextMetrics::parMetrics(pit_type pit)
+{
+ return parMetrics(pit, true);
+}
+
+
void TextMetrics::newParMetricsDown()
{
pair<pit_type, ParagraphMetrics> const & last = *par_metrics_.rbegin();
diff --git a/src/TextMetrics.h b/src/TextMetrics.h
index 006836f..353d289 100644
--- a/src/TextMetrics.h
+++ b/src/TextMetrics.h
@@ -60,10 +60,12 @@ public:
///
Point const & origin() const { return origin_; }
-
///
ParagraphMetrics const & parMetrics(pit_type) const;
///
+ ParagraphMetrics & parMetrics(pit_type);
+
+ ///
void newParMetricsDown();
///
void newParMetricsUp();
@@ -240,7 +242,6 @@ public:
Dimension & dim) const;
private:
- friend class BufferView;
/// The BufferView owner.
BufferView * bv_;
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs