@@ -684,7 +684,7 @@ win_split_ins(size, flags, new_wp, dir)
684684 int available ;
685685 int oldwin_height = 0 ;
686686 int layout ;
687- frame_T * frp , * curfrp ;
687+ frame_T * frp , * curfrp , * frp2 , * prevfrp ;
688688 int before ;
689689 int minheight ;
690690 int wmh1 ;
@@ -730,12 +730,29 @@ win_split_ins(size, flags, new_wp, dir)
730730 needed = wmw1 + 1 ;
731731 if (flags & WSP_ROOM )
732732 needed += p_wiw - wmw1 ;
733- if (p_ea || ( flags & (WSP_BOT | WSP_TOP ) ))
733+ if (flags & (WSP_BOT | WSP_TOP ))
734734 {
735735 minwidth = frame_minwidth (topframe , NOWIN );
736736 available = topframe -> fr_width ;
737737 needed += minwidth ;
738738 }
739+ else if (p_ea )
740+ {
741+ minwidth = frame_minwidth (oldwin -> w_frame , NOWIN );
742+ prevfrp = oldwin -> w_frame ;
743+ for (frp = oldwin -> w_frame -> fr_parent ; frp != NULL ;
744+ frp = frp -> fr_parent )
745+ {
746+ if (frp -> fr_layout == FR_ROW )
747+ for (frp2 = frp -> fr_child ; frp2 != NULL ;
748+ frp2 = frp2 -> fr_next )
749+ if (frp2 != prevfrp )
750+ minwidth += frame_minwidth (frp2 , NOWIN );
751+ prevfrp = frp ;
752+ }
753+ available = topframe -> fr_width ;
754+ needed += minwidth ;
755+ }
739756 else
740757 {
741758 minwidth = frame_minwidth (oldwin -> w_frame , NOWIN );
@@ -798,12 +815,29 @@ win_split_ins(size, flags, new_wp, dir)
798815 needed = wmh1 + STATUS_HEIGHT ;
799816 if (flags & WSP_ROOM )
800817 needed += p_wh - wmh1 ;
801- if (p_ea || ( flags & (WSP_BOT | WSP_TOP ) ))
818+ if (flags & (WSP_BOT | WSP_TOP ))
802819 {
803820 minheight = frame_minheight (topframe , NOWIN ) + need_status ;
804821 available = topframe -> fr_height ;
805822 needed += minheight ;
806823 }
824+ else if (p_ea )
825+ {
826+ minheight = frame_minheight (oldwin -> w_frame , NOWIN ) + need_status ;
827+ prevfrp = oldwin -> w_frame ;
828+ for (frp = oldwin -> w_frame -> fr_parent ; frp != NULL ;
829+ frp = frp -> fr_parent )
830+ {
831+ if (frp -> fr_layout == FR_COL )
832+ for (frp2 = frp -> fr_child ; frp2 != NULL ;
833+ frp2 = frp2 -> fr_next )
834+ if (frp2 != prevfrp )
835+ minheight += frame_minheight (frp2 , NOWIN );
836+ prevfrp = frp ;
837+ }
838+ available = topframe -> fr_height ;
839+ needed += minheight ;
840+ }
807841 else
808842 {
809843 minheight = frame_minheight (oldwin -> w_frame , NOWIN ) + need_status ;
0 commit comments