don't add scrollbar width to getPrefWidth in nsComboboxControlFrame if the themed widget has set the internal button width to 0. b=381669 r/sr=roc

This commit is contained in:
joshmoz@gmail.com 2007-05-23 12:16:27 -07:00
parent 2c9223402e
commit d12acf85cf

View File

@ -593,15 +593,16 @@ nsComboboxControlFrame::GetPrefWidth(nsIRenderingContext *aRenderingContext)
// of our display frame plus a scrollbar. This can happen, eg, if the
// dropdown is empty.
if (NS_LIKELY(mListControlFrame && mDisplayFrame)) {
nsIScrollableFrame* scrollable;
CallQueryInterface(mListControlFrame, &scrollable);
NS_ASSERTION(scrollable, "List must be a scrollable frame");
nsBoxLayoutState bls(PresContext(), aRenderingContext);
nscoord displayResult =
scrollable->GetDesiredScrollbarSizes(&bls).LeftRight() +
nsLayoutUtils::IntrinsicForContainer(aRenderingContext, mDisplayFrame,
nsLayoutUtils::PREF_WIDTH);
nscoord displayResult = nsLayoutUtils::IntrinsicForContainer(aRenderingContext, mDisplayFrame,
nsLayoutUtils::PREF_WIDTH);
nsPresContext *presContext = PresContext();
if (!IsThemed() || presContext->GetTheme()->ThemeNeedsComboboxDropmarker()) {
nsIScrollableFrame* scrollable;
CallQueryInterface(mListControlFrame, &scrollable);
NS_ASSERTION(scrollable, "List must be a scrollable frame");
nsBoxLayoutState bls(presContext, aRenderingContext);
displayResult += scrollable->GetDesiredScrollbarSizes(&bls).LeftRight();
}
result = PR_MAX(result, displayResult);
}