fix(events): skip WinScrolled for newly-created float windows (#21333)

Unlike split windows, creating a new floating window does not cause
other windows to resize, so it doesn't make much sense to trigger
WinScrolled or WinResized when creating a new floating window.
This commit is contained in:
zeertzjq
2022-12-10 06:50:03 +08:00
committed by GitHub
parent 8b84a10db7
commit 7faf8a45e8
2 changed files with 22 additions and 6 deletions

View File

@@ -5405,6 +5405,18 @@ static int check_window_scroll_resize(int *size_count, win_T **first_scroll_win,
int tot_skipcol = 0;
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
// Skip floating windows that do not have a snapshot (usually becuase they are newly-created),
// as unlike split windows, creating floating windows do not cause other windows to resize.
if (wp->w_floating && wp->w_last_topline == 0) {
wp->w_last_topline = wp->w_topline;
wp->w_last_topfill = wp->w_topfill;
wp->w_last_leftcol = wp->w_leftcol;
wp->w_last_skipcol = wp->w_skipcol;
wp->w_last_width = wp->w_width;
wp->w_last_height = wp->w_height;
continue;
}
const bool size_changed = wp->w_last_width != wp->w_width
|| wp->w_last_height != wp->w_height;
if (size_changed) {