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); - } } --
