From eed94960562693e489354afb2a78a355301515fa Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Tue, 9 Jul 2013 16:46:35 +0100 Subject: [PATCH] clutter-text: prevent text buffer creation if not needed When allocating or asking for preferred width/height on a ClutterText, it can notify a change on buffer/text/max-length if no text has been set. https://bugzilla.gnome.org/show_bug.cgi?id=703882 --- clutter/clutter-text.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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);