X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f5613c9b12d97846e2f63bf7569082cbbf5ae845..07aaf32633ecf18ec3edfbb41793a112914792d0:/src/richtext/richtextctrl.cpp diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index 06dbf17af1..ce93c740a3 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -355,6 +355,7 @@ void wxRichTextCtrl::Init() m_selectionAnchorObject = NULL; m_selectionState = wxRichTextCtrlSelectionState_Normal; m_editable = true; + m_useVirtualAttributes = false; m_verticalScrollbarEnabled = true; m_caretAtLineStart = false; m_dragging = false; @@ -437,9 +438,6 @@ void wxRichTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) dc.SetFont(GetFont()); - // Paint the background - PaintBackground(dc); - wxRect drawingArea(GetUpdateRegion().GetBox()); drawingArea.SetPosition(GetUnscaledPoint(GetLogicalPoint(drawingArea.GetPosition()))); drawingArea.SetSize(GetUnscaledSize(drawingArea.GetSize())); @@ -458,6 +456,9 @@ void wxRichTextCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) SetupScrollbars(); } + // Paint the background + PaintBackground(dc); + wxRect clipRect(availableSpace); clipRect.x += GetBuffer().GetLeftMargin(); clipRect.y += GetBuffer().GetTopMargin(); @@ -2941,7 +2942,8 @@ void wxRichTextCtrl::DoWriteText(const wxString& value, int flags) wxString valueUnix = wxTextFile::Translate(value, wxTextFileType_Unix); GetFocusObject()->InsertTextWithUndo(& GetBuffer(), m_caretPosition+1, valueUnix, this, wxRICHTEXT_INSERT_WITH_PREVIOUS_PARAGRAPH_STYLE); - GetBuffer().Defragment(); + wxRichTextDrawingContext context(& GetBuffer()); + GetBuffer().Defragment(context); if ( flags & SetValue_SendEvent ) wxTextCtrl::SendTextUpdatedEvent(this); @@ -3260,7 +3262,7 @@ void wxRichTextCtrl::Replace(long from, long to, SetSelection(from, to); - wxRichTextAttr attr = GetDefaultStyle(); + wxRichTextAttr attr(GetDefaultStyle()); DeleteSelectedContent(); @@ -3755,7 +3757,9 @@ void wxRichTextCtrl::PositionCaret(wxRichTextParagraphLayoutBox* container) wxRect caretRect; if (GetCaretPositionForIndex(GetCaretPosition(), caretRect, container)) { +#if !wxRICHTEXT_USE_OWN_CARET caretRect = GetScaledRect(caretRect); +#endif int topMargin = (int) (0.5 + GetScale()*GetBuffer().GetTopMargin()); int bottomMargin = (int) (0.5 + GetScale()*GetBuffer().GetBottomMargin()); wxPoint newPt = caretRect.GetPosition(); @@ -3888,13 +3892,16 @@ bool wxRichTextCtrl::LayoutContent(bool onlyVisibleRect) PrepareDC(dc); dc.SetFont(GetFont()); + dc.SetUserScale(GetScale(), GetScale()); wxRichTextDrawingContext context(& GetBuffer()); - GetBuffer().Defragment(); + GetBuffer().Defragment(context); GetBuffer().UpdateRanges(); // If items were deleted, ranges need recalculation GetBuffer().Layout(dc, context, availableSpace, availableSpace, flags); GetBuffer().Invalidate(wxRICHTEXT_NONE); + dc.SetUserScale(1.0, 1.0); + if (!IsFrozen() && !onlyVisibleRect) SetupScrollbars(); } @@ -4794,8 +4801,9 @@ void wxRichTextCaret::DoMove() { if (m_richTextCtrl && m_refreshEnabled) { - wxRect rect(GetPosition(), GetSize()); - m_richTextCtrl->RefreshRect(rect, false); + wxRect rect(wxPoint(m_xOld, m_yOld), GetSize()); + wxRect scaledRect = m_richTextCtrl->GetScaledRect(rect); + m_richTextCtrl->RefreshRect(scaledRect, false); } } } @@ -4846,7 +4854,8 @@ void wxRichTextCaret::Refresh() if (m_richTextCtrl && m_refreshEnabled) { wxRect rect(GetPosition(), GetSize()); - m_richTextCtrl->RefreshRect(rect, false); + wxRect rectScaled = m_richTextCtrl->GetScaledRect(rect); + m_richTextCtrl->RefreshRect(rectScaled, false); } }