]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/textctrl.cpp
added support for item attributes in virtual list control
[wxWidgets.git] / src / univ / textctrl.cpp
index 98b53bda8a47bc6118e19f94746a0ddc3699620d..a56e610f6b87fa27aa59934812f853652cca1caf 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     15.09.00
 // RCS-ID:      $Id$
-// Copyright:   (c) 2000 Vadim Zeitlin
+// Copyright:   (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
 #endif
 
 #include "wx/clipbrd.h"
+
 #include "wx/textfile.h"
 
 #include "wx/caret.h"
@@ -1412,6 +1413,10 @@ void wxTextCtrl::SetSelection(wxTextPos from, wxTextPos to)
     }
     else // valid sel range
     {
+        // remember the 'to' position as the current position, used to move the
+        // caret there later
+        wxTextPos toOrig = to;
+
         OrderPositions(from, to);
 
         wxCHECK_RET( to <= GetLastPosition(),
@@ -1457,8 +1462,8 @@ void wxTextCtrl::SetSelection(wxTextPos from, wxTextPos to)
         }
         //else: nothing to do
 
-        // the insertion point is put at the end of selection
-        DoSetInsertionPoint(to);
+        // the insertion point is put at the location where the caret was moved
+        DoSetInsertionPoint(toOrig);
     }
 }
 
@@ -1735,6 +1740,8 @@ wxTextCoord wxTextCtrl::GetRowsPerLine(wxTextCoord line) const
 wxTextCoord wxTextCtrl::GetRowCount() const
 {
     wxTextCoord count = GetLineCount();
+    if (count == 0)
+        return 0;
     if ( WrapLines() )
     {
         count = GetFirstRowOfLine(count - 1) +