Modified: trunk/Source/WebCore/platform/gtk/RenderThemeGadget.cpp (232453 => 232454)
--- trunk/Source/WebCore/platform/gtk/RenderThemeGadget.cpp 2018-06-03 20:22:05 UTC (rev 232453)
+++ trunk/Source/WebCore/platform/gtk/RenderThemeGadget.cpp 2018-06-03 22:15:21 UTC (rev 232454)
@@ -30,7 +30,6 @@
#include "FloatRect.h"
#include "GRefPtrGtk.h"
-#include <mutex>
namespace WebCore {
@@ -73,26 +72,6 @@
gtk_widget_path_iter_add_class(path, -1, className);
}
-static GtkStyleContext* baseStyleContext()
-{
- // Leaking here on purpose for it not to be destroyed unsafely at exit time.
- static GtkStyleContext* baseContext;
- static std::once_flag onceFlag;
-
- std::call_once(onceFlag, []() {
- GRefPtr<GtkWidgetPath> path = adoptGRef(gtk_widget_path_new());
- gtk_widget_path_append_type(path.get(), GTK_TYPE_WINDOW);
- gtk_widget_path_iter_set_object_name(path.get(), -1, "window");
- gtk_widget_path_iter_add_class(path.get(), -1, GTK_STYLE_CLASS_BACKGROUND);
-
- baseContext = gtk_style_context_new();
- gtk_style_context_set_path(baseContext, path.get());
- gtk_style_context_set_parent(baseContext, nullptr);
- });
-
- return baseContext;
-}
-
RenderThemeGadget::RenderThemeGadget(const RenderThemeGadget::Info& info, RenderThemeGadget* parent, const Vector<RenderThemeGadget::Info> siblings, unsigned position)
{
GRefPtr<GtkWidgetPath> path = parent ? adoptGRef(gtk_widget_path_copy(gtk_style_context_get_path(parent->context()))) : adoptGRef(gtk_widget_path_new());
@@ -103,7 +82,7 @@
gtk_widget_path_append_with_siblings(path.get(), siblingsPath.get(), position);
} else
appendElementToPath(path.get(), info);
- m_context = createStyleContext(path.get(), parent ? parent->context() : baseStyleContext());
+ m_context = createStyleContext(path.get(), parent ? parent->context() : nullptr);
}
RenderThemeGadget::~RenderThemeGadget() = default;
Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.cpp (232453 => 232454)
--- trunk/Source/WebCore/rendering/RenderThemeGtk.cpp 2018-06-03 20:22:05 UTC (rev 232453)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.cpp 2018-06-03 22:15:21 UTC (rev 232454)
@@ -493,53 +493,8 @@
}
#endif // GTK_CHECK_VERSION(3, 20, 0)
-enum StyleColorType { StyleColorBackground, StyleColorForeground };
-
-#if GTK_CHECK_VERSION(3, 20, 0)
-static Color styleColor(RenderThemePart themePart, GtkStateFlags state, StyleColorType colorType)
+void RenderThemeGtk::adjustButtonStyle(StyleResolver&, RenderStyle& style, const Element*) const
{
- RenderThemeGadget* gadget = nullptr;
- switch (themePart) {
- default:
- ASSERT_NOT_REACHED();
- FALLTHROUGH;
- case Entry:
- gadget = &static_cast<RenderThemeEntry&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::Entry)).entry();
- break;
- case EntrySelection:
- gadget = static_cast<RenderThemeEntry&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::SelectedEntry)).selection();
- break;
- case ListBox:
- gadget = &static_cast<RenderThemeListView&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::ListView)).treeview();
- break;
- case Button:
- gadget = &static_cast<RenderThemeButton&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::Button)).button();
- break;
- }
-
- ASSERT(gadget);
- gadget->setState(state);
- return colorType == StyleColorBackground ? gadget->backgroundColor() : gadget->color();
-}
-#else
-static Color styleColor(RenderThemePart themePart, GtkStateFlags state, StyleColorType colorType)
-{
- GRefPtr<GtkStyleContext> context = createStyleContext(themePart);
- gtk_style_context_set_state(context.get(), state);
-
- GdkRGBA gdkRGBAColor;
- if (colorType == StyleColorBackground)
- gtk_style_context_get_background_color(context.get(), state, &gdkRGBAColor);
- else
- gtk_style_context_get_color(context.get(), state, &gdkRGBAColor);
- return gdkRGBAColor;
-}
-#endif // GTK_CHECK_VERSION(3, 20, 0)
-
-void RenderThemeGtk::adjustButtonStyle(StyleResolver&, RenderStyle& style, const Element* element) const
-{
- if (element)
- style.setColor(styleColor(Button, element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL, StyleColorForeground));
// Some layout tests check explicitly that buttons ignore line-height.
if (style.appearance() == PushButtonPart)
style.setLineHeight(RenderStyle::initialLineHeight());
@@ -990,9 +945,6 @@
void RenderThemeGtk::adjustTextFieldStyle(StyleResolver&, RenderStyle& style, const Element* element) const
{
- if (element)
- style.setColor(styleColor(Entry, element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL, StyleColorForeground));
-
if (!is<HTMLInputElement>(element) || !shouldHaveSpinButton(downcast<HTMLInputElement>(*element)))
return;
@@ -1129,12 +1081,6 @@
}
#endif
-void RenderThemeGtk::adjustTextAreaStyle(StyleResolver&, RenderStyle& style, const Element* element) const
-{
- if (element)
- style.setColor(styleColor(Entry, element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL, StyleColorForeground));
-}
-
void RenderThemeGtk::adjustListboxStyle(StyleResolver&, RenderStyle& style, const Element* element) const
{
if (element)
@@ -1260,10 +1206,8 @@
}
#endif // GTK_CHECK_VERSION(3, 20, 0)
-void RenderThemeGtk::adjustSearchFieldStyle(StyleResolver&, RenderStyle& style, const Element* element) const
+void RenderThemeGtk::adjustSearchFieldStyle(StyleResolver&, RenderStyle& style, const Element*) const
{
- if (element)
- style.setColor(styleColor(Entry, element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL, StyleColorForeground));
// We cannot give a proper rendering when border radius is active, unfortunately.
style.resetBorderRadius();
style.setLineHeight(RenderStyle::initialLineHeight());
@@ -1735,6 +1679,49 @@
return 500_us * time;
}
+enum StyleColorType { StyleColorBackground, StyleColorForeground };
+
+#if GTK_CHECK_VERSION(3, 20, 0)
+static Color styleColor(RenderThemePart themePart, GtkStateFlags state, StyleColorType colorType)
+{
+ RenderThemeGadget* gadget = nullptr;
+ switch (themePart) {
+ default:
+ ASSERT_NOT_REACHED();
+ FALLTHROUGH;
+ case Entry:
+ gadget = &static_cast<RenderThemeEntry&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::Entry)).entry();
+ break;
+ case EntrySelection:
+ gadget = static_cast<RenderThemeEntry&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::SelectedEntry)).selection();
+ break;
+ case ListBox:
+ gadget = &static_cast<RenderThemeListView&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::ListView)).treeview();
+ break;
+ case Button:
+ gadget = &static_cast<RenderThemeButton&>(RenderThemeWidget::getOrCreate(RenderThemeWidget::Type::Button)).button();
+ break;
+ }
+
+ ASSERT(gadget);
+ gadget->setState(state);
+ return colorType == StyleColorBackground ? gadget->backgroundColor() : gadget->color();
+}
+#else
+static Color styleColor(RenderThemePart themePart, GtkStateFlags state, StyleColorType colorType)
+{
+ GRefPtr<GtkStyleContext> context = createStyleContext(themePart);
+ gtk_style_context_set_state(context.get(), state);
+
+ GdkRGBA gdkRGBAColor;
+ if (colorType == StyleColorBackground)
+ gtk_style_context_get_background_color(context.get(), state, &gdkRGBAColor);
+ else
+ gtk_style_context_get_color(context.get(), state, &gdkRGBAColor);
+ return gdkRGBAColor;
+}
+#endif // GTK_CHECK_VERSION(3, 20, 0)
+
Color RenderThemeGtk::platformActiveSelectionBackgroundColor() const
{
return styleColor(EntrySelection, static_cast<GtkStateFlags>(GTK_STATE_FLAG_SELECTED | GTK_STATE_FLAG_FOCUSED), StyleColorBackground);
Modified: trunk/Source/WebCore/rendering/RenderThemeGtk.h (232453 => 232454)
--- trunk/Source/WebCore/rendering/RenderThemeGtk.h 2018-06-03 20:22:05 UTC (rev 232453)
+++ trunk/Source/WebCore/rendering/RenderThemeGtk.h 2018-06-03 22:15:21 UTC (rev 232454)
@@ -118,8 +118,6 @@
void adjustTextFieldStyle(StyleResolver&, RenderStyle&, const Element*) const override;
bool paintTextField(const RenderObject&, const PaintInfo&, const FloatRect&) override;
-
- void adjustTextAreaStyle(StyleResolver&, RenderStyle&, const Element*) const override;
bool paintTextArea(const RenderObject&, const PaintInfo&, const FloatRect&) override;
LengthBox popupInternalPaddingBox(const RenderStyle&) const override;