diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c index 0ce2c3adf..1f5c3a4d7 100644 --- a/clutter/clutter-text.c +++ b/clutter/clutter-text.c @@ -344,6 +344,18 @@ clutter_text_clear_selection (ClutterText *self) } } +static gboolean +clutter_text_is_empty (ClutterText *self) +{ + if (self->priv->buffer == NULL) + return TRUE; + + if (clutter_text_buffer_get_length (self->priv->buffer) == 0) + return TRUE; + + return FALSE; +} + static gchar * clutter_text_get_display_text (ClutterText *self) { @@ -351,6 +363,13 @@ clutter_text_get_display_text (ClutterText *self) ClutterTextBuffer *buffer; const gchar *text; + /* short-circuit the case where the buffer is unset or it's empty, + * to avoid creating a pointless TextBuffer and emitting + * notifications with it + */ + if (clutter_text_is_empty (self)) + return g_strdup (""); + buffer = get_buffer (self); text = clutter_text_buffer_get_text (buffer);