billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=35587220c7a0c7d1938804626fc99c3ad4591a69
commit 35587220c7a0c7d1938804626fc99c3ad4591a69 Author: Boris Faure <[email protected]> Date: Sun Feb 10 20:09:20 2019 +0100 termiointernals: add termio_internal_get_selection() --- src/bin/termio.c | 21 +++++++++++++++++++++ src/bin/termiointernals.c | 15 ++++----------- src/bin/termiointernals.h | 2 ++ src/bin/tyfuzz.c | 7 +++++++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/bin/termio.c b/src/bin/termio.c index 3c069d0..9ebe5e0 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -903,6 +903,27 @@ termio_take_selection_text(Termio *sd, Elm_Sel_Type type, const char *text) sd->sel_str = text; } + +Eina_Bool +termio_take_selection(Evas_Object *obj, Elm_Sel_Type type) +{ + Termio *sd = termio_get_from_obj(obj); + const char *s = NULL; + size_t len = 0; + + EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE); + + s = termio_internal_get_selection(sd, &len); + if (s) + { + if ((sd->win) && (len > 0)) + termio_take_selection_text(sd, type, s); + eina_stringshare_del(s); + return EINA_TRUE; + } + return EINA_FALSE; +} + static void _cb_ctxp_link_content_copy(void *data, Evas_Object *obj, diff --git a/src/bin/termiointernals.c b/src/bin/termiointernals.c index 311022e..d00b7db 100644 --- a/src/bin/termiointernals.c +++ b/src/bin/termiointernals.c @@ -315,10 +315,9 @@ _sel_fill_in_codepoints_array(Termio *sd) sd->pty->selection.codepoints = buf.codepoints; } -Eina_Bool -termio_take_selection(Evas_Object *obj, Elm_Sel_Type type) +const char * +termio_internal_get_selection(Termio *sd, size_t *lenp) { - Termio *sd = termio_get_from_obj(obj); int start_x = 0, start_y = 0, end_x = 0, end_y = 0; const char *s = NULL; size_t len = 0; @@ -382,14 +381,8 @@ termio_take_selection(Evas_Object *obj, Elm_Sel_Type type) } end: - if (s) - { - if ((sd->win) && (len > 0)) - termio_take_selection_text(sd, type, s); - eina_stringshare_del(s); - return EINA_TRUE; - } - return EINA_FALSE; + *lenp = len; + return s; } static void diff --git a/src/bin/termiointernals.h b/src/bin/termiointernals.h index fb5ddeb..787898b 100644 --- a/src/bin/termiointernals.h +++ b/src/bin/termiointernals.h @@ -136,4 +136,6 @@ void termio_internal_render(Termio *sd, Evas_Coord ox, Evas_Coord oy, int *preedit_xp, int *preedit_yp); +const char * +termio_internal_get_selection(Termio *sd, size_t *lenp); #endif diff --git a/src/bin/tyfuzz.c b/src/bin/tyfuzz.c index b104081..db27890 100644 --- a/src/bin/tyfuzz.c +++ b/src/bin/tyfuzz.c @@ -199,6 +199,13 @@ termio_block_activate(Evas_Object *obj EINA_UNUSED, { } +Eina_Bool +termio_take_selection(Evas_Object *obj EINA_UNUSED, + Elm_Sel_Type type EINA_UNUSED) +{ + return EINA_FALSE; +} + #ifndef TYTEST void termio_set_cursor_shape(Evas_Object *obj EINA_UNUSED, --
