diff --git a/layout/forms/nsListControlFrame.cpp b/layout/forms/nsListControlFrame.cpp index dbb9ff83eab..83773008cc0 100644 --- a/layout/forms/nsListControlFrame.cpp +++ b/layout/forms/nsListControlFrame.cpp @@ -1319,17 +1319,14 @@ nsListControlFrame::Reflow(nsIPresContext* aPresContext, } } + // Do a second reflow with the adjusted width and height settings + // This sets up all of the frames with the correct width and height. + secondPassState.mComputedWidth = visibleWidth; + secondPassState.mComputedHeight = visibleHeight; + secondPassState.reason = eReflowReason_Resize; + if (mPassId == 0 || mPassId == 2 || visibleHeight != scrolledAreaHeight || visibleWidth != scrolledAreaWidth) { - // Do a second reflow with the adjusted width and height settings - // This sets up all of the frames with the correct width and height. - // Reflow with the same width constraint as for the first reflow. If the width is - // unconstrained, then we want to allow the listbox/dropdown to get wider if a vertical - // scrollbar is now needed. - secondPassState.mComputedWidth = aReflowState.mComputedWidth; - secondPassState.mComputedHeight = visibleHeight; - secondPassState.reason = eReflowReason_Resize; - nsGfxScrollFrame::Reflow(aPresContext, aDesiredSize, secondPassState, aStatus); if (aReflowState.mComputedHeight == 0) { aDesiredSize.ascent = 0; diff --git a/layout/html/forms/src/nsListControlFrame.cpp b/layout/html/forms/src/nsListControlFrame.cpp index dbb9ff83eab..83773008cc0 100644 --- a/layout/html/forms/src/nsListControlFrame.cpp +++ b/layout/html/forms/src/nsListControlFrame.cpp @@ -1319,17 +1319,14 @@ nsListControlFrame::Reflow(nsIPresContext* aPresContext, } } + // Do a second reflow with the adjusted width and height settings + // This sets up all of the frames with the correct width and height. + secondPassState.mComputedWidth = visibleWidth; + secondPassState.mComputedHeight = visibleHeight; + secondPassState.reason = eReflowReason_Resize; + if (mPassId == 0 || mPassId == 2 || visibleHeight != scrolledAreaHeight || visibleWidth != scrolledAreaWidth) { - // Do a second reflow with the adjusted width and height settings - // This sets up all of the frames with the correct width and height. - // Reflow with the same width constraint as for the first reflow. If the width is - // unconstrained, then we want to allow the listbox/dropdown to get wider if a vertical - // scrollbar is now needed. - secondPassState.mComputedWidth = aReflowState.mComputedWidth; - secondPassState.mComputedHeight = visibleHeight; - secondPassState.reason = eReflowReason_Resize; - nsGfxScrollFrame::Reflow(aPresContext, aDesiredSize, secondPassState, aStatus); if (aReflowState.mComputedHeight == 0) { aDesiredSize.ascent = 0;