mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1030843 - Fix crash in nsNativeThemeCocoa::GetMinimumWidgetSize. r=roc
This commit is contained in:
parent
56ca526f86
commit
b6e95499e1
@ -28,14 +28,14 @@ class nsIAtom;
|
||||
class nsIWidget;
|
||||
|
||||
// IID for the nsITheme interface
|
||||
// {b0f3efe9-0bd4-4f6b-8daa-0ec7f6006822}
|
||||
// {7a3474d9-3bd6-407c-8657-c5c7633639f0}
|
||||
#define NS_ITHEME_IID \
|
||||
{ 0x4440b5c7, 0xd8bd, 0x4d9c, \
|
||||
{ 0x9c, 0x3e, 0xa5, 0xe6, 0x26, 0x81, 0x10, 0xa0 } }
|
||||
// {D930E29B-6909-44e5-AB4B-AF10D6923705}
|
||||
{ 0x7a3474d9, 0x3bd6, 0x407c, \
|
||||
{ 0x86, 0x57, 0xc5, 0xc7, 0x63, 0x36, 0x39, 0xf0 } }
|
||||
// {0ae05515-cf7a-45a8-9e02-6556de7685b1}
|
||||
#define NS_THEMERENDERER_CID \
|
||||
{ 0x9020805b, 0x14a3, 0x4125, \
|
||||
{ 0xa5, 0x63, 0x4a, 0x8c, 0x5d, 0xe0, 0xa9, 0xa3 } }
|
||||
{ 0x0ae05515, 0xcf7a, 0x45a8, \
|
||||
{ 0x9e, 0x02, 0x65, 0x56, 0xde, 0x76, 0x85, 0xb1 } }
|
||||
|
||||
/**
|
||||
* nsITheme is a service that provides platform-specific native
|
||||
@ -113,7 +113,7 @@ public:
|
||||
* minimum size; if false, this size is the only valid size for the
|
||||
* widget.
|
||||
*/
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsRenderingContext* aContext,
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsPresContext* aPresContext,
|
||||
nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult,
|
||||
|
@ -3883,7 +3883,7 @@ nsLayoutUtils::IntrinsicForContainer(nsRenderingContext *aRenderingContext,
|
||||
bool canOverride = true;
|
||||
nsPresContext *presContext = aFrame->PresContext();
|
||||
presContext->GetTheme()->
|
||||
GetMinimumWidgetSize(aRenderingContext, aFrame, disp->mAppearance,
|
||||
GetMinimumWidgetSize(presContext, aFrame, disp->mAppearance,
|
||||
&size, &canOverride);
|
||||
|
||||
nscoord themeWidth = presContext->DevPixelsToAppUnits(size.width);
|
||||
|
@ -499,12 +499,10 @@ nsRangeFrame::GetValueAtEventPoint(WidgetGUIEvent* aEvent)
|
||||
if (IsThemed()) {
|
||||
// We need to get the size of the thumb from the theme.
|
||||
nsPresContext *presContext = PresContext();
|
||||
nsRefPtr<nsRenderingContext> tmpCtx =
|
||||
presContext->PresShell()->CreateReferenceRenderingContext();
|
||||
bool notUsedCanOverride;
|
||||
nsIntSize size;
|
||||
presContext->GetTheme()->
|
||||
GetMinimumWidgetSize(tmpCtx.get(), this, NS_THEME_RANGE_THUMB, &size,
|
||||
GetMinimumWidgetSize(presContext, this, NS_THEME_RANGE_THUMB, &size,
|
||||
¬UsedCanOverride);
|
||||
thumbSize.width = presContext->DevPixelsToAppUnits(size.width);
|
||||
thumbSize.height = presContext->DevPixelsToAppUnits(size.height);
|
||||
|
@ -1000,7 +1000,7 @@ nsFlexContainerFrame::GenerateFlexItemForChild(
|
||||
nsIntSize widgetMinSize(0, 0);
|
||||
bool canOverride = true;
|
||||
aPresContext->GetTheme()->
|
||||
GetMinimumWidgetSize(childRS.rendContext, aChildFrame,
|
||||
GetMinimumWidgetSize(aPresContext, aChildFrame,
|
||||
disp->mAppearance,
|
||||
&widgetMinSize, &canOverride);
|
||||
|
||||
|
@ -4132,7 +4132,7 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
bool canOverride = true;
|
||||
nsPresContext *presContext = PresContext();
|
||||
presContext->GetTheme()->
|
||||
GetMinimumWidgetSize(aRenderingContext, this, disp->mAppearance,
|
||||
GetMinimumWidgetSize(presContext, this, disp->mAppearance,
|
||||
&widget, &canOverride);
|
||||
|
||||
nsSize size;
|
||||
|
@ -974,17 +974,14 @@ ScrollFrameHelper::GetNondisappearingScrollbarWidth(nsBoxLayoutState* aState)
|
||||
mVScrollbarBox,
|
||||
NS_THEME_SCROLLBAR_NON_DISAPPEARING)) {
|
||||
nsIntSize size;
|
||||
nsRenderingContext* rendContext = aState->GetRenderingContext();
|
||||
if (rendContext) {
|
||||
bool canOverride = true;
|
||||
theme->GetMinimumWidgetSize(rendContext,
|
||||
mVScrollbarBox,
|
||||
NS_THEME_SCROLLBAR_NON_DISAPPEARING,
|
||||
&size,
|
||||
&canOverride);
|
||||
if (size.width) {
|
||||
return aState->PresContext()->DevPixelsToAppUnits(size.width);
|
||||
}
|
||||
bool canOverride = true;
|
||||
theme->GetMinimumWidgetSize(aState->PresContext(),
|
||||
mVScrollbarBox,
|
||||
NS_THEME_SCROLLBAR_NON_DISAPPEARING,
|
||||
&size,
|
||||
&canOverride);
|
||||
if (size.width) {
|
||||
return aState->PresContext()->DevPixelsToAppUnits(size.width);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -682,18 +682,15 @@ nsIFrame::AddCSSMinSize(nsBoxLayoutState& aState, nsIFrame* aBox, nsSize& aSize,
|
||||
nsITheme *theme = aState.PresContext()->GetTheme();
|
||||
if (theme && theme->ThemeSupportsWidget(aState.PresContext(), aBox, display->mAppearance)) {
|
||||
nsIntSize size;
|
||||
nsRenderingContext* rendContext = aState.GetRenderingContext();
|
||||
if (rendContext) {
|
||||
theme->GetMinimumWidgetSize(rendContext, aBox,
|
||||
display->mAppearance, &size, &canOverride);
|
||||
if (size.width) {
|
||||
aSize.width = aState.PresContext()->DevPixelsToAppUnits(size.width);
|
||||
aWidthSet = true;
|
||||
}
|
||||
if (size.height) {
|
||||
aSize.height = aState.PresContext()->DevPixelsToAppUnits(size.height);
|
||||
aHeightSet = true;
|
||||
}
|
||||
theme->GetMinimumWidgetSize(aState.PresContext(), aBox,
|
||||
display->mAppearance, &size, &canOverride);
|
||||
if (size.width) {
|
||||
aSize.width = aState.PresContext()->DevPixelsToAppUnits(size.width);
|
||||
aWidthSet = true;
|
||||
}
|
||||
if (size.height) {
|
||||
aSize.height = aState.PresContext()->DevPixelsToAppUnits(size.height);
|
||||
aHeightSet = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -167,9 +167,7 @@ nsScrollbarFrame::GetMargin(nsMargin& aMargin)
|
||||
if (theme) {
|
||||
nsIntSize size;
|
||||
bool isOverridable;
|
||||
nsRefPtr<nsRenderingContext> rc =
|
||||
presContext->PresShell()->CreateReferenceRenderingContext();
|
||||
theme->GetMinimumWidgetSize(rc, this, NS_THEME_SCROLLBAR, &size,
|
||||
theme->GetMinimumWidgetSize(presContext, this, NS_THEME_SCROLLBAR, &size,
|
||||
&isOverridable);
|
||||
if (IsHorizontal()) {
|
||||
aMargin.top = -presContext->DevPixelsToAppUnits(size.height);
|
||||
|
@ -2087,7 +2087,7 @@ nsTreeBodyFrame::GetTwistyRect(int32_t aRowIndex,
|
||||
if (useTheme) {
|
||||
nsIntSize minTwistySizePx(0,0);
|
||||
bool canOverride = true;
|
||||
theme->GetMinimumWidgetSize(&aRenderingContext, this, twistyDisplayData->mAppearance,
|
||||
theme->GetMinimumWidgetSize(aPresContext, this, twistyDisplayData->mAppearance,
|
||||
&minTwistySizePx, &canOverride);
|
||||
|
||||
// GMWS() returns size in pixels, we need to convert it back to app units
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
virtual bool GetWidgetOverflow(nsDeviceContext* aContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType, nsRect* aOverflowRect);
|
||||
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* aFrame,
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult, bool* aIsOverridable);
|
||||
NS_IMETHOD WidgetStateChanged(nsIFrame* aFrame, uint8_t aWidgetType,
|
||||
|
@ -2933,7 +2933,7 @@ static const int32_t kRegularScrollbarThumbMinSize = 26;
|
||||
static const int32_t kSmallScrollbarThumbMinSize = 26;
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNativeThemeCocoa::GetMinimumWidgetSize(nsRenderingContext* aContext,
|
||||
nsNativeThemeCocoa::GetMinimumWidgetSize(nsPresContext* aPresContext,
|
||||
nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult,
|
||||
@ -3223,7 +3223,7 @@ nsNativeThemeCocoa::GetMinimumWidgetSize(nsRenderingContext* aContext,
|
||||
}
|
||||
}
|
||||
|
||||
if (IsHiDPIContext(aFrame->PresContext())) {
|
||||
if (IsHiDPIContext(aPresContext)) {
|
||||
*aResult = *aResult * 2;
|
||||
}
|
||||
|
||||
|
@ -1046,7 +1046,7 @@ nsNativeThemeGTK::GetWidgetOverflow(nsDeviceContext* aContext,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNativeThemeGTK::GetMinimumWidgetSize(nsRenderingContext* aContext,
|
||||
nsNativeThemeGTK::GetMinimumWidgetSize(nsPresContext* aPresContext,
|
||||
nsIFrame* aFrame, uint8_t aWidgetType,
|
||||
nsIntSize* aResult, bool* aIsOverridable)
|
||||
{
|
||||
|
@ -39,7 +39,7 @@ public:
|
||||
uint8_t aWidgetType,
|
||||
nsRect* aOverflowRect);
|
||||
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsRenderingContext* aContext,
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsPresContext* aPresContext,
|
||||
nsIFrame* aFrame, uint8_t aWidgetType,
|
||||
nsIntSize* aResult, bool* aIsOverridable);
|
||||
|
||||
|
@ -2240,7 +2240,7 @@ nsNativeThemeWin::GetWidgetOverflow(nsDeviceContext* aContext,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsNativeThemeWin::GetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* aFrame,
|
||||
nsNativeThemeWin::GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult, bool* aIsOverridable)
|
||||
{
|
||||
@ -2249,7 +2249,7 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* a
|
||||
|
||||
HANDLE theme = GetTheme(aWidgetType);
|
||||
if (!theme)
|
||||
return ClassicGetMinimumWidgetSize(aContext, aFrame, aWidgetType, aResult, aIsOverridable);
|
||||
return ClassicGetMinimumWidgetSize(aPresContext, aFrame, aWidgetType, aResult, aIsOverridable);
|
||||
|
||||
switch (aWidgetType) {
|
||||
case NS_THEME_GROUPBOX:
|
||||
@ -2290,7 +2290,7 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* a
|
||||
case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
|
||||
case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
|
||||
case NS_THEME_DROPDOWN_BUTTON:
|
||||
return ClassicGetMinimumWidgetSize(aContext, aFrame, aWidgetType, aResult, aIsOverridable);
|
||||
return ClassicGetMinimumWidgetSize(aPresContext, aFrame, aWidgetType, aResult, aIsOverridable);
|
||||
|
||||
case NS_THEME_MENUITEM:
|
||||
case NS_THEME_CHECKMENUITEM:
|
||||
@ -2887,7 +2887,7 @@ nsNativeThemeWin::ClassicGetWidgetPadding(nsDeviceContext* aContext,
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsNativeThemeWin::ClassicGetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* aFrame,
|
||||
nsNativeThemeWin::ClassicGetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult, bool* aIsOverridable)
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ public:
|
||||
uint8_t aWidgetType,
|
||||
nsRect* aOverflowRect);
|
||||
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* aFrame,
|
||||
NS_IMETHOD GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult,
|
||||
bool* aIsOverridable);
|
||||
@ -96,7 +96,7 @@ protected:
|
||||
nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntMargin* aResult);
|
||||
nsresult ClassicGetMinimumWidgetSize(nsRenderingContext* aContext, nsIFrame* aFrame,
|
||||
nsresult ClassicGetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aFrame,
|
||||
uint8_t aWidgetType,
|
||||
nsIntSize* aResult,
|
||||
bool* aIsOverridable);
|
||||
|
Loading…
Reference in New Issue
Block a user