virtual void Freeze();
 
     /// Call Thaw to refresh
-    virtual void Thaw(bool refresh = true);
+    virtual void Thaw();
 
     /// Call Thaw to refresh
     virtual bool IsFrozen() const { return m_freezeCount > 0; }
     virtual void SetupScrollbars(bool atTop = false);
 
     /// Keyboard navigation
-    virtual bool Navigate(int keyCode, int flags);
+    virtual bool KeyboardNavigate(int keyCode, int flags);
 
     /// Paint the background
     virtual void PaintBackground(wxDC& dc);
 
 }
 
 /// Call Thaw to refresh
-void wxRichTextCtrl::Thaw(bool refresh)
+void wxRichTextCtrl::Thaw()
 {
     m_freezeCount --;
 
-    if (m_freezeCount == 0 && refresh)
+    if (m_freezeCount == 0)
     {
         SetupScrollbars();
         Refresh(false);
         event.GetKeyCode() == WXK_NEXT ||
         event.GetKeyCode() == WXK_END)
     {
-        Navigate(event.GetKeyCode(), flags);
+        KeyboardNavigate(event.GetKeyCode(), flags);
     }
     else if (event.GetKeyCode() == WXK_RETURN)
     {
 
  */
 
-bool wxRichTextCtrl::Navigate(int keyCode, int flags)
+bool wxRichTextCtrl::KeyboardNavigate(int keyCode, int flags)
 {
     bool success = false;
-    Freeze();
 
     if (keyCode == WXK_RIGHT)
     {
         SetDefaultStyleToCursorStyle();
     }
 
-    Thaw(false);
-
     return success;
 }
 
 
 {
     if (str.empty()) return;
 #if wxUSE_UNICODE
-    const wxWX2MBbuf buf(str.mb_str(convFile ? *convFile : wxConvUTF8));
-    stream.Write((const char*)buf, strlen((const char*)buf));
+    if (convFile)
+    {
+        const wxWX2MBbuf buf(str.mb_str(*convFile));
+        stream.Write((const char*)buf, strlen((const char*)buf));
+    }
+    else
+    {
+        const wxWX2MBbuf buf(str.mb_str(wxConvUTF8));
+        stream.Write((const char*)buf, strlen((const char*)buf));
+    }
 #else
     if ( convFile == NULL )
         stream.Write(str.mb_str(), str.Len());