bool wxTextCtrl::IsEmpty() const
{
if ( IsMultiLine() )
- return gtk_text_buffer_get_char_count(m_buffer) != 0;
+ return gtk_text_buffer_get_char_count(m_buffer) == 0;
return wxTextCtrlBase::IsEmpty();
}
gtk_entry_set_text( GTK_ENTRY(m_text), buffer );
}
+ // if, for whatever reason, the callback wasn't called the expected number
+ // of times, still reset the flags to the default values
+ m_dontMarkDirty = false;
+ m_countUpdatesToIgnore = 0;
+
+
// GRG, Jun/2000: Changed this after a lot of discussion in
// the lists. wxWidgets 2.2 will have a set of flags to
// customize this behaviour.
{
if ( IsMultiLine() )
{
- GtkTextIter iter;
- gtk_text_buffer_get_iter_at_offset( m_buffer, &iter, 0 );
-
- // move forward by one display line until the end is reached
- int lineCount = 1;
- while ( gtk_text_view_forward_display_line(GTK_TEXT_VIEW(m_text), &iter) )
- {
- lineCount++;
- }
-
- // If the last character in the text buffer is a newline,
- // gtk_text_view_forward_display_line() will return false without that
- // line being counted. Must add one manually in that case.
- GtkTextIter lastCharIter;
- gtk_text_buffer_get_iter_at_offset
- (
- m_buffer,
- &lastCharIter,
- gtk_text_buffer_get_char_count(m_buffer) - 1
- );
- gchar lastChar = gtk_text_iter_get_char( &lastCharIter );
- if ( lastChar == wxT('\n') )
- lineCount++;
-
- return lineCount;
+ return gtk_text_buffer_get_line_count( m_buffer );
}
else // single line
{
g_object_ref(m_buffer);
GtkTextBuffer* buf_new = gtk_text_buffer_new(NULL);
gtk_text_view_set_buffer(GTK_TEXT_VIEW(m_text), buf_new);
- // gtk_text_view_set_buffer adds its own reference
- g_object_unref(buf_new);
+ // FIXME: this leaks the new buffer, since gtk_text_view_set_buffer
+ // adds its own reference, but unrefing it here can cause a crash later
}
}
}