X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a3f5ad0f57884c7cd5c5016cdc292ed53d328f3..86a41088fde89a7e387145c4872eecd7346ac776:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 26e65214af..9517877940 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -10,6 +10,8 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_TEXTCTRL + #include "wx/textctrl.h" #ifndef WX_PRECOMP @@ -1016,11 +1018,14 @@ void wxTextCtrl::DoSetValue( const wxString &value, int flags ) return; } + if ( !(flags & SetValue_SendEvent) ) + { + g_signal_handlers_block_by_func(GetTextObject(), + (gpointer)gtk_text_changed_callback, this); + } + if ( IsMultiLine() ) { - g_signal_handlers_disconnect_by_func (m_buffer, - (gpointer) gtk_text_changed_callback, this); - gtk_text_buffer_set_text( m_buffer, buffer, strlen(buffer) ); if ( !m_defaultStyle.IsDefault() ) @@ -1030,19 +1035,16 @@ void wxTextCtrl::DoSetValue( const wxString &value, int flags ) wxGtkTextApplyTagsFromAttr(m_widget, m_buffer, m_defaultStyle, &start, &end); } - - g_signal_connect (m_buffer, "changed", - G_CALLBACK (gtk_text_changed_callback), this); } - else + else // single line { - g_signal_handlers_disconnect_by_func (m_text, - (gpointer) gtk_text_changed_callback, this); - gtk_entry_set_text( GTK_ENTRY(m_text), buffer ); - - g_signal_connect (m_text, "changed", - G_CALLBACK (gtk_text_changed_callback), this); + } + + if ( !(flags & SetValue_SendEvent) ) + { + g_signal_handlers_unblock_by_func(GetTextObject(), + (gpointer)gtk_text_changed_callback, this); } // This was added after discussion on the list @@ -1996,3 +1998,5 @@ wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true); } + +#endif // wxUSE_TEXTCTRL