]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
invalidate m_selection in DoRemovePage(), not in DeletePage() (replaces patch 998984)
[wxWidgets.git] / src / gtk / textctrl.cpp
index 50783a1b0decfa14b00e97d39a9808aa7ea425b4..94718d2f35d306605fa910cc3c1b76b3dacfb3ab 100644 (file)
@@ -593,6 +593,12 @@ void wxTextCtrl::WriteText( const wxString &text )
 #else
         wxCharBuffer buffer( wxConvUTF8.cWC2MB( wxConvLocal.cWX2WC( text ) ) );
 #endif
+        if ( !buffer )
+        {
+            // what else can we do? at least don't crash...
+            return;
+        }
+
         GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) );
 
         // TODO: Call whatever is needed to delete the selection.
@@ -815,14 +821,19 @@ void wxTextCtrl::SetInsertionPoint( long pos )
 {
     wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") );
 
-    if (m_windowStyle & wxTE_MULTILINE)
+    if ( IsMultiLine() )
     {
 #ifdef __WXGTK20__
         GtkTextBuffer *text_buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(m_text) );
         GtkTextIter iter;
         gtk_text_buffer_get_iter_at_offset( text_buffer, &iter, pos );
         gtk_text_buffer_place_cursor( text_buffer, &iter );
-#else
+        gtk_text_view_scroll_mark_onscreen
+        (
+            GTK_TEXT_VIEW(m_text),
+            gtk_text_buffer_get_insert( text_buffer )
+        );
+#else // GTK+ 1.x
         gtk_signal_disconnect_by_func( GTK_OBJECT(m_text),
           GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this);
 
@@ -839,7 +850,7 @@ void wxTextCtrl::SetInsertionPoint( long pos )
 
         // bring editable's cursor uptodate. Bug in GTK.
         SET_EDITABLE_POS(m_text, gtk_text_get_point( GTK_TEXT(m_text) ));
-#endif
+#endif // GTK+ 2/1
     }
     else
     {
@@ -1424,12 +1435,14 @@ void wxTextCtrl::ChangeFontGlobally()
     // possible!
     //
     // TODO: it can be implemented much more efficiently for GTK2
-    wxASSERT_MSG( (m_windowStyle & wxTE_MULTILINE)
 #ifndef __WXGTK20__
-                    && m_updateFont
-#endif // GTK+ 1.x
-                    ,
+    wxASSERT_MSG( (m_windowStyle & wxTE_MULTILINE) && m_updateFont,
+
                   _T("shouldn't be called for single line controls") );
+#else
+    wxASSERT_MSG( (m_windowStyle & wxTE_MULTILINE),
+                  _T("shouldn't be called for single line controls") );
+#endif
 
     wxString value = GetValue();
     if ( !value.IsEmpty() )