[gnome-shell] fix issues with hint text
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] fix issues with hint text
- Date: Mon, 8 Mar 2010 18:27:30 +0000 (UTC)
commit d593877548cc80db2bb0ed0795b652a37851172c
Author: Thomas Wood <thomas wood intel com>
Date: Tue Oct 20 14:22:17 2009 +0100
fix issues with hint text
Add a "hint_visible" private variable to keep track of when the hint text
is visible. Use this to determine whether to return the text from the
internal ClutterText or whether to return an empty string.
Fixes: http://bugzilla.moblin.org/show_bug.cgi?id=6837
http://bugzilla.moblin.org/show_bug.cgi?id=6836
https://bugzilla.gnome.org/show_bug.cgi?id=611095
src/st/st-entry.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
---
diff --git a/src/st/st-entry.c b/src/st/st-entry.c
index 1c3e3ae..77e61ab 100644
--- a/src/st/st-entry.c
+++ b/src/st/st-entry.c
@@ -97,6 +97,8 @@ struct _StEntryPrivate
ClutterActor *secondary_icon;
gfloat spacing;
+
+ gboolean hint_visible;
};
static guint entry_signals[LAST_SIGNAL] = { 0, };
@@ -375,9 +377,10 @@ clutter_text_focus_in_cb (ClutterText *text,
StEntryPrivate *priv = ST_ENTRY_PRIV (actor);
/* remove the hint if visible */
- if (priv->hint
- && !strcmp (clutter_text_get_text (text), priv->hint))
+ if (priv->hint && priv->hint_visible)
{
+ priv->hint_visible = FALSE;
+
clutter_text_set_text (text, "");
}
st_widget_set_style_pseudo_class (ST_WIDGET (actor), "focus");
@@ -393,6 +396,8 @@ clutter_text_focus_out_cb (ClutterText *text,
/* add a hint if the entry is empty */
if (priv->hint && !strcmp (clutter_text_get_text (text), ""))
{
+ priv->hint_visible = TRUE;
+
clutter_text_set_text (text, priv->hint);
st_widget_set_style_pseudo_class (ST_WIDGET (actor), "indeterminate");
}
@@ -705,7 +710,10 @@ st_entry_get_text (StEntry *entry)
{
g_return_val_if_fail (ST_IS_ENTRY (entry), NULL);
- return clutter_text_get_text (CLUTTER_TEXT (entry->priv->entry));
+ if (entry->priv->hint_visible)
+ return "";
+ else
+ return clutter_text_get_text (CLUTTER_TEXT (entry->priv->entry));
}
/**
@@ -731,6 +739,7 @@ st_entry_set_text (StEntry *entry,
&& !HAS_FOCUS (priv->entry))
{
text = priv->hint;
+ priv->hint_visible = TRUE;
st_widget_set_style_pseudo_class (ST_WIDGET (entry), "indeterminate");
}
else
@@ -739,6 +748,8 @@ st_entry_set_text (StEntry *entry,
st_widget_set_style_pseudo_class (ST_WIDGET (entry), "focus");
else
st_widget_set_style_pseudo_class (ST_WIDGET (entry), NULL);
+
+ priv->hint_visible = FALSE;
}
clutter_text_set_text (CLUTTER_TEXT (priv->entry), text);
@@ -786,8 +797,11 @@ st_entry_set_hint_text (StEntry *entry,
priv->hint = g_strdup (text);
- if (!strcmp (clutter_text_get_text (CLUTTER_TEXT (priv->entry)), ""))
+ if (!strcmp (clutter_text_get_text (CLUTTER_TEXT (priv->entry)), "")
+ && !HAS_FOCUS (priv->entry))
{
+ priv->hint_visible = TRUE;
+
clutter_text_set_text (CLUTTER_TEXT (priv->entry), priv->hint);
st_widget_set_style_pseudo_class (ST_WIDGET (entry), "indeterminate");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]