// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
+#if wxUSE_TEXTCTRL
+
#include "wx/textctrl.h"
#ifndef WX_PRECOMP
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
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);
}
gtk_widget_show(m_text);
}
+ // We want to be notified about text changes.
+ if (multi_line)
+ {
+ g_signal_connect (m_buffer, "changed",
+ G_CALLBACK (gtk_text_changed_callback), this);
+ }
+ else
+ {
+ g_signal_connect (m_text, "changed",
+ G_CALLBACK (gtk_text_changed_callback), this);
+ }
+
if (!value.empty())
{
SetValue( value );
if ( style & (wxTE_RIGHT | wxTE_CENTRE) )
GTKSetJustification();
- // We want to be notified about text changes.
if (multi_line)
{
- g_signal_connect (m_buffer, "changed",
- G_CALLBACK (gtk_text_changed_callback), this);
-
- // .. and handle URLs on multi-line controls with wxTE_AUTO_URL style
+ // Handle URLs on multi-line controls with wxTE_AUTO_URL style
if (style & wxTE_AUTO_URL)
{
GtkTextIter start, end;
au_check_range(&start, &end);
}
}
- else
- {
- g_signal_connect (m_text, "changed",
- G_CALLBACK (gtk_text_changed_callback), this);
- }
-
+
g_signal_connect (m_text, "copy-clipboard",
G_CALLBACK (gtk_copy_clipboard_callback), this);
g_signal_connect (m_text, "cut-clipboard",
{
wxCHECK_MSG( m_text != NULL, wxEmptyString, wxT("invalid text ctrl") );
- wxString tmp;
if ( IsMultiLine() )
{
GtkTextIter start;
const gchar *text = gtk_entry_get_text( GTK_ENTRY(m_text) );
return wxGTK_CONV_BACK(text);
}
-
- return tmp;
}
wxFontEncoding wxTextCtrl::GetTextEncoding() const
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() )
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
{
return GetDefaultAttributesFromGTKWidget(gtk_entry_new, true);
}
+
+#endif // wxUSE_TEXTCTRL