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,

-- 


Reply via email to