]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/textctrl.cpp
compilation fixes for gcc 2.7.2.1 under FreeBSD
[wxWidgets.git] / src / gtk1 / textctrl.cpp
index cc172bce3c2494af44c03ca0b85d0bd041bf05e0..538735085e25ab60da767c447bb8cf960297bbb3 100644 (file)
@@ -293,15 +293,38 @@ void wxTextCtrl::WriteText( const wxString &text )
     if (m_windowStyle & wxTE_MULTILINE)
     {
         /* this moves the cursor pos to behind the inserted text */
+       gint len = GTK_EDITABLE(m_text)->current_pos;
+        gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
        
+       /* bring editable's cursor uptodate. bug in GTK. */
+       GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
+    }
+    else
+    {
+        /* this moves the cursor pos to behind the inserted text */
        gint len = GTK_EDITABLE(m_text)->current_pos;
-
         gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
        
        /* bring editable's cursor uptodate. bug in GTK. */
+       GTK_EDITABLE(m_text)->current_pos += text.Len();
        
+       /* bring entry's cursor uptodate. bug in GTK. */
+       gtk_entry_set_position( GTK_ENTRY(m_text), GTK_EDITABLE(m_text)->current_pos );
+    }
+}
+
+void wxTextCtrl::AppendText( const wxString &text )
+{
+    wxCHECK_RET( m_text != NULL, "invalid text ctrl" );
+
+    if (m_windowStyle & wxTE_MULTILINE)
+    {
+        /* we'll insert at the last position */
+        gint len = gtk_text_get_length( GTK_TEXT(m_text) );
+        gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
+       
+       /* bring editable's cursor uptodate. bug in GTK. */
        GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
-    
     }
     else
     {
@@ -565,6 +588,10 @@ void wxTextCtrl::SetInsertionPoint( long pos )
     else
     {
         gtk_entry_set_position( GTK_ENTRY(m_text), (int)pos );
+       
+       /* bring editable's cursor uptodate. bug in GTK. */
+       
+       GTK_EDITABLE(m_text)->current_pos = pos;
     }
 }
 
@@ -721,7 +748,7 @@ int wxTextCtrl::underflow()
 
 wxTextCtrl& wxTextCtrl::operator<<(const wxString& s)
 {
-    WriteText(s);
+    AppendText(s);
     return *this;
 }
 
@@ -729,7 +756,7 @@ wxTextCtrl& wxTextCtrl::operator<<(float f)
 {
     static char buf[100];
     sprintf(buf, "%.2f", f);
-    WriteText(buf);
+    AppendText(buf);
     return *this;
 }
 
@@ -737,7 +764,7 @@ wxTextCtrl& wxTextCtrl::operator<<(double d)
 {
     static char buf[100];
     sprintf(buf, "%.2f", d);
-    WriteText(buf);
+    AppendText(buf);
     return *this;
 }
 
@@ -745,7 +772,7 @@ wxTextCtrl& wxTextCtrl::operator<<(int i)
 {
     static char buf[100];
     sprintf(buf, "%i", i);
-    WriteText(buf);
+    AppendText(buf);
     return *this;
 }
 
@@ -753,7 +780,7 @@ wxTextCtrl& wxTextCtrl::operator<<(long i)
 {
     static char buf[100];
     sprintf(buf, "%ld", i);
-    WriteText(buf);
+    AppendText(buf);
     return *this;
 }
 
@@ -763,7 +790,7 @@ wxTextCtrl& wxTextCtrl::operator<<(const char c)
 
     buf[0] = c;
     buf[1] = 0;
-    WriteText(buf);
+    AppendText(buf);
     return *this;
 }
 #endif