diff src/proto/window.pro @ 34383:a84fe48ae523 v9.1.0118

patch 9.1.0118: Use different restoration strategy in win_splitmove Commit: https://github.com/vim/vim/commit/704966c2545897dfcf426dd9ef946aeb6fa80c38 Author: Sean Dewar <6256228+seandewar@users.noreply.github.com> Date: Tue Feb 20 22:00:33 2024 +0100 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>
author Christian Brabandt <cb@256bit.org>
date Tue, 20 Feb 2024 22:30:07 +0100
parents 37b4c89ba420
children 8b0e390b61fe
line wrap: on
line diff
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -7,7 +7,7 @@ void get_wincmd_addr_type(char_u *arg, e
 int check_split_disallowed(win_T *wp);
 int win_split(int size, int flags);
 int win_splitmove(win_T *wp, int size, int flags);
-int win_split_ins(int size, int flags, win_T *new_wp, int dir);
+int win_split_ins(int size, int flags, win_T *new_wp, int dir, frame_T *to_flatten);
 int win_valid_popup(win_T *win);
 int win_valid(win_T *win);
 win_T *win_find_by_id(int id);
@@ -28,7 +28,7 @@ void may_make_initial_scroll_size_snapsh
 void may_trigger_win_scrolled_resized(void);
 void win_close_othertab(win_T *win, int free_buf, tabpage_T *tp);
 void win_free_all(void);
-win_T *winframe_remove(win_T *win, int *dirp, tabpage_T *tp);
+win_T *winframe_remove(win_T *win, int *dirp, tabpage_T *tp, frame_T **to_flatten);
 void close_others(int message, int forceit);
 void unuse_tabpage(tabpage_T *tp);
 void use_tabpage(tabpage_T *tp);