REGRESSION (r232799): Form controls are blank in dark mode.
authortimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 Jun 2018 17:32:50 +0000 (17:32 +0000)
committertimothy@apple.com <timothy@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 15 Jun 2018 17:32:50 +0000 (17:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=186677
rdar://problem/41162899

Reviewed by Wenson Hsieh.

* rendering/RenderThemeMac.mm:
(-[WebCoreTextFieldCell _adjustedCoreUIDrawOptionsForDrawingBordersOnly:]):
Dark mode controls don't have borders, just a semi-transparent background of shadows.
In the dark mode case we can't disable borders, or we will not paint anything for the control.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232880 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderThemeMac.mm

index 93e51bc..0e9edfb 100644 (file)
@@ -1,3 +1,17 @@
+2018-06-15  Timothy Hatcher  <timothy@apple.com>
+
+        REGRESSION (r232799): Form controls are blank in dark mode.
+
+        https://bugs.webkit.org/show_bug.cgi?id=186677
+        rdar://problem/41162899
+
+        Reviewed by Wenson Hsieh.
+
+        * rendering/RenderThemeMac.mm:
+        (-[WebCoreTextFieldCell _adjustedCoreUIDrawOptionsForDrawingBordersOnly:]):
+        Dark mode controls don't have borders, just a semi-transparent background of shadows.
+        In the dark mode case we can't disable borders, or we will not paint anything for the control.
+
 2018-06-15  Zalan Bujtas  <zalan@apple.com>
 
         [LFC] Fix static position left/top
index a58d733..1e334a1 100644 (file)
@@ -156,6 +156,14 @@ static const double progressAnimationNumFrames = 256;
 
 - (CFDictionaryRef)_adjustedCoreUIDrawOptionsForDrawingBordersOnly:(CFDictionaryRef)defaultOptions
 {
+#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
+    // Dark mode controls don't have borders, just a semi-transparent background of shadows.
+    // In the dark mode case we can't disable borders, or we will not paint anything for the control.
+    NSAppearanceName appearance = [self.controlView.effectiveAppearance bestMatchFromAppearancesWithNames:@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
+    if ([appearance isEqualToString:NSAppearanceNameDarkAqua])
+        return defaultOptions;
+#endif
+
     // FIXME: This is a workaround for <rdar://problem/11385461>. When that bug is resolved, we should remove this code,
     // as well as the internal method overrides below.
     CFMutableDictionaryRef coreUIDrawOptions = CFDictionaryCreateMutableCopy(NULL, 0, defaultOptions);