diff options
author | Brian Smith <brian@dbsoft.org> | 2020-11-16 07:23:44 -0600 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-11-19 22:44:22 +0000 |
commit | 4f0f4aa8794ef12260d9d973b40ad3b942b69b72 (patch) | |
tree | c17d559d242f6b7c4a045a5845b78e9d81d841f1 /widget/cocoa/nsNativeThemeCocoa.mm | |
parent | 53ca366d2b34f237e42f8108d7a71586b5285e44 (diff) | |
download | UXP-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.mm | 35 |
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; |