diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index e6e75ff379..91a57f23ee 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -5249,7 +5249,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, wxRichTextDrawingContext& context, co currentPosition.y += lineSpacing; maxDescent = 0; maxAscent = 0; - maxWidth = wxMax(maxWidth, currentWidth+startOffset); + maxWidth = wxMax(maxWidth, currentWidth+currentPosition.x); currentWidth = 0; lineCount ++; @@ -5296,7 +5296,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, wxRichTextDrawingContext& context, co lineHeight = wxMax(lineHeight, (maxDescent + maxAscent)); - maxWidth = wxMax(maxWidth, currentWidth+startOffset); + maxWidth = wxMax(maxWidth, currentWidth+currentPosition.x); lastEndPos = child->GetRange().GetEnd(); node = node->GetNext(); @@ -5376,7 +5376,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, wxRichTextDrawingContext& context, co wxRect marginRect, borderRect, contentRect, paddingRect, outlineRect; contentRect = wxRect(wxPoint(0, 0), wxSize(paraSize.x + wxMax(leftIndent, leftIndent + leftSubIndent) + rightIndent, currentPosition.y + spaceAfterPara)); GetBoxRects(dc, buffer, attr, marginRect, borderRect, contentRect, paddingRect, outlineRect); - SetMaxSize(marginRect.GetSize()); + SetMaxSize(wxSize(wxMax(GetCachedSize().x, marginRect.GetSize().x), wxMax(GetCachedSize().y, marginRect.y))); } // Find the greatest minimum size. Currently we only look at non-text objects, @@ -6536,6 +6536,9 @@ void wxRichTextParagraph::LayoutFloat(wxDC& dc, wxRichTextDrawingContext& contex int pos = floatCollector->GetFitPosition(anchored->GetAttributes().GetTextBoxAttr().GetFloatMode(), rect.y + offsetY, size.y); + // I can't remember why we tried to update the top offset here, but anyhow it results in + // a wrong position being computed, so don't. +#if 0 /* Update the offset */ int newOffsetY = pos - rect.y; if (newOffsetY != offsetY) @@ -6551,7 +6554,7 @@ void wxRichTextParagraph::LayoutFloat(wxDC& dc, wxRichTextDrawingContext& contex anchored->GetAttributes().GetTextBoxAttr().GetTop().SetValue(newOffsetY, wxTEXT_ATTR_UNITS_TENTHS_MM); } } - +#endif if (anchored->GetAttributes().GetTextBoxAttr().GetFloatMode() == wxTEXT_BOX_ATTR_FLOAT_LEFT) x = rect.x; else if (anchored->GetAttributes().GetTextBoxAttr().GetFloatMode() == wxTEXT_BOX_ATTR_FLOAT_RIGHT)