win: handle case where tab dragged is the last term
This commit is contained in:
parent
0edb5f7913
commit
81d9063d65
|
@ -1260,8 +1260,15 @@ _win_close(Term_Container *tc,
|
||||||
{
|
{
|
||||||
Win *wn;
|
Win *wn;
|
||||||
assert (tc->type == TERM_CONTAINER_TYPE_WIN);
|
assert (tc->type == TERM_CONTAINER_TYPE_WIN);
|
||||||
|
|
||||||
wn = (Win*) tc;
|
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);
|
eina_stringshare_del(tc->title);
|
||||||
win_free(wn);
|
win_free(wn);
|
||||||
}
|
}
|
||||||
|
@ -3492,6 +3499,20 @@ _tabs_get_or_create_boxes(Term *term, Term *src)
|
||||||
evas_object_show(o);
|
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
|
static void
|
||||||
_tab_drag_rollback_tabs(void)
|
_tab_drag_rollback_tabs(void)
|
||||||
|
@ -3577,8 +3598,7 @@ _tab_drag_rollback(void)
|
||||||
_tab_drag_rollback_split();
|
_tab_drag_rollback_split();
|
||||||
break;
|
break;
|
||||||
case TERM_CONTAINER_TYPE_WIN:
|
case TERM_CONTAINER_TYPE_WIN:
|
||||||
ERR("rollback win");
|
_tab_drag_rollback_win();
|
||||||
abort();
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ERR("invalid parent type:%d", _tab_drag->parent_type);
|
ERR("invalid parent type:%d", _tab_drag->parent_type);
|
||||||
|
|
Loading…
Reference in New Issue