win: simplify focus handling when dropping tab to split

This commit is contained in:
Boris Faure 2020-03-30 22:29:21 +02:00
parent 5c85b8c624
commit 5d2e0479b9
Signed by untrusted user who does not match committer: borisfaure
GPG Key ID: 35C0410516166BE8
1 changed files with 22 additions and 11 deletions

View File

@ -725,7 +725,6 @@ _solo_focus(Term_Container *tc, Term_Container *relative)
tc->parent->focus(tc->parent, tc);
}
tc->is_focused = EINA_TRUE;
if (term->config->disable_focus_visuals)
{
elm_layout_signal_emit(term->bg, "focused,set", "terminology");
@ -746,6 +745,12 @@ _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);
if (!tc->is_focused && relative != tc->parent)
{
tc->is_focused = EINA_TRUE;
tc->parent->focus(tc->parent, tc);
}
tc->is_focused = EINA_TRUE;
_focus_validator();
}
@ -1352,6 +1357,11 @@ _win_focus(Term_Container *tc, Term_Container *relative)
wn = (Win*) tc;
DBG("tc:%p tc->is_focused:%d from_child:%d",
tc, tc->is_focused, wn->child == relative);
if (!tc->is_focused)
elm_win_urgent_set(wn->win, EINA_FALSE);
tc->is_focused = EINA_TRUE;
if ((relative != wn->child) || (!wn->focused))
{
DBG("focus tc:%p", tc);
@ -1370,10 +1380,6 @@ _win_focus(Term_Container *tc, Term_Container *relative)
termio_imf_cursor_set(focused->termio, wn->khdl.imf);
}
}
if (!tc->is_focused)
elm_win_urgent_set(wn->win, EINA_FALSE);
tc->is_focused = EINA_TRUE;
}
static void
@ -1553,6 +1559,9 @@ _win_split_direction(Term_Container *tc,
child1 = child_orig;
child2 = child_new;
}
wn->tc.unfocus(&wn->tc, NULL); /* unfocus from top */
tc_split = _split_new(child1, child2, is_horizontal);
if (wn->config->show_tabs)
@ -1567,8 +1576,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_split);
child_new->focus(child_new, tc_split);
child_new->focus(child_new, NULL); /* refocus from bottom */
return 0;
}
@ -2727,8 +2735,10 @@ _split_focus(Term_Container *tc, Term_Container *relative)
split->last_focus->unfocus(split->last_focus, tc);
split->last_focus = relative;
if (!tc->is_focused)
tc->parent->focus(tc->parent, tc);
tc->is_focused = EINA_TRUE;
{
tc->is_focused = EINA_TRUE;
tc->parent->focus(tc->parent, tc);
}
}
}
@ -2880,6 +2890,8 @@ _split_split_direction(Term_Container *tc,
else
elm_object_part_content_unset(split->panes, PANES_BOTTOM);
wn->tc.unfocus(&wn->tc, NULL); /* unfocus from top */
tc_split = _split_new(child1, child2, is_horizontal);
if (wn->config->show_tabs)
@ -2894,8 +2906,7 @@ _split_split_direction(Term_Container *tc,
tc_split->is_focused = tc->is_focused;
tc->swallow(tc, child_orig, tc_split);
child_orig->unfocus(child_orig, tc);
child_new->focus(child_new, tc_split);
child_new->focus(child_new, NULL); /* refocus from bottom */
return 0;
}