Add ClutterText::set_selection()
authorEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 16 Dec 2008 12:41:20 +0000 (12:41 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 16 Dec 2008 12:41:20 +0000 (12:41 +0000)
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.

clutter/clutter-text.c
clutter/clutter-text.h

index d9c8137..4d70c2f 100644 (file)
@@ -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
  *
index 3269479..bd63478 100644 (file)
@@ -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);