mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
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
This commit is contained in:
parent
5b93525ce8
commit
a56bc9d933
1 changed files with 13 additions and 7 deletions
|
|
@ -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 (ctext, text);
|
||||
|
||||
g_object_notify (G_OBJECT (label), "text");
|
||||
}
|
||||
|
||||
clutter_text_set_text (CLUTTER_TEXT (priv->label), text);
|
||||
|
||||
g_object_notify (G_OBJECT (label), "text");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue