billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=54aa692ee20d37b27ae181ea343b0d0236e4f20d

commit 54aa692ee20d37b27ae181ea343b0d0236e4f20d
Author: Boris Faure <[email protected]>
Date:   Sun Dec 1 18:22:17 2013 +0100

    fix selection pasting on wrong term. Closes T408
---
 src/bin/controls.c | 30 +++++++++++++++++-------------
 src/bin/termio.c   | 15 +++++++++------
 2 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/src/bin/controls.c b/src/bin/controls.c
index e3eb124..3fb8658 100644
--- a/src/bin/controls.c
+++ b/src/bin/controls.c
@@ -50,17 +50,21 @@ _cb_ct_del_delay(void *data EINA_UNUSED)
 }
 
 static void
-_cb_ct_copy(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_cb_ct_copy(void *data EINA_UNUSED,
+            Evas_Object *obj EINA_UNUSED,
+            void *event EINA_UNUSED)
 {
+   termio_copy_clipboard(ct_term);
    controls_toggle(ct_win, ct_bg, ct_term, ct_donecb, ct_donedata);
-   termio_copy_clipboard(data);
 }
 
 static void
-_cb_ct_paste(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_cb_ct_paste(void *data EINA_UNUSED,
+             Evas_Object *obj EINA_UNUSED,
+             void *event EINA_UNUSED)
 {
+   termio_paste_clipboard(ct_term);
    controls_toggle(ct_win, ct_bg, ct_term, ct_donecb, ct_donedata);
-   termio_paste_clipboard(data);
 }
 
 static void
@@ -245,21 +249,21 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, 
Evas_Object *term,
         elm_box_pack_end(ct_boxh, o);
         evas_object_show(o);
         
-        o = _button_add(win, "New", "new", _cb_ct_new, term);
+        o = _button_add(win, "New", "new", _cb_ct_new, NULL);
         elm_box_pack_end(ct_box2, o);
 
         o = _sep_add_h(win);
         elm_box_pack_end(ct_box2, o);
         
-        o = _button_add(win, "Split V", "split-h", _cb_ct_split_v, term);
+        o = _button_add(win, "Split V", "split-h", _cb_ct_split_v, NULL);
         elm_box_pack_end(ct_box2, o);
-        o = _button_add(win, "Split H", "split-v", _cb_ct_split_h, term);
+        o = _button_add(win, "Split H", "split-v", _cb_ct_split_h, NULL);
         elm_box_pack_end(ct_box2, o);
         
         o = _sep_add_h(win);
         elm_box_pack_end(ct_box2, o);
         
-        o = _button_add(win, "Close", "close", _cb_ct_close, term);
+        o = _button_add(win, "Close", "close", _cb_ct_close, NULL);
         elm_box_pack_end(ct_box2, o);
         
         o = _sep_add_v(win);
@@ -269,24 +273,24 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, 
Evas_Object *term,
         elm_box_pack_end(ct_boxh, o);
         evas_object_show(o);
         
-        o = _button_add(win, "Copy", "copy", _cb_ct_copy, term);
+        o = _button_add(win, "Copy", "copy", _cb_ct_copy, NULL);
         evas_object_data_set(ct_frame, "bt_copy", o);
         if (!termio_selection_exists(term))
           elm_object_disabled_set(o, EINA_TRUE);
         elm_box_pack_end(ct_box, o);
-        o = _button_add(win, "Paste", "paste", _cb_ct_paste, term);
+        o = _button_add(win, "Paste", "paste", _cb_ct_paste, NULL);
         elm_box_pack_end(ct_box, o);
         
         o = _sep_add_h(win);
         elm_box_pack_end(ct_box, o);
         
-        o = _button_add(win, "Settings", "settings", _cb_ct_options, term);
+        o = _button_add(win, "Settings", "settings", _cb_ct_options, NULL);
         elm_box_pack_end(ct_box, o);
         
         o = _sep_add_h(win);
         elm_box_pack_end(ct_box, o);
         
-        o = _button_add(win, "About", "about", _cb_ct_about, term);
+        o = _button_add(win, "About", "about", _cb_ct_about, NULL);
         elm_box_pack_end(ct_box, o);
 
         evas_object_event_callback_add(ct_frame, EVAS_CALLBACK_DEL,
@@ -306,7 +310,7 @@ controls_toggle(Evas_Object *win, Evas_Object *bg, 
Evas_Object *term,
         edje_object_part_swallow(bg, "terminology.dismiss", o);
         evas_object_show(o);
         evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN,
-                                       _cb_mouse_down, term);
+                                       _cb_mouse_down, NULL);
         evas_object_event_callback_add(ct_over, EVAS_CALLBACK_DEL,
                                        _cb_over_del, NULL);
         
diff --git a/src/bin/termio.c b/src/bin/termio.c
index 99e5099..1001e28 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -103,6 +103,7 @@ static void
 _sel_set(Evas_Object *obj, Eina_Bool enable)
 {
    Termio *sd = evas_object_smart_data_get(obj);
+   EINA_SAFETY_ON_NULL_RETURN(sd);
 
    if (sd->pty->selection.is_active == enable) return;
    sd->pty->selection.is_active = enable;
@@ -139,7 +140,7 @@ _activate_link(Evas_Object *obj, Eina_Bool may_inline)
    Eina_Bool url = EINA_FALSE, email = EINA_FALSE, handled = EINA_FALSE;
    int type;
    
-   if (!sd) return;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
    if (!config) return;
    if (!sd->link.string) return;
    if (link_is_url(sd->link.string))
@@ -302,6 +303,7 @@ _cb_ctxp_del(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
              void *event EINA_UNUSED)
 {
    Termio *sd = data;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
    sd->link.ctxpopup = NULL;
    elm_object_focus_set(sd->self, EINA_TRUE);
 }
@@ -345,7 +347,7 @@ _cb_link_down(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, voi
 {
    Evas_Event_Mouse_Down *ev = event;
    Termio *sd = evas_object_smart_data_get(data);
-   if (!sd) return;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
    
    if (ev->button == 1)
      {
@@ -386,7 +388,7 @@ static Eina_Bool
 _cb_link_up_delay(void *data)
 {
    Termio *sd = evas_object_smart_data_get(data);
-   if (!sd) return EINA_FALSE;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
    
    sd->link_do_timer = NULL;
    if (!sd->didclick) _activate_link(data, EINA_TRUE);
@@ -1746,6 +1748,8 @@ _take_selection_text(Evas_Object *obj, Elm_Sel_Type type, 
const char *text)
 {
    Termio *sd = evas_object_smart_data_get(obj);
 
+   EINA_SAFETY_ON_NULL_RETURN(sd);
+
    text = eina_stringshare_add(text);
 
    sd->have_sel = EINA_FALSE;
@@ -1771,7 +1775,7 @@ _take_selection(Evas_Object *obj, Elm_Sel_Type type)
    char *s = NULL;
    size_t len = 0;
 
-   if (!sd) return;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
    if (sd->pty->selection.is_active)
      {
         start_x = sd->pty->selection.start.x;
@@ -1866,7 +1870,7 @@ static void
 _paste_selection(Evas_Object *obj, Elm_Sel_Type type)
 {
    Termio *sd = evas_object_smart_data_get(obj);
-   if (!sd) return;
+   EINA_SAFETY_ON_NULL_RETURN(sd);
    if (!sd->win) return;
    elm_cnp_selection_get(sd->win, type, ELM_SEL_FORMAT_TEXT,
                          _getsel_cb, obj);
@@ -4022,7 +4026,6 @@ termio_content_change(Evas_Object *obj, Evas_Coord x, 
Evas_Coord y,
         if (!((cells_changed > (cells_selection + sel_len)) ||
              (cells_selection > (cells_changed + n))))
           _sel_set(obj, EINA_FALSE);
-
      }
 }
 

-- 


Reply via email to