From 4bf9ee3df3802567576326ca7e54bd041b4fff31 Mon Sep 17 00:00:00 2001 From: Brett Nash Date: Tue, 7 Sep 2010 06:56:16 +0000 Subject: [PATCH] Merge branch 'elmdnd' Conflicts: trunk/TMP/st/elementary/.gitignore SVN revision: 51935 --- .../src/lib/ecore_x/xlib/ecore_x_drawable.c | 2 +- .../src/lib/ecore_x/xlib/ecore_x_selection.c | 3 +- .../src/lib/ecore_x/xlib/ecore_x_window.c | 7 +++ legacy/edje/.gitignore | 39 ++++++++++++++ legacy/edje/src/lib/Edje.h | 25 +++++---- legacy/edje/src/lib/edje_cache.c | 4 -- legacy/edje/src/lib/edje_entry.c | 34 ++++++++++-- legacy/edje/src/lib/edje_private.h | 1 + legacy/edje/src/lib/edje_util.c | 53 +++++++++++++++---- 9 files changed, 139 insertions(+), 29 deletions(-) create mode 100644 legacy/edje/.gitignore diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_drawable.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_drawable.c index 00a53aa299..90bda18a2e 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_drawable.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_drawable.c @@ -12,7 +12,7 @@ /** * Retrieves the geometry of the given drawable. - * @param d The given drawable. +* @param d The given drawable. * @param x Pointer to an integer into which the X position is to be stored. * @param y Pointer to an integer into which the Y position is to be stored. * @param w Pointer to an integer into which the width is to be stored. diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_selection.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_selection.c index 807ef9ae5d..da9a6d6687 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_selection.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_selection.c @@ -719,7 +719,7 @@ _ecore_x_selection_parse(const char *target, void *data, int size, int format) if (!strcmp(prs->target, target)) { sel = prs->parse(target, data, size, format); - return sel; + if (sel) return sel; } } @@ -851,6 +851,7 @@ _ecore_x_selection_parser_text(const char *target __UNUSED__, sel->text = (char *)data; ECORE_X_SELECTION_DATA(sel)->length = size; ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_TEXT; + ECORE_X_SELECTION_DATA(sel)->data = data; ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_text_free; return sel; } /* _ecore_x_selection_parser_text */ diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_window.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_window.c index 162856480c..8308c3f336 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_window.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_window.c @@ -657,6 +657,13 @@ ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h) /** * Retrieves the geometry of the given window. + * + * Note that the x & y coordingates are relative to your parent. In + * particular for reparenting window managers - relative to you window border. + * If you want screen coordinates either walk the window tree to the root, + * else for ecore_evas applications see ecore_evas_geometry_get(). Elementary + * applications can use elm_win_screen_position_get(). + * * @param win The given window. * @param x Pointer to an integer in which the X position is to be stored. * @param y Pointer to an integer in which the Y position is to be stored. diff --git a/legacy/edje/.gitignore b/legacy/edje/.gitignore new file mode 100644 index 0000000000..a05bdc18df --- /dev/null +++ b/legacy/edje/.gitignore @@ -0,0 +1,39 @@ +*.o +*.lo +*.la +.deps +.libs +.*.swp +Makefile +Makefile.in +aclocal.m4 +autom4te.cache +compile +config.guess +config.h +config.h.in +config.h.in~ +config.log +config.status +config.sub +configure +cscope.out +depcomp +doc/edje.dox +edje.pc +edje.spec +install-sh +libtool +ltmain.sh +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 +missing +src/bin/edje_cc +src/bin/edje_convert +src/bin/edje_decc +src/bin/edje_player +stamp-h1 +tags diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index afd51569f4..881b7f6456 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -164,7 +164,11 @@ enum _Edje_Cursor { EDJE_CURSOR_MAIN, EDJE_CURSOR_SELECTION_BEGIN, - EDJE_CURSOR_SELECTION_END + EDJE_CURSOR_SELECTION_END, + EDJE_CURSOR_PREEDIT_START, + EDJE_CURSOR_PREEDIT_END, + EDJE_CURSOR_USER, + EDJE_CURSOR_USER_EXTRA, // more later }; typedef enum _Edje_Cursor Edje_Cursor; @@ -515,15 +519,16 @@ typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Mess EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part); EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part); - EAPI Eina_Bool edje_object_part_text_cursor_next (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_prev (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_up (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI Eina_Bool edje_object_part_text_cursor_down (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_begin_set (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_end_set (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_copy (const Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); - EAPI void edje_object_part_text_cursor_line_begin_set (const Evas_Object *obj, const char *part, Edje_Cursor cur); - EAPI void edje_object_part_text_cursor_line_end_set (const Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); + EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y); EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); EAPI const char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c index 7fc42edbf6..b95428d0dc 100644 --- a/legacy/edje/src/lib/edje_cache.c +++ b/legacy/edje/src/lib/edje_cache.c @@ -544,8 +544,6 @@ edje_file_cache_get(void) /** * @brief Clean the file cache. * - * @return The file cache size. - * * This function cleans the file cache entries, but keeps this cache's * size to the last value set. * @@ -615,8 +613,6 @@ edje_collection_cache_get(void) /** * @brief Clean the collection cache. * - * @return The collection cache size. - * * This function cleans the collection cache, but keeps this cache's * size to the last value set. * diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 0a92ff5d07..ba2685f259 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -44,6 +44,8 @@ struct _Entry Evas_Object *cursor_fg; Evas_Textblock_Cursor *cursor; Evas_Textblock_Cursor *sel_start, *sel_end; + Evas_Textblock_Cursor *cursor_user, *cursor_user_extra; + Evas_Textblock_Cursor *preedit_start, *preedit_end; Eina_List *sel; Eina_List *anchors; Eina_List *anchorlist; @@ -2152,17 +2154,31 @@ _cursor_get(Edje_Real_Part *rp, Edje_Cursor cur) { Entry *en = rp->entry_data; if (!en) return NULL; + switch (cur) { case EDJE_CURSOR_MAIN: return en->cursor; - break; case EDJE_CURSOR_SELECTION_BEGIN: return en->sel_start; - break; case EDJE_CURSOR_SELECTION_END: return en->sel_end; - break; + case EDJE_CURSOR_PREEDIT_START: + if (!en->preedit_start) + en->preedit_start = evas_object_textblock_cursor_new(rp->object); + return en->preedit_start; + case EDJE_CURSOR_PREEDIT_END: + if (!en->preedit_end) + en->preedit_end = evas_object_textblock_cursor_new(rp->object); + return en->preedit_end; + case EDJE_CURSOR_USER: + if (!en->cursor_user) + en->cursor_user = evas_object_textblock_cursor_new(rp->object); + return en->cursor_user; + case EDJE_CURSOR_USER_EXTRA: + if (!en->cursor_user_extra) + en->cursor_user_extra = evas_object_textblock_cursor_new(rp->object); + return en->cursor_user_extra; default: break; } @@ -2418,6 +2434,16 @@ _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur) _edje_entry_real_part_configure(rp); } + +Eina_Bool +_edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, + Evas_Coord x, Evas_Coord y) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + return evas_textblock_cursor_char_coord_set(c, x, y); +} + Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur) { @@ -2603,3 +2629,5 @@ _edje_entry_imf_event_delete_surrounding_cb(void *data, int type __UNUSED__, voi return ECORE_CALLBACK_DONE; } #endif + +/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 1a6e5c8fb0..94262c2e63 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -1731,6 +1731,7 @@ void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur); void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur); void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur); void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, int x, int y); Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur); Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur); const char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur); diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 7e49f2aec8..8214c5767f 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -1854,7 +1854,7 @@ edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) * @param part The part name */ EAPI Eina_Bool -edje_object_part_text_cursor_next(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1877,7 +1877,7 @@ edje_object_part_text_cursor_next(const Evas_Object *obj, const char *part, Edje * @param part The part name */ EAPI Eina_Bool -edje_object_part_text_cursor_prev(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1900,7 +1900,7 @@ edje_object_part_text_cursor_prev(const Evas_Object *obj, const char *part, Edje * @param part The part name */ EAPI Eina_Bool -edje_object_part_text_cursor_up(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1923,7 +1923,7 @@ edje_object_part_text_cursor_up(const Evas_Object *obj, const char *part, Edje_C * @param part The part name */ EAPI Eina_Bool -edje_object_part_text_cursor_down(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1946,7 +1946,7 @@ edje_object_part_text_cursor_down(const Evas_Object *obj, const char *part, Edje * @param part The part name */ EAPI void -edje_object_part_text_cursor_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1968,7 +1968,7 @@ edje_object_part_text_cursor_begin_set(const Evas_Object *obj, const char *part, * @param part The part name */ EAPI void -edje_object_part_text_cursor_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -1990,7 +1990,7 @@ edje_object_part_text_cursor_end_set(const Evas_Object *obj, const char *part, E * @param part The part name */ EAPI void -edje_object_part_text_cursor_copy(const Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) +edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) { Edje *ed; Edje_Real_Part *rp; @@ -2012,7 +2012,7 @@ edje_object_part_text_cursor_copy(const Evas_Object *obj, const char *part, Edje * @param part The part name */ EAPI void -edje_object_part_text_cursor_line_begin_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -2034,7 +2034,7 @@ edje_object_part_text_cursor_line_begin_set(const Evas_Object *obj, const char * * @param part The part name */ EAPI void -edje_object_part_text_cursor_line_end_set(const Evas_Object *obj, const char *part, Edje_Cursor cur) +edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) { Edje *ed; Edje_Real_Part *rp; @@ -2049,6 +2049,36 @@ edje_object_part_text_cursor_line_end_set(const Evas_Object *obj, const char *pa } } +/** + * Position the given cursor to a X,Y position. + * + * This is frequently used with the user cursor. + * + * @param obj An Edje object. + * @param part The part containing the object. + * @param cur The cursor to adjust. + * @param x X Coordinate. + * @param y Y Coordinate. + * @return True on success, false on error. + */ +EAPI Eina_Bool +edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, + Edje_Cursor cur, Evas_Coord x, Evas_Coord y) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_coord_set(rp, cur, x, y); + } + return EINA_FALSE; +} + /** * @brief XX * @@ -2109,7 +2139,7 @@ edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *par ed = _edje_fetch(obj); if ((!ed) || (!part)) return NULL; - rp = _edje_real_part_recursive_get(ed, (char *)part); + rp = _edje_real_part_recursive_get(ed, part); if (!rp) return NULL; if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) { @@ -4928,3 +4958,6 @@ edje_string_id_get(const Edje_String *es) if (!es) return NULL; return es->str; } + + +/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/