]> git.saurik.com Git - wxWidgets.git/blobdiff - src/richtext/richtextctrl.cpp
Corrected bug in in revision 47973
[wxWidgets.git] / src / richtext / richtextctrl.cpp
index caf9d338d8e22ded01711e4444966ed49be9c582..14b77e9b1d8b73883d1b14a646c2880b92961fde 100644 (file)
@@ -151,7 +151,7 @@ bool wxRichTextCtrl::Create( wxWindow* parent, wxWindowID id, const wxString& va
     // The base attributes must all have default values
     wxTextAttrEx attributes;
     attributes.SetFont(GetFont());
-    attributes.SetTextColour(*wxBLACK);
+    attributes.SetTextColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
     attributes.SetAlignment(wxTEXT_ALIGNMENT_LEFT);
     attributes.SetLineSpacing(10);
     attributes.SetParagraphSpacingAfter(10);
@@ -166,7 +166,7 @@ bool wxRichTextCtrl::Create( wxWindow* parent, wxWindowID id, const wxString& va
     wxTextAttrEx defaultAttributes;
     SetDefaultStyle(defaultAttributes);
 
-    SetBackgroundColour(*wxWHITE);
+    SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
     SetBackgroundStyle(wxBG_STYLE_CUSTOM);
 
     // Tell the sizers to use the given or best size
@@ -229,7 +229,10 @@ void wxRichTextCtrl::Thaw()
 
     if (m_freezeCount == 0)
     {
-        SetupScrollbars();
+        if (GetBuffer().GetDirty())
+            LayoutContent();
+        else
+            SetupScrollbars();
         Refresh(false);
     }
 }
@@ -244,11 +247,9 @@ void wxRichTextCtrl::Clear()
     m_caretAtLineStart = false;
     m_selectionRange.SetRange(-2, -2);
 
-    SetScrollbars(0, 0, 0, 0, 0, 0);
-
     if (m_freezeCount == 0)
     {
-        SetupScrollbars();
+        LayoutContent();
         Refresh(false);
     }
     SendTextUpdatedEvent();
@@ -2713,12 +2714,13 @@ void wxRichTextCtrl::PositionCaret()
     wxRect caretRect;
     if (GetCaretPositionForIndex(GetCaretPosition(), caretRect))
     {
-        wxPoint originalPt = caretRect.GetPosition();
-        wxPoint pt = GetPhysicalPoint(originalPt);
-        if (GetCaret()->GetPosition() != pt)
+        wxPoint newPt = caretRect.GetPosition();
+        wxSize newSz = caretRect.GetSize();
+        wxPoint pt = GetPhysicalPoint(newPt);
+        if (GetCaret()->GetPosition() != pt || GetCaret()->GetSize() != newSz)
         {
             GetCaret()->Move(pt);
-            GetCaret()->SetSize(caretRect.GetSize());
+            GetCaret()->SetSize(newSz);
         }
     }
 }