X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ce52aa64b0d54ec3eb5adbbe1c7c825149d3f41..acb69c13429f8c1d0392bb6e9caed2ca43f2472a:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 50783a1b0d..94718d2f35 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -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() )