diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c index d9c813790..4d70c2fc5 100644 --- a/clutter/clutter-text.c +++ b/clutter/clutter-text.c @@ -2383,6 +2383,44 @@ clutter_text_get_cursor_color (ClutterText *self, *color = priv->cursor_color; } +/** + * 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 326947955..bd63478ee 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);