X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/28fcfbfe09c79c06502d2929d5c11ab35996c19f..58fda45507ec59ab5a6e89436ccff29023db9871:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 1b08ecc0a8..8d403c0228 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -251,10 +251,10 @@ static void wxGtkTextApplyTagsFromAttr(GtkWidget *text, for (size_t i = 0; i < tabs.GetCount(); i++) tagname += wxString::Format(_T(" %d"), tabs[i]); - const wxWX2MBbuf buf = tagname.mb_str(wxConvUTF8); + const wxWX2MBbuf buftag = tagname.utf8_str(); tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ), - buf ); + buftag ); if (!tag) { // Factor to convert from 1/10th of a mm into pixels @@ -270,7 +270,7 @@ static void wxGtkTextApplyTagsFromAttr(GtkWidget *text, PangoTabArray* tabArray = pango_tab_array_new(tabs.GetCount(), TRUE); for (size_t i = 0; i < tabs.GetCount(); i++) pango_tab_array_set_tab(tabArray, i, PANGO_TAB_LEFT, (gint)(tabs[i] * factor)); - tag = gtk_text_buffer_create_tag( text_buffer, buf, + tag = gtk_text_buffer_create_tag( text_buffer, buftag, "tabs", tabArray, NULL ); pango_tab_array_free(tabArray); } @@ -951,7 +951,6 @@ wxString wxTextCtrl::GetValue() const { wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") ); - wxString tmp; if ( IsMultiLine() ) { GtkTextIter start; @@ -967,8 +966,6 @@ wxString wxTextCtrl::GetValue() const const gchar *text = gtk_entry_get_text( GTK_ENTRY(m_text) ); return wxGTK_CONV_BACK(text); } - - return tmp; } wxFontEncoding wxTextCtrl::GetTextEncoding() const @@ -1018,9 +1015,12 @@ void wxTextCtrl::DoSetValue( const wxString &value, int flags ) return; } - void* blockWidget = IsMultiLine() ? (void*)m_buffer : (void*)m_text; - g_signal_handlers_block_by_func(blockWidget, - (gpointer)gtk_text_changed_callback, this); + if ( !(flags & SetValue_SendEvent) ) + { + g_signal_handlers_block_by_func(GetTextObject(), + (gpointer)gtk_text_changed_callback, this); + } + if ( IsMultiLine() ) { gtk_text_buffer_set_text( m_buffer, buffer, strlen(buffer) ); @@ -1033,12 +1033,16 @@ void wxTextCtrl::DoSetValue( const wxString &value, int flags ) &start, &end); } } - else + else // single line { gtk_entry_set_text( GTK_ENTRY(m_text), buffer ); } - g_signal_handlers_unblock_by_func(blockWidget, - (gpointer)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 SetInsertionPoint(0);