@@ -686,6 +686,8 @@ win_split_ins(size, flags, new_wp, dir)
686686 int layout ;
687687 frame_T * frp , * curfrp ;
688688 int before ;
689+ int minwidth ;
690+ int minheight ;
689691
690692 if (flags & WSP_TOP )
691693 oldwin = firstwin ;
@@ -725,11 +727,15 @@ win_split_ins(size, flags, new_wp, dir)
725727 needed += p_wiw - p_wmw ;
726728 if (p_ea || (flags & (WSP_BOT | WSP_TOP )))
727729 {
730+ minwidth = frame_minwidth (topframe , NULL );
728731 available = topframe -> fr_width ;
729- needed += frame_minwidth ( topframe , NULL ) ;
732+ needed += minwidth ;
730733 }
731734 else
735+ {
736+ minwidth = frame_minwidth (oldwin -> w_frame , NULL );
732737 available = oldwin -> w_width ;
738+ }
733739 if (available < needed && new_wp == NULL )
734740 {
735741 EMSG (_ (e_noroom ));
@@ -739,6 +745,8 @@ win_split_ins(size, flags, new_wp, dir)
739745 new_size = oldwin -> w_width / 2 ;
740746 if (new_size > oldwin -> w_width - p_wmw - 1 )
741747 new_size = oldwin -> w_width - p_wmw - 1 ;
748+ if (new_size > available - minwidth - 1 )
749+ new_size = available - minwidth - 1 ;
742750 if (new_size < p_wmw )
743751 new_size = p_wmw ;
744752
@@ -786,11 +794,13 @@ win_split_ins(size, flags, new_wp, dir)
786794 needed += p_wh - p_wmh ;
787795 if (p_ea || (flags & (WSP_BOT | WSP_TOP )))
788796 {
797+ minheight = frame_minheight (topframe , NULL );
789798 available = topframe -> fr_height ;
790- needed += frame_minheight ( topframe , NULL ) ;
799+ needed += minheight ;
791800 }
792801 else
793802 {
803+ minheight = frame_minheight (oldwin -> w_frame , NULL );
794804 available = oldwin -> w_height ;
795805 needed += p_wmh ;
796806 }
@@ -810,6 +820,8 @@ win_split_ins(size, flags, new_wp, dir)
810820
811821 if (new_size > oldwin_height - p_wmh - STATUS_HEIGHT )
812822 new_size = oldwin_height - p_wmh - STATUS_HEIGHT ;
823+ if (new_size > available - minheight - STATUS_HEIGHT )
824+ new_size = available - minheight - STATUS_HEIGHT ;
813825 if (new_size < p_wmh )
814826 new_size = p_wmh ;
815827
@@ -5732,7 +5744,7 @@ win_new_height(wp, height)
57325744 -- wp -> w_wrow ;
57335745 }
57345746 }
5735- set_topline (wp , lnum );
5747+ set_topline (wp , lnum );
57365748 }
57375749 else if (sline > 0 )
57385750 {
@@ -5778,7 +5790,7 @@ win_new_height(wp, height)
57785790 wp -> w_wrow -= sline ;
57795791 }
57805792
5781- set_topline (wp , lnum );
5793+ set_topline (wp , lnum );
57825794 }
57835795 }
57845796
0 commit comments