diff options
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r-- | src/nvim/window.c | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c index 0e8cfcedf5..6861e19ca7 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -5229,27 +5229,42 @@ static void frame_setwidth(frame_T *curfrp, int width) } } -/* - * Check 'winminheight' for a valid value. - */ +// Check 'winminheight' for a valid value and reduce it if needed. void win_setminheight(void) { - int room; - int first = TRUE; + bool first = true; - /* loop until there is a 'winminheight' that is possible */ + // loop until there is a 'winminheight' that is possible while (p_wmh > 0) { - /* TODO: handle vertical splits */ - room = -p_wh; - FOR_ALL_WINDOWS_IN_TAB(wp, curtab) { - room += wp->w_height - p_wmh; + const int room = Rows - p_ch; + const int needed = frame_minheight(topframe, NULL); + if (room >= needed) { + break; + } + p_wmh--; + if (first) { + EMSG(_(e_noroom)); + first = false; } - if (room >= 0) + } +} + +// Check 'winminwidth' for a valid value and reduce it if needed. +void win_setminwidth(void) +{ + bool first = true; + + // loop until there is a 'winminheight' that is possible + while (p_wmw > 0) { + const int room = Columns; + const int needed = frame_minwidth(topframe, NULL); + if (room >= needed) { break; - --p_wmh; + } + p_wmw--; if (first) { EMSG(_(e_noroom)); - first = FALSE; + first = false; } } } |