patch 9.1.0118: Use different restoration strategy in win_splitmove
Problem: saving and restoring all frames to split-move is overkill now
that WinNewPre is not fired when split-moving.
Solution: defer the flattening of frames until win_split_ins begins
reorganising them, and attempt to restore the layout by
undoing our changes. (Sean Dewar)
This also means we no longer must allocate.
related: #14042
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
96cc4aef3d
commit
704966c254
@ -1607,7 +1607,7 @@ aucmd_prepbuf(
|
||||
p_acd = FALSE;
|
||||
#endif
|
||||
|
||||
(void)win_split_ins(0, WSP_TOP | WSP_FORCE_ROOM, auc_win, 0);
|
||||
(void)win_split_ins(0, WSP_TOP | WSP_FORCE_ROOM, auc_win, 0, NULL);
|
||||
(void)win_comp_pos(); // recompute window positions
|
||||
p_ea = save_ea;
|
||||
#ifdef FEAT_AUTOCHDIR
|
||||
@ -1670,7 +1670,7 @@ win_found:
|
||||
stop_insert_mode = save_stop_insert_mode;
|
||||
#endif
|
||||
// Remove the window and frame from the tree of frames.
|
||||
(void)winframe_remove(curwin, &dummy, NULL);
|
||||
(void)winframe_remove(curwin, &dummy, NULL, NULL);
|
||||
win_remove(curwin, NULL);
|
||||
|
||||
// The window is marked as not used, but it is not freed, it can be
|
||||
|
||||
Reference in New Issue
Block a user