Source/WebCore/ChangeLog

 12013-07-01 Carlos Garcia Campos <cgarcia@igalia.com>
 2
 3 [GTK] The implementation of RenderThemeGtk::systemColor is incomplete
 4 https://bugs.webkit.org/show_bug.cgi?id=40024
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Implement more system colors using the colors from the current
 9 theme.
 10
 11 * platform/gtk/RenderThemeGtk3.cpp:
 12 (WebCore::getStyleContext):
 13 (WebCore::RenderThemeGtk::systemColor):
 14
1152013-06-29 Simon Fraser <simon.fraser@apple.com>
216
317 Avoid calling into Objective-C every time we get the scrollbar width

Source/WebCore/platform/gtk/RenderThemeGtk3.cpp

@@static GtkStyleContext* getStyleContext(GType widgetType)
106106 gtk_widget_path_iter_add_class(path, 0, GTK_STYLE_CLASS_CHECK);
107107 else if (widgetType == GTK_TYPE_RADIO_BUTTON)
108108 gtk_widget_path_iter_add_class(path, 0, GTK_STYLE_CLASS_RADIO);
 109 else if (widgetType == GTK_TYPE_WINDOW)
 110 gtk_widget_path_iter_add_class(path, 0, GTK_STYLE_CLASS_BACKGROUND);
 111 else if (widgetType == GTK_TYPE_MENU)
 112 gtk_widget_path_iter_add_class(path, 0, GTK_STYLE_CLASS_MENU);
109113
110114 GRefPtr<GtkStyleContext> context = adoptGRef(gtk_style_context_new());
111115 gtk_style_context_set_path(context.get(), path);

@@Color RenderThemeGtk::systemColor(CSSValueID cssValueId) const
10011005 GdkRGBA gdkRGBAColor;
10021006
10031007 switch (cssValueId) {
 1008 case CSSValueActiveborder:
 1009 // Active window border.
 1010 gtk_style_context_get_border_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_ACTIVE, &gdkRGBAColor);
 1011 return gdkRGBAColor;
 1012 case CSSValueActivecaption:
 1013 // Active window caption background.
 1014 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_ACTIVE, &gdkRGBAColor);
 1015 return gdkRGBAColor;
 1016 case CSSValueButtonface:
 1017 // Face color for three-dimensional display elements.
 1018 gtk_style_context_get_color(getStyleContext(GTK_TYPE_BUTTON), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1019 return gdkRGBAColor;
 1020 case CSSValueButtonhighlight:
 1021 // Highlight color for three-dimensional display elements (for edges facing away from the light source).
 1022 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_BUTTON), GTK_STATE_FLAG_PRELIGHT, &gdkRGBAColor);
 1023 return gdkRGBAColor;
 1024 case CSSValueButtonshadow:
 1025 // Shadow color for three-dimensional display elements.
 1026 return 0xFF888888;
10041027 case CSSValueButtontext:
1005  gtk_style_context_get_color(getStyleContext(GTK_TYPE_BUTTON), static_cast<GtkStateFlags>(0), &gdkRGBAColor);
 1028 // Text on push buttons.
 1029 gtk_style_context_get_color(getStyleContext(GTK_TYPE_BUTTON), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
10061030 return gdkRGBAColor;
10071031 case CSSValueCaptiontext:
1008  gtk_style_context_get_color(getStyleContext(GTK_TYPE_ENTRY), static_cast<GtkStateFlags>(0), &gdkRGBAColor);
 1032 // Text in caption, size box, and scrollbar arrow box.
 1033 gtk_style_context_get_color(getStyleContext(GTK_TYPE_ENTRY), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1034 return gdkRGBAColor;
 1035 case CSSValueGraytext:
 1036 // Grayed (disabled) text.
 1037 gtk_style_context_get_color(getStyleContext(GTK_TYPE_ENTRY), GTK_STATE_FLAG_INSENSITIVE, &gdkRGBAColor);
 1038 return gdkRGBAColor;
 1039 case CSSValueHighlight:
 1040 // Item(s) selected in a control.
 1041 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_TREE_VIEW), GTK_STATE_FLAG_SELECTED, &gdkRGBAColor);
 1042 return gdkRGBAColor;
 1043 case CSSValueHighlighttext:
 1044 // Text of item(s) selected in a control.
 1045 gtk_style_context_get_color(getStyleContext(GTK_TYPE_TREE_VIEW), GTK_STATE_FLAG_SELECTED, &gdkRGBAColor);
 1046 return gdkRGBAColor;
 1047 case CSSValueInactiveborder:
 1048 // Inactive window border.
 1049 gtk_style_context_get_border_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1050 return gdkRGBAColor;
 1051 case CSSValueInactivecaption:
 1052 // Inactive window caption.
 1053 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1054 return gdkRGBAColor;
 1055 case CSSValueInactivecaptiontext:
 1056 // Color of text in an inactive caption.
 1057 gtk_style_context_get_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1058 return gdkRGBAColor;
 1059 case CSSValueInfobackground: {
 1060 // Background color for tooltip controls.
 1061 GtkStyleContext* context = getStyleContext(GTK_TYPE_WINDOW);
 1062 gtk_style_context_save(context);
 1063 gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOOLTIP);
 1064 gtk_style_context_get_background_color(context, GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1065 gtk_style_context_restore(context);
 1066 return gdkRGBAColor;
 1067 }
 1068 case CSSValueInfotext: {
 1069 // Text color for tooltip controls.
 1070 GtkStyleContext* context = getStyleContext(GTK_TYPE_WINDOW);
 1071 gtk_style_context_save(context);
 1072 gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOOLTIP);
 1073 gtk_style_context_get_color(context, GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1074 gtk_style_context_restore(context);
 1075 return gdkRGBAColor;
 1076 }
 1077 case CSSValueMenu:
 1078 // Menu background.
 1079 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_MENU), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1080 return gdkRGBAColor;
 1081 case CSSValueMenutext:
 1082 // Text in menus.
 1083 gtk_style_context_get_color(getStyleContext(GTK_TYPE_MENU), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1084 return gdkRGBAColor;
 1085 case CSSValueScrollbar: {
 1086 // Scroll bar gray area.
 1087 GtkStyleContext* context = getStyleContext(GTK_TYPE_SCROLLBAR);
 1088 gtk_style_context_save(context);
 1089 gtk_style_context_add_class(context, GTK_STYLE_CLASS_TROUGH);
 1090 gtk_style_context_get_background_color(context, GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1091 gtk_style_context_restore(context);
 1092 return gdkRGBAColor;
 1093 }
 1094 case CSSValueWindow:
 1095 // Window background.
 1096 gtk_style_context_get_background_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1097 return gdkRGBAColor;
 1098 case CSSValueWindowframe:
 1099 // Window frame.
 1100 gtk_style_context_get_border_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
 1101 return gdkRGBAColor;
 1102 case CSSValueWindowtext:
 1103 // Text in windows.
 1104 gtk_style_context_get_color(getStyleContext(GTK_TYPE_WINDOW), GTK_STATE_FLAG_NORMAL, &gdkRGBAColor);
10091105 return gdkRGBAColor;
10101106 default:
10111107 return RenderTheme::systemColor(cssValueId);