X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6493aacaeb7b22b9fa35c559f7753e9fec0da71f..8ec09aacc6d8a0ef8c8e3910c46258bc20f0734b:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 53c0f69396..73b66c7677 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -11,9 +11,13 @@ #include "wx/wxprec.h" #include "wx/textctrl.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/log.h" + +#ifndef WX_PRECOMP + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/utils.h" +#endif + #include "wx/math.h" #include "wx/settings.h" #include "wx/panel.h" @@ -778,9 +782,14 @@ void wxTextCtrl::SetValue( const wxString &value ) gtk_text_buffer_set_text( m_buffer, buffer, strlen(buffer) ); } - else + else // single line { - gtk_entry_set_text( GTK_ENTRY(m_text), wxGTK_CONV( value ) ); + // gtk_entry_set_text() emits two "changed" signals because internally + // it calls gtk_editable_delete_text() and gtk_editable_insert_text() + // but we want to have only one event + IgnoreNextTextUpdate(); + + gtk_entry_set_text( GTK_ENTRY(m_text), wxGTK_CONV(value) ); } // GRG, Jun/2000: Changed this after a lot of discussion in @@ -812,7 +821,14 @@ void wxTextCtrl::WriteText( const wxString &text ) if ( m_windowStyle & wxTE_MULTILINE ) { - // TODO: Call whatever is needed to delete the selection. + // First remove the selection if there is one + // TODO: Is there an easier GTK specific way to do this? + long from, to; + GetSelection(&from, &to); + if (from != to) + Remove(from, to); + + // Insert the text wxGtkTextInsert( m_text, m_buffer, m_defaultStyle, buffer ); GtkAdjustment *adj = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(m_widget) );