[text] Expose position_to_coords()
authorEmmanuele Bassi <ebassi@linux.intel.com>
Wed, 6 May 2009 16:18:12 +0000 (17:18 +0100)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Wed, 6 May 2009 16:18:12 +0000 (17:18 +0100)
The clutter_text_position_to_coords() is useful for ClutterText
subclasses.

See bug:

  http://bugzilla.openedhand.com/show_bug.cgi?id=1521

Based on a patch by: Raymond Liu <raymond.liu@intel.com>

clutter/clutter-text.c
clutter/clutter-text.h
doc/reference/clutter/clutter-sections.txt

index b0b1a19..0f56462 100644 (file)
@@ -469,7 +469,7 @@ clutter_text_coords_to_position (ClutterText *text,
   return index_ + trailing;
 }
 
-/*
+/**
  * clutter_text_position_to_coords:
  * @self: a #ClutterText
  * @position: position in characters
@@ -480,19 +480,28 @@ clutter_text_coords_to_position (ClutterText *text,
  * Retrieves the coordinates of the given @position.
  *
  * Return value: %TRUE if the conversion was successful
+ *
+ * Since: 1.0
  */
-static gboolean
+gboolean
 clutter_text_position_to_coords (ClutterText *self,
                                  gint         position,
                                  gfloat      *x,
                                  gfloat      *y,
                                  gfloat      *line_height)
 {
-  ClutterTextPrivate *priv = self->priv;
+  ClutterTextPrivate *priv;
   PangoRectangle rect;
   gint password_char_bytes = 1;
   gint index_;
 
+  g_return_val_if_fail (CLUTTER_IS_TEXT (self), FALSE);
+
+  priv = self->priv;
+
+  if (position < -1 || position > priv->n_chars)
+    return FALSE;
+
   if (priv->password_char != 0)
     password_char_bytes = g_unichar_to_utf8 (priv->password_char, NULL);
 
@@ -527,7 +536,6 @@ clutter_text_position_to_coords (ClutterText *self,
   if (line_height)
     *line_height = CLUTTER_UNITS_FROM_PANGO_UNIT (rect.height);
 
-  /* FIXME: should return false if coords were outside text */
   return TRUE;
 }
 
index 01b058c..f34ff96 100644 (file)
@@ -198,6 +198,11 @@ void                  clutter_text_set_single_line_mode (ClutterText        *sel
 gboolean              clutter_text_get_single_line_mode (ClutterText        *self);
 
 gboolean              clutter_text_activate             (ClutterText        *self);
+gboolean              clutter_text_position_to_coords   (ClutterText        *self,
+                                                         gint                position,
+                                                         gfloat             *x,
+                                                         gfloat             *y,
+                                                         gfloat             *line_height);
 
 G_END_DECLS
 
index e8c8a46..af7e7fe 100644 (file)
@@ -1599,6 +1599,7 @@ clutter_text_get_cursor_size
 
 <SUBSECTION>
 clutter_text_activate
+clutter_text_position_to_coords
 
 <SUBSECTION Standard>
 CLUTTER_IS_TEXT