allow you to get geom of anchors.

SVN revision: 37039
This commit is contained in:
Carsten Haitzler 2008-10-24 00:44:26 +00:00
parent f4b0bbe7b8
commit 1d8a7e4dd3
4 changed files with 43 additions and 5 deletions

View File

@ -238,6 +238,7 @@ extern "C" {
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);

View File

@ -34,7 +34,7 @@ struct _Entry
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 @@ _anchors_update(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
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);
@ -1284,6 +1285,22 @@ _edje_entry_set_cursor_end(Edje_Real_Part *rp)
_curs_end(en->cursor, rp->object, en);
}
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)
{
@ -1296,9 +1313,7 @@ _edje_entry_anchors_list(Edje_Real_Part *rp)
{
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));
}

View File

@ -1245,6 +1245,7 @@ void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text);
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);

View File

@ -960,7 +960,7 @@ edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *tex
/** 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 @@ edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part)
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