Implement Text:max-length

The :max-length property establishes the maximum available
length for the Text actor's contents, in characters.
This commit is contained in:
Emmanuele Bassi 2008-12-11 11:54:07 +00:00
parent 191d1aebff
commit d10f7127a2

View File

@ -168,7 +168,8 @@ enum
PROP_SELECTABLE,
PROP_ACTIVATABLE,
PROP_TEXT_VISIBLE,
PROP_INVISIBLE_CHAR
PROP_INVISIBLE_CHAR,
PROP_MAX_LENGTH
};
enum
@ -667,6 +668,10 @@ clutter_text_set_property (GObject *gobject,
clutter_text_set_invisible_char (self, g_value_get_uint (value));
break;
case PROP_MAX_LENGTH:
clutter_text_set_max_length (self, g_value_get_int (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
@ -734,6 +739,10 @@ clutter_text_get_property (GObject *gobject,
g_value_set_uint (value, priv->priv_char);
break;
case PROP_MAX_LENGTH:
g_value_set_int (value, priv->max_length);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
}
@ -1373,6 +1382,13 @@ clutter_text_class_init (ClutterTextClass *klass)
CLUTTER_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_INVISIBLE_CHAR, pspec);
pspec = g_param_spec_int ("max-length",
"Max Length",
"Maximum length of the text inside the actor",
-1, G_MAXINT, 0,
CLUTTER_PARAM_READWRITE);
g_object_class_install_property (gobject_class, PROP_MAX_LENGTH, pspec);
/**
* ClutterText::text-changed:
* @actor: the actor which received the event
@ -2783,7 +2799,6 @@ clutter_text_get_invisible_char (ClutterText *self)
return self->priv->priv_char;
}
#if 0
/**
* clutter_text_set_max_length:
* @self: a #ClutterText
@ -2794,56 +2809,53 @@ clutter_text_get_invisible_char (ClutterText *self)
* current contents are longer than the given length, then they will be
* truncated to fit.
*
* Since: 0.4
* Since: 1.0
*/
void
clutter_text_set_max_length (ClutterText *self,
gint max)
gint max)
{
ClutterTextPrivate *priv;
gchar *new = NULL;
g_return_if_fail (CLUTTER_IS_TEXT (entry));
g_return_if_fail (CLUTTER_IS_TEXT (self));
priv = self->priv;
if (priv->max_length != max)
{
g_object_ref (entry);
if (max < 0)
max = g_utf8_strlen (priv->text, -1);
priv->max_length = max;
new = g_strdup (priv->text);
clutter_text_set_text (entry, new);
clutter_text_set_text (self, new);
g_free (new);
g_object_notify (G_OBJECT (entry), "max-length");
g_object_unref (entry);
g_object_notify (G_OBJECT (self), "max-length");
}
}
/**
* clutter_text_get_max_length:
* @entry: a #ClutterText
* @self: a #ClutterText
*
* Gets the maximum length of text that can be set into a text actor.
*
* Gets the maximum length of text that can be set into @entry.
* See clutter_text_set_max_length().
*
* Return value: the maximum number of characters.
*
* Since: 0.4
* Since: 1.0
*/
gint
clutter_text_get_max_length (ClutterText *self)
{
g_return_val_if_fail (CLUTTER_IS_TEXT (entry), -1);
g_return_val_if_fail (CLUTTER_IS_TEXT (self), 0);
return self->priv->max_length;
}
#endif
void
clutter_text_insert_unichar (ClutterText *self,