Patch 8.0.1334
Problem: Splitting a window with a WinBar damages window layout.
(Lifepillar)
Solution: Take the winbar into account when computing the new window
position. Add WINBAR_HEIGHT().
Files: src/vim.h, src/window.c
*** ../vim-8.0.1333/src/vim.h 2017-11-19 20:34:54.882376757 +0100
--- src/vim.h 2017-11-25 13:52:36.170838067 +0100
***************
*** 1485,1490 ****
--- 1485,1495 ----
#define MIN_COLUMNS 12 /* minimal columns for screen */
#define MIN_LINES 2 /* minimal lines for screen */
#define STATUS_HEIGHT 1 /* height of a status line under a window */
+ #ifdef FEAT_MENU /* height of a status line under a window */
+ # define WINBAR_HEIGHT(wp) (wp)->w_winbar_height
+ #else
+ # define WINBAR_HEIGHT(wp) 0
+ #endif
#define QF_WINHEIGHT 10 /* default height for quickfix window */
/*
*** ../vim-8.0.1333/src/window.c 2017-11-22 22:22:06.737567427 +0100
--- src/window.c 2017-11-25 14:11:47.807558977 +0100
***************
*** 1098,1118 ****
/* set height and row of new window to full height */
wp->w_winrow = tabline_height();
win_new_height(wp, curfrp->fr_height - (p_ls > 0)
! #ifdef FEAT_MENU
! - wp->w_winbar_height
! #endif
! );
wp->w_status_height = (p_ls > 0);
}
else
{
/* height and row of new window is same as current window */
wp->w_winrow = oldwin->w_winrow;
! win_new_height(wp, oldwin->w_height
! #ifdef FEAT_MENU
! + oldwin->w_winbar_height
! #endif
! );
wp->w_status_height = oldwin->w_status_height;
}
frp->fr_height = curfrp->fr_height;
--- 1098,1111 ----
/* set height and row of new window to full height */
wp->w_winrow = tabline_height();
win_new_height(wp, curfrp->fr_height - (p_ls > 0)
! - WINBAR_HEIGHT(wp));
wp->w_status_height = (p_ls > 0);
}
else
{
/* height and row of new window is same as current window */
wp->w_winrow = oldwin->w_winrow;
! win_new_height(wp, oldwin->w_height + WINBAR_HEIGHT(oldwin));
wp->w_status_height = oldwin->w_status_height;
}
frp->fr_height = curfrp->fr_height;
***************
*** 1171,1180 ****
if (flags & (WSP_TOP | WSP_BOT))
{
int new_fr_height = curfrp->fr_height - new_size
! #ifdef FEAT_MENU
! + wp->w_winbar_height
! #endif
! ;
if (!((flags & WSP_BOT) && p_ls == 0))
new_fr_height -= STATUS_HEIGHT;
--- 1164,1170 ----
if (flags & (WSP_TOP | WSP_BOT))
{
int new_fr_height = curfrp->fr_height - new_size
! + WINBAR_HEIGHT(wp) ;
if (!((flags & WSP_BOT) && p_ls == 0))
new_fr_height -= STATUS_HEIGHT;
***************
*** 1190,1196 ****
}
else /* new window below current one */
{
! wp->w_winrow = oldwin->w_winrow + oldwin->w_height + STATUS_HEIGHT;
wp->w_status_height = oldwin->w_status_height;
if (!(flags & WSP_BOT))
oldwin->w_status_height = STATUS_HEIGHT;
--- 1180,1187 ----
}
else /* new window below current one */
{
! wp->w_winrow = oldwin->w_winrow + oldwin->w_height
! + STATUS_HEIGHT + WINBAR_HEIGHT(oldwin);
wp->w_status_height = oldwin->w_status_height;
if (!(flags & WSP_BOT))
oldwin->w_status_height = STATUS_HEIGHT;
***************
*** 2867,2876 ****
/* Simple case: just one window. */
win_new_height(topfrp->fr_win,
height - topfrp->fr_win->w_status_height
! #ifdef FEAT_MENU
! - topfrp->fr_win->w_winbar_height
! #endif
! );
}
else if (topfrp->fr_layout == FR_ROW)
{
--- 2858,2864 ----
/* Simple case: just one window. */
win_new_height(topfrp->fr_win,
height - topfrp->fr_win->w_status_height
! - WINBAR_HEIGHT(topfrp->fr_win));
}
else if (topfrp->fr_layout == FR_ROW)
{
***************
*** 3217,3226 ****
frame_fix_height(win_T *wp)
{
wp->w_frame->fr_height = wp->w_height + wp->w_status_height
! #ifdef FEAT_MENU
! + wp->w_winbar_height
! #endif
! ;
}
/*
--- 3205,3211 ----
frame_fix_height(win_T *wp)
{
wp->w_frame->fr_height = wp->w_height + wp->w_status_height
! + WINBAR_HEIGHT(wp) ;
}
/*
*** ../vim-8.0.1333/src/version.c 2017-11-23 22:52:00.573675299 +0100
--- src/version.c 2017-11-25 14:12:23.471347532 +0100
***************
*** 773,774 ****
--- 773,776 ----
{ /* Add new patch number below this line */
+ /**/
+ 1334,
/**/
--
If you put 7 of the most talented OSS developers in a room for a week
and asked them to fix a bug in a spreadsheet program, in 1 week
you'd have 2 new mail readers and a text-based web browser.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.