From 6df750aa181ad13f260ded60f7b74e1bcf59183e Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Thu, 10 May 2012 10:39:38 +0200 Subject: [PATCH] TextMetrics::leftMargin(): Explain why the disabled code is wrong --- src/TextMetrics.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 96da42d79f..1000affa05 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -1980,16 +1980,18 @@ int TextMetrics::leftMargin(int max_width, case MARGIN_RIGHT_ADDRESS_BOX: { #if 0 - // ok, a terrible hack. The left margin depends on the widest - // row in this paragraph. - RowList::iterator rit = par.rows().begin(); - RowList::iterator end = par.rows().end(); - // FIXME: This is wrong. + // The left margin depends on the widest row in this paragraph. + // This code is wrong because it depends on the rows, but at the + // same time this function is used in redoParagraph to construct + // the rows. + ParagraphMetrics const & pm = par_metrics_[pit]; + RowList::const_iterator rit = pm.rows().begin(); + RowList::const_iterator end = pm.rows().end(); int minfill = max_width; for ( ; rit != end; ++rit) if (rit->fill() < minfill) minfill = rit->fill(); - l_margin += theFontMetrics(params.getFont()).signedWidth(layout.leftmargin); + l_margin += theFontMetrics(buffer.params().getFont()).signedWidth(layout.leftmargin); l_margin += minfill; #endif // also wrong, but much shorter. -- 2.39.2