From: Enlightenment S. <no-...@en...> - 2008-10-24 00:44:32
|
Log: allow you to get geom of anchors. Author: raster Date: 2008-10-23 17:44:26 -0700 (Thu, 23 Oct 2008) New Revision: 37039 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_entry.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2008-10-24 00:43:24 UTC (rev 37038) +++ trunk/edje/src/lib/Edje.h 2008-10-24 00:44:26 UTC (rev 37039) @@ -238,6 +238,7 @@ EAPI const char *edje_object_part_text_selection_get(const Evas_Object *obj, const char *part); EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); EAPI Eina_List *edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part); + EAPI Eina_List *edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor); EAPI void edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow); Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2008-10-24 00:43:24 UTC (rev 37038) +++ trunk/edje/src/lib/edje_entry.c 2008-10-24 00:44:26 UTC (rev 37039) @@ -34,7 +34,7 @@ struct _Sel { Evas_Textblock_Rectangle rect; - Evas_Object *obj_fg, *obj_bg, *obj; + Evas_Object *obj_fg, *obj_bg, *obj, *sobj; }; struct _Anchor @@ -517,6 +517,7 @@ Evas_Textblock_Rectangle *r; r = range->data; + *(&(sel->rect)) = *r; if (sel->obj_bg) { evas_object_move(sel->obj_bg, x + r->x, y + r->y); @@ -1285,6 +1286,22 @@ } const Eina_List * +_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor) +{ + Entry *en = rp->entry_data; + Eina_List *l; + Anchor *an; + + if (!en) return; + EINA_LIST_FOREACH(en->anchors, l, an) + { + if (!strcmp(anchor, an->name)) + return an->sel; + } + return NULL; +} + +const Eina_List * _edje_entry_anchors_list(Edje_Real_Part *rp) { Entry *en = rp->entry_data; @@ -1296,9 +1313,7 @@ { EINA_LIST_FOREACH(en->anchors, l, an) { - char *n; - - n = an->name; + const char *n = an->name; if (!n) n = ""; anchors = eina_list_append(anchors, strdup(n)); } Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2008-10-24 00:43:24 UTC (rev 37038) +++ trunk/edje/src/lib/edje_private.h 2008-10-24 00:44:26 UTC (rev 37039) @@ -1245,6 +1245,7 @@ void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text); void _edje_entry_set_cursor_start(Edje_Real_Part *rp); void _edje_entry_set_cursor_end(Edje_Real_Part *rp); +const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor); const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp); void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2008-10-24 00:43:24 UTC (rev 37038) +++ trunk/edje/src/lib/edje_util.c 2008-10-24 00:44:26 UTC (rev 37039) @@ -960,7 +960,7 @@ /** Returns a list of char * anchor names * @param obj A valid Evas_Object handle * @param part The part name - * @return The list of anchors + * @return The list of anchors (const char *) */ EAPI Eina_List * edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part) @@ -977,6 +977,27 @@ return NULL; } +/** Returns a list of Evas_Textblock_Rectangle * anchor rectangles + * @param obj A valid Evas_Object handle + * @param part The part name + * @param anchor The anchor name + * @return The list of anchor rects (const Evas_Textblock_Rectangle *) + */ +EAPI Eina_List * +edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_anchor_geometry_get(rp, anchor); + return NULL; +} + /** Returns the cursor geometry of the part relative to the edje object * @param obj A valid Evas_Object handle * @param part The part name |