billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=81d9063d655992e9a4526c7fdef58c004636ca52
commit 81d9063d655992e9a4526c7fdef58c004636ca52 Author: Boris Faure <[email protected]> Date: Sun Mar 15 09:28:31 2020 +0100 win: handle case where tab dragged is the last term --- src/bin/win.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/bin/win.c b/src/bin/win.c index 52f216a..cd52383 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -1260,8 +1260,15 @@ _win_close(Term_Container *tc, { Win *wn; assert (tc->type == TERM_CONTAINER_TYPE_WIN); - wn = (Win*) tc; + + DBG("win close"); + if (_tab_drag && _tab_drag->term && (_tab_drag->term->wn == wn)) + { + _tab_drag->parent_type = TERM_CONTAINER_TYPE_WIN; + _tab_drag_free(); + return; + } eina_stringshare_del(tc->title); win_free(wn); } @@ -3492,6 +3499,20 @@ _tabs_get_or_create_boxes(Term *term, Term *src) evas_object_show(o); } +static void +_tab_drag_rollback_win(void) +{ + Term *term = _tab_drag->term; + Win *wn = term->wn; + Term_Container *tc_win = (Term_Container*)wn; + Term_Container *tc = term->container; + + tc_win->swallow(tc_win, NULL, tc); + tc_win->unfocus(tc_win, NULL); + tc->focus(tc, NULL); + + _tab_drag_reparented(); +} static void _tab_drag_rollback_tabs(void) @@ -3577,8 +3598,7 @@ _tab_drag_rollback(void) _tab_drag_rollback_split(); break; case TERM_CONTAINER_TYPE_WIN: - ERR("rollback win"); - abort(); + _tab_drag_rollback_win(); break; default: ERR("invalid parent type:%d", _tab_drag->parent_type); --
