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
--- a/layout/forms/nsComboboxControlFrame.cpp
+++ b/layout/forms/nsComboboxControlFrame.cpp
@@ -588,25 +588,26 @@ nsComboboxControlFrame::GetPrefWidth(nsI
} else {
result = 0;
}
// It's also possible that the pref width of our dropdown is less than that
// 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);
}
return result;
}
NS_IMETHODIMP
nsComboboxControlFrame::Reflow(nsPresContext* aPresContext,