billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=8354e8372618e4efde0f6854c541f5afdfeb59f1
commit 8354e8372618e4efde0f6854c541f5afdfeb59f1 Author: Boris Faure <bill...@gmail.com> Date: Fri Jun 14 11:19:30 2019 +0200 Revert "win: let elm handle focus" This reverts commit 113bf27619a57fa7ec8ade65fb5abc082152aec8. Not yet fully working. Previous behaviour was better. --- src/bin/controls.c | 2 +- src/bin/win.c | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/bin/controls.c b/src/bin/controls.c index 279fea3..5aa2e62 100644 --- a/src/bin/controls.c +++ b/src/bin/controls.c @@ -277,7 +277,6 @@ _sep_add_h(Evas_Object *win) static void controls_hide(Controls_Ctx *ctx, Eina_Bool call_cb) { - elm_object_focus_set(ctx->frame, EINA_FALSE); if (ctx->win) { evas_object_event_callback_del(ctx->win, EVAS_CALLBACK_DEL, _cb_saved_del); @@ -294,6 +293,7 @@ controls_hide(Controls_Ctx *ctx, Eina_Bool call_cb) { evas_object_del(ctx->over); } + elm_object_focus_set(ctx->frame, EINA_FALSE); if (call_cb) { diff --git a/src/bin/win.c b/src/bin/win.c index 202b622..d9e47c6 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -461,6 +461,10 @@ _solo_focus(Term_Container *tc, Term_Container *relative) edje_object_signal_emit(term->bg, "focus,in", "terminology"); elm_layout_signal_emit(term->base, "focus,in", "terminology"); } + if (term->wn->cmdbox) + elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); + + elm_object_focus_set(term->termio, EINA_TRUE); termio_event_feed_mouse_in(term->termio); termio_focus_in(term->termio); @@ -549,6 +553,8 @@ _cb_win_focus_in(void *data, if (!tc->is_focused) elm_win_urgent_set(wn->win, EINA_FALSE); tc->is_focused = EINA_TRUE; + if ((wn->cmdbox_up) && (wn->cmdbox)) + elm_object_focus_set(wn->cmdbox, EINA_TRUE); if (wn->on_popover) return; @@ -1028,6 +1034,9 @@ _win_unfocus(Term_Container *tc, Term_Container *relative) } tc->is_focused = EINA_FALSE; wn->child->unfocus(wn->child, tc); + + if ((wn->cmdbox_up) && (wn->cmdbox)) + elm_object_focus_set(wn->cmdbox, EINA_FALSE); } } @@ -1689,7 +1698,6 @@ win_new(const char *name, const char *role, const char *title, EVAS_CALLBACK_MOUSE_MOVE, _cb_win_mouse_move, wn); - elm_object_focus_set(wn->base, EINA_TRUE); if (ecore_imf_init()) { @@ -4918,6 +4926,21 @@ _cb_send_end(void *data, _sendfile_progress_hide(term); } +static Eina_Bool +_cb_cmd_focus(void *data) +{ + Win *wn = data; + Term *term; + Term_Container *tc; + + wn->cmdbox_focus_timer = NULL; + tc = (Term_Container*) wn; + term = tc->focused_term_get(tc); + if (term && term->wn->cmdbox) + elm_object_focus_set(wn->cmdbox, EINA_TRUE); + return EINA_FALSE; +} + static Eina_Bool _cb_cmd_del(void *data) { @@ -4942,6 +4965,8 @@ _cb_cmd_activated(void *data, Term *term; Term_Container *tc; + if (wn->cmdbox) + elm_object_focus_set(wn->cmdbox, EINA_FALSE); elm_layout_signal_emit(wn->base, "cmdbox,hide", "terminology"); tc = (Term_Container *) wn; term = tc->focused_term_get(tc); @@ -4972,6 +4997,8 @@ _cb_cmd_aborted(void *data, { Win *wn = data; + if (wn->cmdbox) + elm_object_focus_set(wn->cmdbox, EINA_FALSE); elm_layout_signal_emit(wn->base, "cmdbox,hide", "terminology"); if (wn->cmdbox_focus_timer) { @@ -5059,6 +5086,8 @@ _cb_cmdbox(void *data, evas_object_show(term->wn->cmdbox); if (term->wn->cmdbox_focus_timer) ecore_timer_del(term->wn->cmdbox_focus_timer); + term->wn->cmdbox_focus_timer = + ecore_timer_add(0.2, _cb_cmd_focus, term->wn); if (term->wn->cmdbox_del_timer) { ecore_timer_del(term->wn->cmdbox_del_timer); @@ -5410,6 +5439,8 @@ _term_bg_config(Term *term) edje_object_signal_emit(term->bg, "focus,in", "terminology"); elm_layout_signal_emit(term->base, "focus,in", "terminology"); } + if (term->wn->cmdbox) + elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); } if (term->miniview_shown) edje_object_signal_emit(term->bg, "miniview,on", "terminology"); @@ -5527,17 +5558,14 @@ _cb_options(void *data, { Term *term = data; Term_Container *tc = term->container; - ERR("cb options"); term->wn->on_popover++; term_ref(term); tc->unfocus(tc, NULL); - ERR("unfocus"); controls_show(term->wn->win, term->wn->base, term->bg, term->termio, _cb_options_done, term); - ERR("controls shown"); } void @@ -5584,7 +5612,6 @@ term_new(Win *wn, Config *config, const char *cmd, term->config = config; term->base = o = elm_layout_add(wn->win); - elm_object_focus_allow_set(o, EINA_TRUE); theme_apply_elm(o, term->config, "terminology/core"); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); --