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);

-- 


Reply via email to