@@ -688,6 +688,8 @@ win_split_ins(size, flags, new_wp, dir)
688688 int before ;
689689 int minwidth ;
690690 int minheight ;
691+ int wmw1 ;
692+ int wmh1 ;
691693
692694 if (flags & WSP_TOP )
693695 oldwin = firstwin ;
@@ -722,19 +724,22 @@ win_split_ins(size, flags, new_wp, dir)
722724 * Check if we are able to split the current window and compute its
723725 * width.
724726 */
725- needed = p_wmw + 1 ;
727+ /* Current window requires at least 1 space. */
728+ wmw1 = (p_wmw == 0 ? 1 : p_wmw );
729+ needed = wmw1 + 1 ;
726730 if (flags & WSP_ROOM )
727- needed += p_wiw - p_wmw ;
731+ needed += p_wiw - wmw1 ;
728732 if (p_ea || (flags & (WSP_BOT | WSP_TOP )))
729733 {
730- minwidth = frame_minwidth (topframe , NULL );
734+ minwidth = frame_minwidth (topframe , NOWIN );
731735 available = topframe -> fr_width ;
732736 needed += minwidth ;
733737 }
734738 else
735739 {
736- minwidth = frame_minwidth (oldwin -> w_frame , NULL );
737- available = oldwin -> w_width ;
740+ minwidth = frame_minwidth (oldwin -> w_frame , NOWIN );
741+ available = oldwin -> w_frame -> fr_width ;
742+ needed += minwidth ;
738743 }
739744 if (available < needed && new_wp == NULL )
740745 {
@@ -743,12 +748,10 @@ win_split_ins(size, flags, new_wp, dir)
743748 }
744749 if (new_size == 0 )
745750 new_size = oldwin -> w_width / 2 ;
746- if (new_size > oldwin -> w_width - p_wmw - 1 )
747- new_size = oldwin -> w_width - p_wmw - 1 ;
748751 if (new_size > available - minwidth - 1 )
749752 new_size = available - minwidth - 1 ;
750- if (new_size < p_wmw )
751- new_size = p_wmw ;
753+ if (new_size < wmw1 )
754+ new_size = wmw1 ;
752755
753756 /* if it doesn't fit in the current window, need win_equal() */
754757 if (oldwin -> w_width - new_size - 1 < p_wmw )
@@ -789,20 +792,22 @@ win_split_ins(size, flags, new_wp, dir)
789792 * Check if we are able to split the current window and compute its
790793 * height.
791794 */
792- needed = p_wmh + STATUS_HEIGHT + need_status ;
795+ /* Current window requires at least 1 space. */
796+ wmh1 = (p_wmh == 0 ? 1 : p_wmh );
797+ needed = wmh1 + STATUS_HEIGHT ;
793798 if (flags & WSP_ROOM )
794- needed += p_wh - p_wmh ;
799+ needed += p_wh - wmh1 ;
795800 if (p_ea || (flags & (WSP_BOT | WSP_TOP )))
796801 {
797- minheight = frame_minheight (topframe , NULL ) ;
802+ minheight = frame_minheight (topframe , NOWIN ) + need_status ;
798803 available = topframe -> fr_height ;
799804 needed += minheight ;
800805 }
801806 else
802807 {
803- minheight = frame_minheight (oldwin -> w_frame , NULL ) ;
804- available = oldwin -> w_height ;
805- needed += p_wmh ;
808+ minheight = frame_minheight (oldwin -> w_frame , NOWIN ) + need_status ;
809+ available = oldwin -> w_frame -> fr_height ;
810+ needed += minheight ;
806811 }
807812 if (available < needed && new_wp == NULL )
808813 {
@@ -817,13 +822,10 @@ win_split_ins(size, flags, new_wp, dir)
817822 }
818823 if (new_size == 0 )
819824 new_size = oldwin_height / 2 ;
820-
821- if (new_size > oldwin_height - p_wmh - STATUS_HEIGHT )
822- new_size = oldwin_height - p_wmh - STATUS_HEIGHT ;
823825 if (new_size > available - minheight - STATUS_HEIGHT )
824826 new_size = available - minheight - STATUS_HEIGHT ;
825- if (new_size < p_wmh )
826- new_size = p_wmh ;
827+ if (new_size < wmh1 )
828+ new_size = wmh1 ;
827829
828830 /* if it doesn't fit in the current window, need win_equal() */
829831 if (oldwin_height - new_size - STATUS_HEIGHT < p_wmh )
0 commit comments