Diff
Modified: releases/WebKitGTK/webkit-2.26/ChangeLog (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/ChangeLog 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/ChangeLog 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1,3 +1,14 @@
+2020-01-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
+ https://bugs.webkit.org/show_bug.cgi?id=197947
+
+ Reviewed by Michael Catanzaro.
+
+ Do not define HAVE_OS_DARK_MODE_SUPPORT.
+
+ * Source/cmake/OptionsGTK.cmake:
+
2020-01-23 Adrian Perez de Castro <ape...@igalia.com>
Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.26.3 release
Modified: releases/WebKitGTK/webkit-2.26/LayoutTests/ChangeLog (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/LayoutTests/ChangeLog 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/LayoutTests/ChangeLog 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1,3 +1,16 @@
+2020-01-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
+ https://bugs.webkit.org/show_bug.cgi?id=197947
+
+ Reviewed by Michael Catanzaro.
+
+ Rebaseline several tests for the new behavior.
+
+ * platform/gtk/css-dark-mode/color-scheme-priority-expected.txt: Added.
+ * platform/gtk/css-dark-mode/default-colors-expected.txt:
+ * platform/gtk/css-dark-mode/prefers-color-scheme-expected.txt:
+
2020-01-07 Fujii Hironori <fujii.hiron...@gmail.com>
[GTK] fast/text/atsui-rtl-override-selection.html is failing since r254114
Added: releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/color-scheme-priority-expected.txt (0 => 255350)
--- releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/color-scheme-priority-expected.txt (rev 0)
+++ releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/color-scheme-priority-expected.txt 2020-01-29 10:38:43 UTC (rev 255350)
@@ -0,0 +1,5 @@
+
+PASS Element colors are correct in light color scheme with light and dark color scheme
+PASS Dark color scheme enabled
+FAIL Element colors are correct in dark color scheme with light and dark color scheme assert_equals: expected "rgb(255, 255, 255)" but got "rgb(0, 0, 0)"
+
Modified: releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/default-colors-expected.txt (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/default-colors-expected.txt 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/default-colors-expected.txt 2020-01-29 10:38:43 UTC (rev 255350)
@@ -2,9 +2,9 @@
PASS Body text color is black, since the page isn't in dark mode
PASS View base background color is white, since the page isn't in dark mode
PASS Set dark appearance
-FAIL Body text color is black, since the page hasn't set a supported color scheme assert_equals: expected "rgb(0, 0, 0)" but got "rgb(255, 255, 255)"
+PASS Body text color is black, since the page hasn't set a supported color scheme
PASS View base background color is white, since the page hasn't set a supported color scheme
PASS Set prefers-color-schemes: light dark on the body
-PASS Body text color is white
-FAIL View base background color is a dark grey assert_equals: expected "rgb(30, 30, 30)" but got "rgb(51, 57, 59)"
+FAIL Body text color is white assert_equals: expected "rgb(255, 255, 255)" but got "rgb(0, 0, 0)"
+FAIL View base background color is a dark grey assert_equals: expected "rgb(30, 30, 30)" but got "rgb(255, 255, 255)"
Modified: releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/prefers-color-scheme-expected.txt (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/prefers-color-scheme-expected.txt 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/LayoutTests/platform/gtk/css-dark-mode/prefers-color-scheme-expected.txt 2020-01-29 10:38:43 UTC (rev 255350)
@@ -2,6 +2,6 @@
PASS Element colors are correct in light color scheme
PASS Element colors are correct in light color scheme with boolean context query
PASS Dark color scheme enabled
-FAIL Element colors are correct in dark color scheme assert_equals: expected "rgb(0, 0, 0)" but got "rgb(255, 255, 255)"
-FAIL Element colors are correct in dark color scheme with boolean context query assert_equals: expected "rgb(0, 0, 0)" but got "rgb(255, 255, 255)"
+PASS Element colors are correct in dark color scheme
+PASS Element colors are correct in dark color scheme with boolean context query
Modified: releases/WebKitGTK/webkit-2.26/Source/WTF/ChangeLog (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WTF/ChangeLog 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WTF/ChangeLog 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1,3 +1,14 @@
+2020-01-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
+ https://bugs.webkit.org/show_bug.cgi?id=197947
+
+ Reviewed by Michael Catanzaro.
+
+ Do not define HAVE_OS_DARK_MODE_SUPPORT for the GTK port.
+
+ * wtf/PlatformHave.h:
+
2019-10-04 Heiko Becker <heire...@exherbo.org>
Fix build with icu 65.1
Modified: releases/WebKitGTK/webkit-2.26/Source/WTF/wtf/Platform.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WTF/wtf/Platform.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WTF/wtf/Platform.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1447,7 +1447,7 @@
#endif
#endif
-#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000) || PLATFORM(GTK)
+#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400) || (PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000)
#define HAVE_OS_DARK_MODE_SUPPORT 1
#endif
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/ChangeLog (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/ChangeLog 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/ChangeLog 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1,3 +1,24 @@
+2020-01-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
+ https://bugs.webkit.org/show_bug.cgi?id=197947
+
+ Reviewed by Michael Catanzaro.
+
+ * dom/Document.cpp:
+ (WebCore::Document::useDarkAppearance const): Remove HAVE(OS_DARK_MODE_SUPPORT) because ENABLE(DARK_MODE_CSS)
+ guards should be enough.
+ * page/FrameView.cpp:
+ (WebCore::FrameView::updateBackgroundRecursively): Revert changes made in r244635.
+ * page/Page.cpp:
+ (WebCore::Page::effectiveAppearanceDidChange): Use ENABLE(DARK_MODE_CSS) instead of HAVE(OS_DARK_MODE_SUPPORT).
+ (WebCore::Page::useDarkAppearance const): Ditto.
+ * rendering/RenderThemeGtk.cpp:
+ (WebCore::RenderThemeGtk::systemColor const): Revert changes made in r244635.
+ * rendering/RenderThemeGtk.h:
+ * testing/InternalSettings.cpp:
+ (WebCore::InternalSettings::setUseDarkAppearanceInternal): Revert changes made in r244635.
+
2020-01-06 Fujii Hironori <hironori.fu...@sony.com>
ComplexTextController::offsetForPosition returns a wrong offset for a glyph boundary in a RTL text
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/dom/Document.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/dom/Document.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/dom/Document.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -6927,7 +6927,6 @@
bool Document::useDarkAppearance(const RenderStyle* style) const
{
-#if HAVE(OS_DARK_MODE_SUPPORT)
#if ENABLE(DARK_MODE_CSS)
OptionSet<ColorScheme> colorScheme;
@@ -6956,9 +6955,6 @@
if (colorScheme.contains(ColorScheme::Dark))
return pageUsesDarkAppearance;
#endif
-#else
- UNUSED_PARAM(style);
-#endif
return false;
}
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/page/FrameView.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/page/FrameView.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/page/FrameView.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -2971,13 +2971,8 @@
void FrameView::updateBackgroundRecursively(const Optional<Color>& backgroundColor)
{
#if HAVE(OS_DARK_MODE_SUPPORT)
-#if PLATFORM(MAC) || PLATFORM(IOS_FAMILY)
- static const auto cssValueControlBackground = CSSValueAppleSystemControlBackground;
+ Color baseBackgroundColor = backgroundColor.valueOr(RenderTheme::singleton().systemColor(CSSValueAppleSystemControlBackground, styleColorOptions()));
#else
- static const auto cssValueControlBackground = CSSValueWindow;
-#endif
- Color baseBackgroundColor = backgroundColor.valueOr(RenderTheme::singleton().systemColor(cssValueControlBackground, styleColorOptions()));
-#else
Color baseBackgroundColor = backgroundColor.valueOr(Color::white);
#endif
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/page/Page.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/page/Page.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/page/Page.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -2714,7 +2714,7 @@
void Page::effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel)
{
-#if HAVE(OS_DARK_MODE_SUPPORT)
+#if ENABLE(DARK_MODE_CSS)
if (m_useDarkAppearance == useDarkAppearance && m_useElevatedUserInterfaceLevel == useElevatedUserInterfaceLevel)
return;
@@ -2738,7 +2738,7 @@
bool Page::useDarkAppearance() const
{
-#if HAVE(OS_DARK_MODE_SUPPORT)
+#if ENABLE(DARK_MODE_CSS)
FrameView* view = mainFrame().view();
if (!view || !equalLettersIgnoringASCIICase(view->mediaType(), "screen"))
return false;
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -124,22 +124,6 @@
}
#endif
-static void themeChangedCallback()
-{
- Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment();
-}
-
-RenderThemeGtk::RenderThemeGtk()
-{
- static bool themeMonitorInitialized = false;
- if (!themeMonitorInitialized) {
- GtkSettings* settings = gtk_settings_get_default();
- g_signal_connect(settings, "notify::gtk-theme-name", G_CALLBACK(themeChangedCallback), nullptr);
- g_signal_connect(settings, "notify::gtk-color-scheme", G_CALLBACK(themeChangedCallback), nullptr);
- themeMonitorInitialized = true;
- }
-}
-
enum RenderThemePart {
Entry,
EntrySelection,
@@ -951,17 +935,6 @@
return styleColor(Entry, GTK_STATE_FLAG_ACTIVE, StyleColorForeground);
case CSSValueGraytext:
return styleColor(Entry, GTK_STATE_FLAG_INSENSITIVE, StyleColorForeground);
- case CSSValueWebkitControlBackground:
- return styleColor(Entry, GTK_STATE_FLAG_ACTIVE, StyleColorBackground);
- case CSSValueWindow: {
- // Only get window color from the theme in dark mode.
- gboolean preferDarkTheme = FALSE;
- if (auto* settings = gtk_settings_get_default())
- g_object_get(settings, "gtk-application-prefer-dark-theme", &preferDarkTheme, nullptr);
- if (preferDarkTheme)
- return styleColor(Window, GTK_STATE_FLAG_ACTIVE, StyleColorBackground);
- break;
- }
default:
break;
}
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/rendering/RenderThemeGtk.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -104,7 +104,6 @@
bool shouldHaveCapsLockIndicator(const HTMLInputElement&) const override;
private:
- RenderThemeGtk();
virtual ~RenderThemeGtk();
bool paintCheckbox(const RenderObject&, const PaintInfo&, const IntRect&) override;
Modified: releases/WebKitGTK/webkit-2.26/Source/WebCore/testing/InternalSettings.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebCore/testing/InternalSettings.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebCore/testing/InternalSettings.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -51,10 +51,6 @@
#include "SoupNetworkSession.h"
#endif
-#if PLATFORM(GTK)
-#include <gtk/gtk.h>
-#endif
-
namespace WebCore {
InternalSettings::Backup::Backup(Settings& settings)
@@ -542,16 +538,6 @@
void InternalSettings::setUseDarkAppearanceInternal(bool useDarkAppearance)
{
-#if PLATFORM(GTK)
- // GTK doesn't allow to change the theme from the web process, but tests need to do it, so
- // we do it here only for tests.
- if (auto* settings = gtk_settings_get_default()) {
- gboolean preferDarkTheme;
- g_object_get(settings, "gtk-application-prefer-dark-theme", &preferDarkTheme, nullptr);
- if (preferDarkTheme != useDarkAppearance)
- g_object_set(settings, "gtk-application-prefer-dark-theme", useDarkAppearance, nullptr);
- }
-#endif
ASSERT(m_page);
m_page->effectiveAppearanceDidChange(useDarkAppearance, m_page->useElevatedUserInterfaceLevel());
}
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/ChangeLog (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/ChangeLog 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/ChangeLog 2020-01-29 10:38:43 UTC (rev 255350)
@@ -1,3 +1,40 @@
+2020-01-28 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
+ https://bugs.webkit.org/show_bug.cgi?id=197947
+
+ Reviewed by Michael Catanzaro.
+
+ Handle the theme changes in the UI process, converting dark variant to the light one before sending the theme
+ name to the web process. The web process is still notified when a dark theme is in use, so that if website
+ prefers a dark color scheme it will be used, but the gtk theme that will be used for controls styling will
+ always be light.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode const): Encode themeName.
+ (WebKit::WebPageCreationParameters::decode): Decode themeName.
+ * Shared/WebPageCreationParameters.h:
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::themeName const): Get the theme name that should be used by the web process.
+ * UIProcess/API/gtk/PageClientImpl.h:
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (themeChanged): Call WebPageProxy::themeDidChange().
+ (applicationPreferDarkThemeChanged):
+ (webkitWebViewBaseSetToplevelOnScreenWindow): Use a different callback for the theme name change.
+ * UIProcess/PageClient.h:
+ * UIProcess/WebPageProxy.cpp:
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/gtk/WebPageProxyGtk.cpp:
+ (WebKit::WebPageProxy::themeDidChange): Send ThemeDidChange message to the web process with the theme name to use.
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::WebPage): Initialize the theme name.
+ (WebKit::WebPage::effectiveAppearanceDidChange): Use this now for GTK port too.
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in: Add ThemeDidChange message.
+ * WebProcess/WebPage/gtk/WebPageGtk.cpp:
+ (WebKit::WebPage::themeDidChange): Set the theme given name in gtk settings.
+ * WebProcess/gtk/WebProcessMainGtk.cpp:
+
2019-09-26 Patrick Griffis <pgrif...@igalia.com>
[GTK] Fix logic of dark theme detection
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -133,6 +133,10 @@
#endif
encoder << backgroundColor;
encoder << oldPageID;
+
+#if PLATFORM(GTK)
+ encoder << themeName;
+#endif
}
Optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decoder& decoder)
@@ -404,6 +408,11 @@
return WTF::nullopt;
parameters.oldPageID = WTFMove(*oldPageID);
+#if PLATFORM(GTK)
+ if (!decoder.decode(parameters.themeName))
+ return WTF::nullopt;
+#endif
+
return parameters;
}
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/Shared/WebPageCreationParameters.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -210,6 +210,10 @@
Optional<WebCore::Color> backgroundColor;
Optional<WebCore::PageIdentifier> oldPageID;
+
+#if PLATFORM(GTK)
+ String themeName;
+#endif
};
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -579,4 +579,21 @@
}
#endif
+String PageClientImpl::themeName() const
+{
+ if (auto* themeNameEnv = g_getenv("GTK_THEME")) {
+ String name = String::fromUTF8(themeNameEnv);
+ if (name.endsWith("-dark") || name.endsWith(":dark"))
+ return name.substring(0, name.length() - 5);
+ return name;
+ }
+
+ GUniqueOutPtr<char> themeNameSetting;
+ g_object_get(gtk_widget_get_settings(m_viewWidget), "gtk-theme-name", &themeNameSetting.outPtr(), nullptr);
+ String name = String::fromUTF8(themeNameSetting.get());
+ if (name.endsWith("-dark"))
+ return name.substring(0, name.length() - 5);
+ return name;
+}
+
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -172,6 +172,8 @@
IPC::Attachment hostFileDescriptor() override;
#endif
+ String themeName() const override;
+
// Members of PageClientImpl class
GtkWidget* m_viewWidget;
DefaultUndoController m_undoController;
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -292,6 +292,11 @@
static void themeChanged(WebKitWebViewBase* webViewBase)
{
+ webViewBase->priv->pageProxy->themeDidChange();
+}
+
+static void applicationPreferDarkThemeChanged(WebKitWebViewBase* webViewBase)
+{
webViewBase->priv->pageProxy->effectiveAppearanceDidChange();
}
@@ -371,7 +376,7 @@
priv->themeChangedID =
g_signal_connect_swapped(settings, "notify::gtk-theme-name", G_CALLBACK(themeChanged), webViewBase);
priv->applicationPreferDarkThemeID =
- g_signal_connect_swapped(settings, "notify::gtk-application-prefer-dark-theme", G_CALLBACK(themeChanged), webViewBase);
+ g_signal_connect_swapped(settings, "notify::gtk-application-prefer-dark-theme", G_CALLBACK(applicationPreferDarkThemeChanged), webViewBase);
if (gtk_widget_get_realized(GTK_WIDGET(window)))
gtk_widget_realize(GTK_WIDGET(webViewBase));
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/PageClient.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/PageClient.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/PageClient.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -510,6 +510,10 @@
#if USE(WPE_RENDERER)
virtual IPC::Attachment hostFileDescriptor() = 0;
#endif
+
+#if PLATFORM(GTK)
+ virtual String themeName() const = 0;
+#endif
};
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -7292,6 +7292,10 @@
process.addWebUserContentControllerProxy(m_userContentController, parameters);
+#if PLATFORM(GTK)
+ parameters.themeName = pageClient().themeName();
+#endif
+
return parameters;
}
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/WebPageProxy.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -806,6 +806,7 @@
#if PLATFORM(GTK)
PlatformViewWidget viewWidget();
bool makeGLContextCurrent();
+ void themeDidChange();
#endif
const Optional<WebCore::Color>& backgroundColor() const { return m_backgroundColor; }
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/gtk/WebPageProxyGtk.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/gtk/WebPageProxyGtk.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/UIProcess/gtk/WebPageProxyGtk.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -166,4 +166,13 @@
webkitWebViewBaseShowEmojiChooser(WEBKIT_WEB_VIEW_BASE(viewWidget()), caretRect, WTFMove(completionHandler));
}
+void WebPageProxy::themeDidChange()
+{
+ if (!hasRunningProcess())
+ return;
+
+ send(Messages::WebPage::ThemeDidChange(pageClient().themeName()));
+ effectiveAppearanceDidChange();
+}
+
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -35,6 +35,9 @@
int main(int argc, char** argv)
{
+ // Ignore the GTK_THEME environment variable, the theme is always set by the UI process now.
+ unsetenv("GTK_THEME");
+
#if USE(GCRYPT)
PAL::GCrypt::initialize();
#endif
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -564,6 +564,10 @@
setGapBetweenPages(parameters.gapBetweenPages);
setPaginationLineGridEnabled(parameters.paginationLineGridEnabled);
+#if PLATFORM(GTK)
+ themeDidChange(WTFMove(parameters.themeName));
+#endif
+
effectiveAppearanceDidChange(parameters.useDarkAppearance, parameters.useElevatedUserInterfaceLevel);
if (parameters.isEditable)
@@ -4665,12 +4669,10 @@
#endif
-#if !PLATFORM(GTK)
void WebPage::effectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel)
{
corePage()->effectiveAppearanceDidChange(useDarkAppearance, useElevatedUserInterfaceLevel);
}
-#endif
void WebPage::beginPrinting(FrameIdentifier frameID, const PrintInfo& printInfo)
{
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.h (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.h 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.h 2020-01-29 10:38:43 UTC (rev 255350)
@@ -777,6 +777,8 @@
void showEmojiPicker(WebCore::Frame&);
void getCenterForZoomGesture(const WebCore::IntPoint& centerInViewCoordinates, CompletionHandler<void(WebCore::IntPoint&&)>&&);
+
+ void themeDidChange(String&&);
#endif
void didApplyStyle();
@@ -1967,6 +1969,10 @@
#if ENABLE(TEXT_AUTOSIZING)
WebCore::Timer m_textAutoSizingAdjustmentTimer;
#endif
+
+#if PLATFORM(GTK)
+ String m_themeName;
+#endif
};
#if !PLATFORM(IOS_FAMILY)
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2020-01-29 10:38:43 UTC (rev 255350)
@@ -495,6 +495,10 @@
EffectiveAppearanceDidChange(bool useDarkAppearance, bool useElevatedUserInterfaceLevel);
+#if PLATFORM(GTK)
+ ThemeDidChange(String themeName)
+#endif
+
#if PLATFORM(COCOA)
RequestActiveNowPlayingSessionInfo(WebKit::CallbackID callbackID)
#endif
Modified: releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp 2020-01-29 10:38:43 UTC (rev 255350)
@@ -203,11 +203,14 @@
sendWithAsyncReply(Messages::WebPageProxy::ShowEmojiPicker(frame.view()->contentsToRootView(frame.selection().absoluteCaretBounds())), WTFMove(completionHandler));
}
-void WebPage::effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance)
+void WebPage::themeDidChange(String&& themeName)
{
- if (auto* settings = gtk_settings_get_default())
- g_object_set(settings, "gtk-application-prefer-dark-theme", useDarkAppearance, nullptr);
- corePage()->effectiveAppearanceDidChange(useDarkAppearance, useInactiveAppearance);
+ if (m_themeName == themeName)
+ return;
+
+ m_themeName = WTFMove(themeName);
+ g_object_set(gtk_settings_get_default(), "gtk-theme-name", m_themeName.utf8().data(), nullptr);
+ Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment();
}
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.26/Source/cmake/OptionsGTK.cmake (255349 => 255350)
--- releases/WebKitGTK/webkit-2.26/Source/cmake/OptionsGTK.cmake 2020-01-29 10:38:26 UTC (rev 255349)
+++ releases/WebKitGTK/webkit-2.26/Source/cmake/OptionsGTK.cmake 2020-01-29 10:38:43 UTC (rev 255350)
@@ -195,7 +195,6 @@
set(GDK_INCLUDE_DIRS ${GDK3_INCLUDE_DIRS})
SET_AND_EXPOSE_TO_BUILD(HAVE_GTK_UNIX_PRINTING ${GTKUnixPrint_FOUND})
-SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1)
if (USE_WPE_RENDERER)
find_package(WPE 1.3.0)