From: Emmanuele Bassi Date: Tue, 16 Dec 2008 12:41:20 +0000 (+0000) Subject: Add ClutterText::set_selection() X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a3fbdb594905cec0f822150b48c56837bc23dd73;p=profile%2Fivi%2Fclutter.git Add ClutterText::set_selection() The clutter_text_set_selection() function is a convenience method for setting the cursor position and the selection boundary to a given position in a single call, with sanity checks for the positions. --- diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c index d9c8137..4d70c2f 100644 --- a/clutter/clutter-text.c +++ b/clutter/clutter-text.c @@ -2384,6 +2384,44 @@ clutter_text_get_cursor_color (ClutterText *self, } /** + * clutter_text_set_selection: + * @self: a #ClutterText + * @start_pos: start of the selection, in characters + * @end_pos: end of the selection, in characters + * + * Selects the region of text between @start_pos and @end_pos. + * + * This function changes the position of the cursor to match + * @start_pos and the selection bound to match @end_pos. + * + * Since: 1.0 + */ +void +clutter_text_set_selection (ClutterText *self, + gssize start_pos, + gssize end_pos) +{ + ClutterTextPrivate *priv; + + g_return_if_fail (CLUTTER_IS_TEXT (self)); + + priv = self->priv; + + if (end_pos < 0) + end_pos = priv->n_chars; + + start_pos = MIN (priv->n_chars, start_pos); + end_pos = MIN (priv->n_chars, end_pos); + + g_object_freeze_notify (G_OBJECT (self)); + + clutter_text_set_cursor_position (self, start_pos); + clutter_text_set_selection_bound (self, end_pos); + + g_object_thaw_notify (G_OBJECT (self)); +} + +/** * clutter_text_get_selection: * @self: a #ClutterText * diff --git a/clutter/clutter-text.h b/clutter/clutter-text.h index 3269479..bd63478 100644 --- a/clutter/clutter-text.h +++ b/clutter/clutter-text.h @@ -177,6 +177,9 @@ gboolean clutter_text_get_selectable (ClutterText *self void clutter_text_set_selection_bound (ClutterText *self, gint selection_bound); gint clutter_text_get_selection_bound (ClutterText *self); +void clutter_text_set_selection (ClutterText *self, + gssize start_pos, + gssize end_pos); gchar * clutter_text_get_selection (ClutterText *self); void clutter_text_set_text_visible (ClutterText *self, gboolean visible);