billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=d267b57fb1d54f7d3cd3e3c9122523f548460a39
commit d267b57fb1d54f7d3cd3e3c9122523f548460a39 Author: Boris Faure <[email protected]> Date: Sun Mar 29 13:33:44 2020 +0200 win: unfocus from correct parent + add focus checks --- src/bin/win.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/bin/win.c b/src/bin/win.c index 678ef8a..4b4ea81 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -262,16 +262,17 @@ _focus_validator(void) if (tc->is_focused) { Term *term_focused; + Term_Container *tc_parent = tc; focused_found = EINA_TRUE; do { - assert (tc->is_focused); - tc = tc->parent; + assert (tc_parent->is_focused); + tc_parent = tc_parent->parent; } - while (tc->type != TERM_CONTAINER_TYPE_WIN); - assert (tc->is_focused); - term_focused = tc->focused_term_get(tc); + while (tc_parent->type != TERM_CONTAINER_TYPE_WIN); + assert (tc_parent->is_focused); + term_focused = tc_parent->focused_term_get(tc_parent); assert(term_focused == term); } } @@ -452,7 +453,6 @@ _solo_focused_term_get(const Term_Container *tc) if (tc->is_focused) term = solo->term; - DBG("%p term focused:%p", tc, term); return term; } @@ -746,6 +746,7 @@ _solo_focus(Term_Container *tc, Term_Container *relative) if (term->missed_bell) term->missed_bell = EINA_FALSE; edje_object_message_signal_process(term->bg_edj); + _focus_validator(); } static Eina_Bool @@ -1257,7 +1258,6 @@ _win_focused_term_get(const Term_Container *tc) if (tc->is_focused) term = wn->child->focused_term_get(wn->child); - DBG("%p term focused:%p", tc, term); return term; } @@ -1567,7 +1567,7 @@ _win_split_direction(Term_Container *tc, tc_split->is_focused = tc->is_focused; tc->swallow(tc, NULL, tc_split); - child_orig->unfocus(child_orig, tc); + child_orig->unfocus(child_orig, tc_split); child_new->focus(child_new, tc_split); return 0; @@ -3910,6 +3910,7 @@ _term_on_drag_stop(void *data, edje_object_part_drag_value_set(term->bg_edj, "terminology.tabr", tabs->v2_orig, 0.0); } + _focus_validator(); } @@ -4911,6 +4912,7 @@ _cb_new(void *data, assert (tc->type == TERM_CONTAINER_TYPE_SOLO); _solo_tabs_new(tc); + _focus_validator(); } static void --
