[gnome-shell] st_label_set_text: no-op if the text is unchanged
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] st_label_set_text: no-op if the text is unchanged
- Date: Mon, 11 Apr 2011 18:00:30 +0000 (UTC)
commit a56bc9d933c4e863854059f92346bf307ff18c6d
Author: Dan Winship <danw gnome org>
Date: Tue Apr 5 16:17:52 2011 -0400
st_label_set_text: no-op if the text is unchanged
If a caller sets an StLabel's text to what it already is (as, eg, the
clock menu does), do nothing. Unless the label is editable, in which
case, setting the text has a visible side effect (dropping the
selection), so we don't optimize that out.
https://bugzilla.gnome.org/show_bug.cgi?id=645648
src/st/st-label.c | 18 ++++++++++++------
1 files changed, 12 insertions(+), 6 deletions(-)
---
diff --git a/src/st/st-label.c b/src/st/st-label.c
index 1d9b13d..ce11304 100644
--- a/src/st/st-label.c
+++ b/src/st/st-label.c
@@ -376,21 +376,27 @@ st_label_set_text (StLabel *label,
const gchar *text)
{
StLabelPrivate *priv;
+ ClutterText *ctext;
g_return_if_fail (ST_IS_LABEL (label));
g_return_if_fail (text != NULL);
priv = label->priv;
+ ctext = CLUTTER_TEXT (priv->label);
- if (priv->text_shadow_material != COGL_INVALID_HANDLE)
+ if (clutter_text_get_editable (ctext) ||
+ g_strcmp0 (clutter_text_get_text (ctext), text) != 0)
{
- cogl_handle_unref (priv->text_shadow_material);
- priv->text_shadow_material = COGL_INVALID_HANDLE;
- }
+ if (priv->text_shadow_material != COGL_INVALID_HANDLE)
+ {
+ cogl_handle_unref (priv->text_shadow_material);
+ priv->text_shadow_material = COGL_INVALID_HANDLE;
+ }
- clutter_text_set_text (CLUTTER_TEXT (priv->label), text);
+ clutter_text_set_text (ctext, text);
- g_object_notify (G_OBJECT (label), "text");
+ g_object_notify (G_OBJECT (label), "text");
+ }
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]