[clutter/clutter-1.14] clutter-text: prevent text buffer creation if not needed



commit fe991ac7c0e257e19d34aa3b9800323aa828970a
Author: Lionel Landwerlin <llandwerlin gmail com>
Date:   Tue Jul 9 16:46:35 2013 +0100

    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
    (cherry picked from commit eed94960562693e489354afb2a78a355301515fa)
    Signed-off-by: Emmanuele Bassi <ebassi gnome org>

 clutter/clutter-text.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c
index 0cfb63f..b5d1198 100644
--- a/clutter/clutter-text.c
+++ b/clutter/clutter-text.c
@@ -341,6 +341,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)
 {
@@ -348,6 +360,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);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]