From 2f4390c06b24c1397ed9a35b52749c3deca1e973 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Fri, 28 Nov 2008 16:05:11 +0000 Subject: [PATCH] Centre/right justification fix when there is a right indent git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@57004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/richtext/richtextbuffer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index 8e5fa04a79..27ac1d9d0b 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -3834,6 +3834,8 @@ static int wxRichTextGetRangeWidth(const wxRichTextParagraph& para, const wxRich return w; } +static wxDC* g_globalDC = NULL; + /// Lay the item out bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style) { @@ -4099,7 +4101,9 @@ bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style) ClearUnusedLines(lineCount); // Apply styles to wrapped lines + g_globalDC = & dc; ApplyParagraphStyle(attr, rect); + g_globalDC = NULL; SetCachedSize(wxSize(maxWidth, currentPosition.y + spaceBeforePara + spaceAfterPara)); @@ -4169,12 +4173,14 @@ void wxRichTextParagraph::ApplyParagraphStyle(const wxTextAttrEx& attr, const wx // centering, right-justification if (attr.HasAlignment() && GetAttributes().GetAlignment() == wxTEXT_ALIGNMENT_CENTRE) { - pos.x = (rect.GetWidth() - (pos.x - rect.x) - size.x)/2 + pos.x; + int rightIndent = ConvertTenthsMMToPixels(* g_globalDC, attr.GetRightIndent()); + pos.x = (rect.GetWidth() - (pos.x - rect.x) - rightIndent - size.x)/2 + pos.x; line->SetPosition(pos); } else if (attr.HasAlignment() && GetAttributes().GetAlignment() == wxTEXT_ALIGNMENT_RIGHT) { - pos.x = rect.x + rect.GetWidth() - size.x; + int rightIndent = ConvertTenthsMMToPixels(* g_globalDC, attr.GetRightIndent()); + pos.x = rect.x + rect.GetWidth() - size.x - rightIndent; line->SetPosition(pos); }