summaryrefslogtreecommitdiffstats
path: root/widget/cocoa/nsNativeThemeCocoa.mm
diff options
context:
space:
mode:
authorBrian Smith <brian@dbsoft.org>2020-11-16 07:23:44 -0600
committerMoonchild <moonchild@palemoon.org>2020-11-19 22:44:22 +0000
commit4f0f4aa8794ef12260d9d973b40ad3b942b69b72 (patch)
treec17d559d242f6b7c4a045a5845b78e9d81d841f1 /widget/cocoa/nsNativeThemeCocoa.mm
parent53ca366d2b34f237e42f8108d7a71586b5285e44 (diff)
downloadUXP-4f0f4aa8794ef12260d9d973b40ad3b942b69b72.tar
UXP-4f0f4aa8794ef12260d9d973b40ad3b942b69b72.tar.gz
UXP-4f0f4aa8794ef12260d9d973b40ad3b942b69b72.tar.lz
UXP-4f0f4aa8794ef12260d9d973b40ad3b942b69b72.tar.xz
UXP-4f0f4aa8794ef12260d9d973b40ad3b942b69b72.zip
Issue #1667 - Part 2: Add MacOS 11.0 Big Sur widget compatibility
This involves refactoring the vibrancy and OpenGL/Pixel rendering changes contained in the following Mozilla meta bugs: 1496823 and 1491445 Also add Big Sur to the features tests and update popup menu look and feel based on Mozilla bug 1656301.
Diffstat (limited to 'widget/cocoa/nsNativeThemeCocoa.mm')
-rw-r--r--widget/cocoa/nsNativeThemeCocoa.mm35
1 files changed, 24 insertions, 11 deletions
diff --git a/widget/cocoa/nsNativeThemeCocoa.mm b/widget/cocoa/nsNativeThemeCocoa.mm
index fc4f7f2e9..f93e40f7b 100644
--- a/widget/cocoa/nsNativeThemeCocoa.mm
+++ b/widget/cocoa/nsNativeThemeCocoa.mm
@@ -443,8 +443,8 @@ static ChildView* ChildViewForFrame(nsIFrame* aFrame)
if (!widget)
return nil;
- NSView* view = (NSView*)widget->GetNativeData(NS_NATIVE_WIDGET);
- return [view isKindOfClass:[ChildView class]] ? (ChildView*)view : nil;
+ NSWindow* window = (NSWindow*)widget->GetNativeData(NS_NATIVE_WINDOW);
+ return [window isKindOfClass:[BaseWindow class]] ? [(BaseWindow*)window mainChildView] : nil;
}
static NSWindow* NativeWindowForFrame(nsIFrame* aFrame,
@@ -2437,17 +2437,30 @@ nsNativeThemeCocoa::DrawWidgetBackground(nsRenderingContext* aContext,
break;
case NS_THEME_MENUSEPARATOR: {
- ThemeMenuState menuState;
- if (IsDisabled(aFrame, eventState)) {
- menuState = kThemeMenuDisabled;
+ // Workaround for visual artifacts issues with
+ // HIThemeDrawMenuSeparator on macOS Big Sur.
+ if (nsCocoaFeatures::OnBigSurOrLater()) {
+ CGRect separatorRect = macRect;
+ separatorRect.size.height = 1;
+ separatorRect.size.width -= 42;
+ separatorRect.origin.x += 21;
+ // Use a gray color similar to the native separator
+ CGContextSetRGBFillColor(cgContext, 0.816, 0.816, 0.816, 1.0);
+ CGContextFillRect(cgContext, separatorRect);
}
- else {
- menuState = CheckBooleanAttr(aFrame, nsGkAtoms::menuactive) ?
- kThemeMenuSelected : kThemeMenuActive;
+ else
+ {
+ ThemeMenuState menuState;
+ if (IsDisabled(aFrame, eventState)) {
+ menuState = kThemeMenuDisabled;
+ }
+ else {
+ menuState = CheckBooleanAttr(aFrame, nsGkAtoms::menuactive) ?
+ kThemeMenuSelected : kThemeMenuActive;
+ }
+ HIThemeMenuItemDrawInfo midi = { 0, kThemeMenuItemPlain, menuState };
+ HIThemeDrawMenuSeparator(&macRect, &macRect, &midi, cgContext, HITHEME_ORIENTATION);
}
-
- HIThemeMenuItemDrawInfo midi = { 0, kThemeMenuItemPlain, menuState };
- HIThemeDrawMenuSeparator(&macRect, &macRect, &midi, cgContext, HITHEME_ORIENTATION);
}
break;