diff --git a/src/bin/controls.c b/src/bin/controls.c index 7b89d285..8af77139 100644 --- a/src/bin/controls.c +++ b/src/bin/controls.c @@ -22,11 +22,10 @@ typedef struct _Controls_Ctx { } Controls_Ctx; +/* /!\ can free ctx */ static void controls_hide(Controls_Ctx *ctx, Eina_Bool call_cb); - - static void _cb_sel_on(void *data, Evas_Object *_term EINA_UNUSED, @@ -80,6 +79,8 @@ _cb_ct_copy(void *data, Evas_Object *term = ctx->term; controls_hide(ctx, EINA_TRUE); + ctx = NULL; + termio_take_selection(term, ELM_SEL_TYPE_CLIPBOARD); } @@ -92,6 +93,8 @@ _cb_ct_paste(void *data, Evas_Object *term = ctx->term; controls_hide(ctx, EINA_TRUE); + ctx = NULL; + termio_paste_selection(term, ELM_SEL_TYPE_CLIPBOARD); } @@ -101,8 +104,12 @@ _cb_ct_new(void *data, void *_event EINA_UNUSED) { Controls_Ctx *ctx = data; + Evas_Object *term = ctx->term; + controls_hide(ctx, EINA_TRUE); - main_new(ctx->term); + ctx = NULL; + + main_new(term); } static void @@ -111,8 +118,13 @@ _cb_ct_split_v(void *data, void *_event EINA_UNUSED) { Controls_Ctx *ctx = data; + Evas_Object *term = ctx->term; + + controls_hide(ctx, EINA_TRUE); - split_vertically(ctx->win, ctx->term, NULL); + ctx = NULL; + + split_vertically(term, NULL); } static void @@ -121,8 +133,12 @@ _cb_ct_split_h(void *data, void *_event EINA_UNUSED) { Controls_Ctx *ctx = data; + Evas_Object *term = ctx->term; + controls_hide(ctx, EINA_TRUE); - split_horizontally(ctx->win, ctx->term, NULL); + ctx = NULL; + + split_horizontally(term, NULL); } static void @@ -141,7 +157,10 @@ _cb_ct_set_title(void *data, { Controls_Ctx *ctx = data; Evas_Object *term = ctx->term; + controls_hide(ctx, EINA_TRUE); + ctx = NULL; + term_set_title(termio_term_get(term)); } @@ -155,6 +174,8 @@ _cb_ct_close(void *data, Evas_Object *win = ctx->win; controls_hide(ctx, EINA_TRUE); + ctx = NULL; + term_close(win, term, EINA_FALSE); } diff --git a/src/bin/main.c b/src/bin/main.c index 35ddeceb..59092b2a 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -624,16 +624,14 @@ _start(Ipc_Instance *instance, Eina_Bool need_scale_wizard) if (instance->startup_split[i] == 'v') { cmd = eina_list_data_get(instance->cmds); - split_vertically(win_evas_object_get(term_win_get(next)), - term_termio_get(next), cmd); + split_vertically(term_termio_get(next), cmd); instance->cmds = eina_list_remove_list(instance->cmds, instance->cmds); } else if (instance->startup_split[i] == 'h') { cmd = eina_list_data_get(instance->cmds); - split_horizontally(win_evas_object_get(term_win_get(next)), - term_termio_get(next), cmd); + split_horizontally(term_termio_get(next), cmd); instance->cmds = eina_list_remove_list(instance->cmds, instance->cmds); } diff --git a/src/bin/win.c b/src/bin/win.c index 36dd21ca..8d82b429 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -3049,8 +3049,7 @@ _cb_size_hint(void *data, } void -split_horizontally(Evas_Object *_win EINA_UNUSED, - Evas_Object *term, +split_horizontally(Evas_Object *term, const char *cmd) { Term *tm; @@ -3064,8 +3063,7 @@ split_horizontally(Evas_Object *_win EINA_UNUSED, } void -split_vertically(Evas_Object *_win EINA_UNUSED, - Evas_Object *term, +split_vertically(Evas_Object *term, const char *cmd) { Term *tm; diff --git a/src/bin/win.h b/src/bin/win.h index 7b7d6dda..e08a9b8d 100644 --- a/src/bin/win.h +++ b/src/bin/win.h @@ -18,8 +18,8 @@ void term_set_title(Term *term); void term_miniview_hide(Term *term); Eina_Bool term_tab_go(Term *term, int tnum); -void split_horizontally(Evas_Object *win, Evas_Object *term, const char *cmd); -void split_vertically(Evas_Object *win, Evas_Object *term, const char *cmd); +void split_horizontally(Evas_Object *term, const char *cmd); +void split_vertically(Evas_Object *term, const char *cmd); Win *