[GTK] Menu list button doesn't use the text color from the theme
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Apr 2016 08:44:55 +0000 (08:44 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Apr 2016 08:44:55 +0000 (08:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=118234

Reviewed by Darin Adler.

.:

* ManualTests/gtk/theme.html: Add a disabled combo test.

Source/WebCore:

Set the combo box color accroding to the theme when adjusting the menu list style like Mac port does.

* rendering/RenderThemeGtk.cpp:
(WebCore::menuListColor):
(WebCore::RenderThemeGtk::adjustMenuListStyle):

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

ChangeLog
ManualTests/gtk/theme.html
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderThemeGtk.cpp

index f7326d5..06c7b40 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2016-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Menu list button doesn't use the text color from the theme
+        https://bugs.webkit.org/show_bug.cgi?id=118234
+
+        Reviewed by Darin Adler.
+
+        * ManualTests/gtk/theme.html: Add a disabled combo test.
+
 2016-04-13  Konstantin Tokarev  <annulen@yandex.ru>
 
         FindWebP should not be misguided by pkg-config when cross-compiling.
index 0da5e79..c7d3323 100644 (file)
@@ -37,6 +37,7 @@
     <tr>
       <td><select><option>A</option><option selected>B</option><option>C</option></td>
       <td><select><option>Combo option 1</option><option>Combo option 2</option><option>Combo option 3</option></td>
+      <td><select disabled><option>Disabled option 1</option><option>Disabled option 2</option><option>Disabled option 3</option></td>
     </tr>
   </table>
 
index 34a12f8..6ff6347 100644 (file)
@@ -1,3 +1,16 @@
+2016-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] Menu list button doesn't use the text color from the theme
+        https://bugs.webkit.org/show_bug.cgi?id=118234
+
+        Reviewed by Darin Adler.
+
+        Set the combo box color accroding to the theme when adjusting the menu list style like Mac port does.
+
+        * rendering/RenderThemeGtk.cpp:
+        (WebCore::menuListColor):
+        (WebCore::RenderThemeGtk::adjustMenuListStyle):
+
 2016-04-18  Manuel Rego Casasnovas  <rego@igalia.com>
 
         [css-grid] Fix positioned items with content alignment
index 21847a8..f4694da 100644 (file)
@@ -773,13 +773,37 @@ bool RenderThemeGtk::paintButton(const RenderObject& renderObject, const PaintIn
 }
 #endif // GTK_CHECK_VERSION(3, 20, 0)
 
-void RenderThemeGtk::adjustMenuListStyle(StyleResolver&, RenderStyle& style, const Element*) const
+static Color menuListColor(const Element* element)
+{
+#if GTK_CHECK_VERSION(3, 20, 0)
+    RenderThemeGadget::Info info { RenderThemeGadget::Type::Generic, "combobox", element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL, { } };
+    auto comboGadget = RenderThemeGadget::create(info);
+    Vector<RenderThemeGadget::Info> children {
+        { RenderThemeGadget::Type::Generic, "button", info.state, { "combo" } }
+    };
+    info.name = "box";
+    info.classList = { "horizontal", "linked" };
+    return RenderThemeBoxGadget(info, children, comboGadget.get()).child(0)->color();
+#else
+    GRefPtr<GtkStyleContext> parentStyleContext = createStyleContext(ComboBox);
+    GRefPtr<GtkStyleContext> buttonStyleContext = createStyleContext(ComboBoxButton, parentStyleContext.get());
+    gtk_style_context_set_state(buttonStyleContext.get(), element->isDisabledFormControl() ? GTK_STATE_FLAG_INSENSITIVE : GTK_STATE_FLAG_NORMAL);
+
+    GdkRGBA gdkRGBAColor;
+    gtk_style_context_get_color(buttonStyleContext.get(), gtk_style_context_get_state(buttonStyleContext.get()), &gdkRGBAColor);
+    return gdkRGBAColor;
+#endif // GTK_CHECK_VERSION(3, 20, 0)
+}
+
+void RenderThemeGtk::adjustMenuListStyle(StyleResolver&, RenderStyle& style, const Element* element) const
 {
     // The tests check explicitly that select menu buttons ignore line height.
     style.setLineHeight(RenderStyle::initialLineHeight());
 
     // We cannot give a proper rendering when border radius is active, unfortunately.
     style.resetBorderRadius();
+
+    style.setColor(menuListColor(element));
 }
 
 void RenderThemeGtk::adjustMenuListButtonStyle(StyleResolver& styleResolver, RenderStyle& style, const Element* e) const