From 6eec9dda58de2866ca526d819342929e1b2008cf Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Sun, 13 Jul 2014 08:44:22 +0000 Subject: [PATCH] Layout fix for paragraphs after floating objects not centering git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/richtext/richtextbuffer.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index 54203e53c6..29f1aa4e10 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -1205,6 +1205,20 @@ bool wxRichTextObject::LayoutToBestSize(wxDC& dc, wxRichTextDrawingContext& cont // on this basis if (!attr.GetTextBoxAttr().GetWidth().IsValid() && maxSize.x < availableChildRect.width) { + if (!attr.HasAlignment() || attr.GetAlignment() == wxTEXT_ALIGNMENT_LEFT) + { + // Redo the layout with a fixed, minimum size this time. + Invalidate(wxRICHTEXT_ALL); + wxRichTextAttr newAttr(attr); + newAttr.GetTextBoxAttr().GetWidth().SetValue(maxSize.x, wxTEXT_ATTR_UNITS_PIXELS); + newAttr.GetTextBoxAttr().GetWidth().SetPosition(wxTEXT_BOX_ATTR_POSITION_ABSOLUTE); + + availableChildRect = AdjustAvailableSpace(dc, buffer, parentAttr, newAttr, availableParentSpace, availableContainerSpace); + + Layout(dc, context, availableChildRect, availableContainerSpace, style); + } + +#if 0 // Redo the layout with a fixed, minimum size this time. Invalidate(wxRICHTEXT_ALL); wxRichTextAttr newAttr(attr); @@ -1231,6 +1245,7 @@ bool wxRichTextObject::LayoutToBestSize(wxDC& dc, wxRichTextDrawingContext& cont } Layout(dc, context, availableChildRect, availableContainerSpace, style); +#endif } /* @@ -7748,8 +7763,6 @@ bool wxRichTextParagraphLayoutBox::InsertTextWithUndo(wxRichTextBuffer* buffer, length --; action->GetNewParagraphs().SetPartialParagraph(true); } - else if (!text.empty() && text.Last() == wxT('\n')) - length --; action->SetPosition(pos);