mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-23 02:14:50 +00:00
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().
This commit is contained in:
parent
2e8c9cfc83
commit
501f4e848f
@ -2788,7 +2788,7 @@ bool BufferView::singleParUpdate()
|
|||||||
// (if this paragraph contains insets etc., rebreaking will
|
// (if this paragraph contains insets etc., rebreaking will
|
||||||
// recursively descend)
|
// recursively descend)
|
||||||
tm.redoParagraph(bottom_pit);
|
tm.redoParagraph(bottom_pit);
|
||||||
ParagraphMetrics & pm = tm.par_metrics_[bottom_pit];
|
ParagraphMetrics & pm = tm.parMetrics(bottom_pit);
|
||||||
if (pm.height() != old_dim.height()) {
|
if (pm.height() != old_dim.height()) {
|
||||||
// Paragraph height has changed so we cannot proceed to
|
// Paragraph height has changed so we cannot proceed to
|
||||||
// the singlePar optimisation.
|
// the singlePar optimisation.
|
||||||
@ -2845,7 +2845,7 @@ void BufferView::updateMetrics(Update::flags & update_flags)
|
|||||||
|
|
||||||
// Rebreak anchor paragraph.
|
// Rebreak anchor paragraph.
|
||||||
tm.redoParagraph(d->anchor_pit_);
|
tm.redoParagraph(d->anchor_pit_);
|
||||||
ParagraphMetrics & anchor_pm = tm.par_metrics_[d->anchor_pit_];
|
ParagraphMetrics & anchor_pm = tm.parMetrics(d->anchor_pit_);
|
||||||
|
|
||||||
// position anchor
|
// position anchor
|
||||||
if (d->anchor_pit_ == 0) {
|
if (d->anchor_pit_ == 0) {
|
||||||
@ -2872,7 +2872,7 @@ void BufferView::updateMetrics(Update::flags & update_flags)
|
|||||||
pit_type pit1 = d->anchor_pit_ - 1;
|
pit_type pit1 = d->anchor_pit_ - 1;
|
||||||
for (; pit1 >= 0 && y1 >= 0; --pit1) {
|
for (; pit1 >= 0 && y1 >= 0; --pit1) {
|
||||||
tm.redoParagraph(pit1);
|
tm.redoParagraph(pit1);
|
||||||
ParagraphMetrics & pm = tm.par_metrics_[pit1];
|
ParagraphMetrics & pm = tm.parMetrics(pit1);
|
||||||
y1 -= pm.descent();
|
y1 -= pm.descent();
|
||||||
// Save the paragraph position in the cache.
|
// Save the paragraph position in the cache.
|
||||||
pm.setPosition(y1);
|
pm.setPosition(y1);
|
||||||
@ -2886,7 +2886,7 @@ void BufferView::updateMetrics(Update::flags & update_flags)
|
|||||||
pit_type pit2 = d->anchor_pit_ + 1;
|
pit_type pit2 = d->anchor_pit_ + 1;
|
||||||
for (; pit2 < npit && y2 <= height_; ++pit2) {
|
for (; pit2 < npit && y2 <= height_; ++pit2) {
|
||||||
tm.redoParagraph(pit2);
|
tm.redoParagraph(pit2);
|
||||||
ParagraphMetrics & pm = tm.par_metrics_[pit2];
|
ParagraphMetrics & pm = tm.parMetrics(pit2);
|
||||||
y2 += pm.ascent();
|
y2 += pm.ascent();
|
||||||
// Save the paragraph position in the cache.
|
// Save the paragraph position in the cache.
|
||||||
pm.setPosition(y2);
|
pm.setPosition(y2);
|
||||||
|
@ -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()
|
void TextMetrics::newParMetricsDown()
|
||||||
{
|
{
|
||||||
pair<pit_type, ParagraphMetrics> const & last = *par_metrics_.rbegin();
|
pair<pit_type, ParagraphMetrics> const & last = *par_metrics_.rbegin();
|
||||||
|
@ -60,9 +60,11 @@ public:
|
|||||||
///
|
///
|
||||||
Point const & origin() const { return origin_; }
|
Point const & origin() const { return origin_; }
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
ParagraphMetrics const & parMetrics(pit_type) const;
|
ParagraphMetrics const & parMetrics(pit_type) const;
|
||||||
|
///
|
||||||
|
ParagraphMetrics & parMetrics(pit_type);
|
||||||
|
|
||||||
///
|
///
|
||||||
void newParMetricsDown();
|
void newParMetricsDown();
|
||||||
///
|
///
|
||||||
@ -240,7 +242,6 @@ public:
|
|||||||
Dimension & dim) const;
|
Dimension & dim) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class BufferView;
|
|
||||||
|
|
||||||
/// The BufferView owner.
|
/// The BufferView owner.
|
||||||
BufferView * bv_;
|
BufferView * bv_;
|
||||||
|
Loading…
Reference in New Issue
Block a user