OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/libgtkui/native_theme_gtk2.h" | 5 #include "chrome/browser/ui/libgtkui/native_theme_gtk2.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include "chrome/browser/ui/libgtkui/chrome_gtk_frame.h" | 9 #include "chrome/browser/ui/libgtkui/chrome_gtk_frame.h" |
10 #include "chrome/browser/ui/libgtkui/chrome_gtk_menu_subclasses.h" | 10 #include "chrome/browser/ui/libgtkui/chrome_gtk_menu_subclasses.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 SELECTED = 3, | 33 SELECTED = 3, |
34 INSENSITIVE = 4, | 34 INSENSITIVE = 4, |
35 }; | 35 }; |
36 | 36 |
37 // Same order as enum WidgetState above | 37 // Same order as enum WidgetState above |
38 const GtkStateType stateMap[] = { | 38 const GtkStateType stateMap[] = { |
39 GTK_STATE_NORMAL, GTK_STATE_ACTIVE, GTK_STATE_PRELIGHT, | 39 GTK_STATE_NORMAL, GTK_STATE_ACTIVE, GTK_STATE_PRELIGHT, |
40 GTK_STATE_SELECTED, GTK_STATE_INSENSITIVE, | 40 GTK_STATE_SELECTED, GTK_STATE_INSENSITIVE, |
41 }; | 41 }; |
42 | 42 |
43 SkColor GetFGColor(GtkWidget* widget, WidgetState state) { | 43 SkColor GetFgColor(GtkWidget* widget, WidgetState state) { |
44 return GdkColorToSkColor(gtk_rc_get_style(widget)->fg[stateMap[state]]); | 44 return GdkColorToSkColor(gtk_rc_get_style(widget)->fg[stateMap[state]]); |
45 } | 45 } |
46 SkColor GetBGColor(GtkWidget* widget, WidgetState state) { | 46 SkColor GetBgColor(GtkWidget* widget, WidgetState state) { |
47 return GdkColorToSkColor(gtk_rc_get_style(widget)->bg[stateMap[state]]); | 47 return GdkColorToSkColor(gtk_rc_get_style(widget)->bg[stateMap[state]]); |
48 } | 48 } |
49 | 49 |
50 SkColor GetTextColor(GtkWidget* widget, WidgetState state) { | 50 SkColor GetTextColor(GtkWidget* widget, WidgetState state) { |
51 return GdkColorToSkColor(gtk_rc_get_style(widget)->text[stateMap[state]]); | 51 return GdkColorToSkColor(gtk_rc_get_style(widget)->text[stateMap[state]]); |
52 } | 52 } |
53 SkColor GetTextAAColor(GtkWidget* widget, WidgetState state) { | 53 SkColor GetTextAAColor(GtkWidget* widget, WidgetState state) { |
54 return GdkColorToSkColor(gtk_rc_get_style(widget)->text_aa[stateMap[state]]); | 54 return GdkColorToSkColor(gtk_rc_get_style(widget)->text_aa[stateMap[state]]); |
55 } | 55 } |
56 SkColor GetBaseColor(GtkWidget* widget, WidgetState state) { | 56 SkColor GetBaseColor(GtkWidget* widget, WidgetState state) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 canvas->drawRect(gfx::RectToSkRect(rect), paint); | 125 canvas->drawRect(gfx::RectToSkRect(rect), paint); |
126 } | 126 } |
127 | 127 |
128 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { | 128 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
129 const SkColor kPositiveTextColor = SkColorSetRGB(0x0b, 0x80, 0x43); | 129 const SkColor kPositiveTextColor = SkColorSetRGB(0x0b, 0x80, 0x43); |
130 const SkColor kNegativeTextColor = SkColorSetRGB(0xc5, 0x39, 0x29); | 130 const SkColor kNegativeTextColor = SkColorSetRGB(0xc5, 0x39, 0x29); |
131 | 131 |
132 switch (color_id) { | 132 switch (color_id) { |
133 // Windows | 133 // Windows |
134 case kColorId_WindowBackground: | 134 case kColorId_WindowBackground: |
135 return GetBGColor(GetWindow(), SELECTED); | 135 return GetBgColor(GetWindow(), SELECTED); |
136 | 136 |
137 // Dialogs | 137 // Dialogs |
138 case kColorId_DialogBackground: | 138 case kColorId_DialogBackground: |
139 case kColorId_BubbleBackground: | 139 case kColorId_BubbleBackground: |
140 return GetBGColor(GetWindow(), NORMAL); | 140 return GetBgColor(GetWindow(), NORMAL); |
141 | 141 |
142 // FocusableBorder | 142 // FocusableBorder |
143 case kColorId_FocusedBorderColor: | 143 case kColorId_FocusedBorderColor: |
144 return GetBGColor(GetEntry(), SELECTED); | 144 return GetBgColor(GetEntry(), SELECTED); |
145 case kColorId_UnfocusedBorderColor: | 145 case kColorId_UnfocusedBorderColor: |
146 return GetTextAAColor(GetEntry(), NORMAL); | 146 return GetTextAAColor(GetEntry(), NORMAL); |
147 | 147 |
148 // MenuItem | 148 // MenuItem |
149 case kColorId_SelectedMenuItemForegroundColor: | 149 case kColorId_SelectedMenuItemForegroundColor: |
150 return GetTextColor(GetMenuItem(), SELECTED); | 150 return GetTextColor(GetMenuItem(), SELECTED); |
151 case kColorId_FocusedMenuItemBackgroundColor: | 151 case kColorId_FocusedMenuItemBackgroundColor: |
152 return GetBGColor(GetMenuItem(), SELECTED); | 152 return GetBgColor(GetMenuItem(), SELECTED); |
153 | 153 |
154 case kColorId_EnabledMenuItemForegroundColor: | 154 case kColorId_EnabledMenuItemForegroundColor: |
155 return GetTextColor(GetMenuItem(), NORMAL); | 155 return GetTextColor(GetMenuItem(), NORMAL); |
156 case kColorId_MenuItemSubtitleColor: | 156 case kColorId_MenuItemSubtitleColor: |
157 case kColorId_DisabledMenuItemForegroundColor: | 157 case kColorId_DisabledMenuItemForegroundColor: |
158 return GetTextColor(GetMenuItem(), INSENSITIVE); | 158 return GetTextColor(GetMenuItem(), INSENSITIVE); |
159 case kColorId_FocusedMenuButtonBorderColor: | 159 case kColorId_FocusedMenuButtonBorderColor: |
160 return GetBGColor(GetEntry(), NORMAL); | 160 return GetBgColor(GetEntry(), NORMAL); |
161 case kColorId_HoverMenuButtonBorderColor: | 161 case kColorId_HoverMenuButtonBorderColor: |
162 return GetTextAAColor(GetEntry(), PRELIGHT); | 162 return GetTextAAColor(GetEntry(), PRELIGHT); |
163 case kColorId_MenuBorderColor: | 163 case kColorId_MenuBorderColor: |
164 case kColorId_EnabledMenuButtonBorderColor: | 164 case kColorId_EnabledMenuButtonBorderColor: |
165 case kColorId_MenuSeparatorColor: { | 165 case kColorId_MenuSeparatorColor: { |
166 return GetTextColor(GetMenuItem(), INSENSITIVE); | 166 return GetTextColor(GetMenuItem(), INSENSITIVE); |
167 } | 167 } |
168 case kColorId_MenuBackgroundColor: | 168 case kColorId_MenuBackgroundColor: |
169 return GetBGColor(GetMenu(), NORMAL); | 169 return GetBgColor(GetMenu(), NORMAL); |
170 | 170 |
171 // Label | 171 // Label |
172 case kColorId_LabelEnabledColor: | 172 case kColorId_LabelEnabledColor: |
173 return GetTextColor(GetEntry(), NORMAL); | 173 return GetTextColor(GetEntry(), NORMAL); |
174 case kColorId_LabelDisabledColor: | 174 case kColorId_LabelDisabledColor: |
175 return GetTextColor(GetLabel(), INSENSITIVE); | 175 return GetTextColor(GetLabel(), INSENSITIVE); |
176 case kColorId_LabelTextSelectionColor: | 176 case kColorId_LabelTextSelectionColor: |
177 return GetTextColor(GetLabel(), SELECTED); | 177 return GetTextColor(GetLabel(), SELECTED); |
178 case kColorId_LabelTextSelectionBackgroundFocused: | 178 case kColorId_LabelTextSelectionBackgroundFocused: |
179 return GetBaseColor(GetLabel(), SELECTED); | 179 return GetBaseColor(GetLabel(), SELECTED); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 return GetTextColor(GetEntry(), ACTIVE); | 231 return GetTextColor(GetEntry(), ACTIVE); |
232 case kColorId_TextfieldReadOnlyBackground: | 232 case kColorId_TextfieldReadOnlyBackground: |
233 return GetBaseColor(GetEntry(), ACTIVE); | 233 return GetBaseColor(GetEntry(), ACTIVE); |
234 case kColorId_TextfieldSelectionColor: | 234 case kColorId_TextfieldSelectionColor: |
235 return GetTextColor(GetEntry(), SELECTED); | 235 return GetTextColor(GetEntry(), SELECTED); |
236 case kColorId_TextfieldSelectionBackgroundFocused: | 236 case kColorId_TextfieldSelectionBackgroundFocused: |
237 return GetBaseColor(GetEntry(), SELECTED); | 237 return GetBaseColor(GetEntry(), SELECTED); |
238 | 238 |
239 // Tooltips | 239 // Tooltips |
240 case kColorId_TooltipBackground: | 240 case kColorId_TooltipBackground: |
241 return GetBGColor(GetTooltip(), NORMAL); | 241 return GetBgColor(GetTooltip(), NORMAL); |
242 case kColorId_TooltipText: | 242 case kColorId_TooltipText: |
243 return GetFGColor(GetTooltip(), NORMAL); | 243 return GetFgColor(GetTooltip(), NORMAL); |
244 | 244 |
245 // Trees and Tables (implemented on GTK using the same class) | 245 // Trees and Tables (implemented on GTK using the same class) |
246 case kColorId_TableBackground: | 246 case kColorId_TableBackground: |
247 case kColorId_TreeBackground: | 247 case kColorId_TreeBackground: |
248 return GetBGColor(GetTree(), NORMAL); | 248 return GetBgColor(GetTree(), NORMAL); |
249 case kColorId_TableText: | 249 case kColorId_TableText: |
250 case kColorId_TreeText: | 250 case kColorId_TreeText: |
251 return GetTextColor(GetTree(), NORMAL); | 251 return GetTextColor(GetTree(), NORMAL); |
252 case kColorId_TableSelectedText: | 252 case kColorId_TableSelectedText: |
253 case kColorId_TableSelectedTextUnfocused: | 253 case kColorId_TableSelectedTextUnfocused: |
254 case kColorId_TreeSelectedText: | 254 case kColorId_TreeSelectedText: |
255 case kColorId_TreeSelectedTextUnfocused: | 255 case kColorId_TreeSelectedTextUnfocused: |
256 return GetTextColor(GetTree(), SELECTED); | 256 return GetTextColor(GetTree(), SELECTED); |
257 case kColorId_TableSelectionBackgroundFocused: | 257 case kColorId_TableSelectionBackgroundFocused: |
258 case kColorId_TableSelectionBackgroundUnfocused: | 258 case kColorId_TableSelectionBackgroundUnfocused: |
259 case kColorId_TreeSelectionBackgroundFocused: | 259 case kColorId_TreeSelectionBackgroundFocused: |
260 case kColorId_TreeSelectionBackgroundUnfocused: | 260 case kColorId_TreeSelectionBackgroundUnfocused: |
261 return GetBGColor(GetTree(), SELECTED); | 261 return GetBgColor(GetTree(), SELECTED); |
262 case kColorId_TreeArrow: | 262 case kColorId_TreeArrow: |
263 return GetFGColor(GetTree(), NORMAL); | 263 return GetFgColor(GetTree(), NORMAL); |
264 case kColorId_TableGroupingIndicatorColor: | 264 case kColorId_TableGroupingIndicatorColor: |
265 return GetTextAAColor(GetTree(), NORMAL); | 265 return GetTextAAColor(GetTree(), NORMAL); |
266 | 266 |
267 // Results Table | 267 // Results Table |
268 case kColorId_ResultsTableNormalBackground: | 268 case kColorId_ResultsTableNormalBackground: |
269 return GetSystemColor(kColorId_TextfieldDefaultBackground); | 269 return GetSystemColor(kColorId_TextfieldDefaultBackground); |
270 case kColorId_ResultsTableHoveredBackground: | 270 case kColorId_ResultsTableHoveredBackground: |
271 return color_utils::AlphaBlend( | 271 return color_utils::AlphaBlend( |
272 GetSystemColor(kColorId_TextfieldDefaultBackground), | 272 GetSystemColor(kColorId_TextfieldDefaultBackground), |
273 GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused), 0x80); | 273 GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused), 0x80); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 } | 322 } |
323 | 323 |
324 // Throbber | 324 // Throbber |
325 case kColorId_ThrobberSpinningColor: | 325 case kColorId_ThrobberSpinningColor: |
326 case kColorId_ThrobberLightColor: | 326 case kColorId_ThrobberLightColor: |
327 return GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused); | 327 return GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused); |
328 | 328 |
329 case kColorId_ThrobberWaitingColor: | 329 case kColorId_ThrobberWaitingColor: |
330 return color_utils::AlphaBlend( | 330 return color_utils::AlphaBlend( |
331 GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused), | 331 GetSystemColor(kColorId_TextfieldSelectionBackgroundFocused), |
332 GetBGColor(GetWindow(), NORMAL), 0x80); | 332 GetBgColor(GetWindow(), NORMAL), 0x80); |
333 | 333 |
334 // Alert icons | 334 // Alert icons |
335 // Just fall back to the same colors as Aura. | 335 // Just fall back to the same colors as Aura. |
336 case kColorId_AlertSeverityLow: | 336 case kColorId_AlertSeverityLow: |
337 case kColorId_AlertSeverityMedium: | 337 case kColorId_AlertSeverityMedium: |
338 case kColorId_AlertSeverityHigh: { | 338 case kColorId_AlertSeverityHigh: { |
339 ui::NativeTheme* fallback_theme = | 339 ui::NativeTheme* fallback_theme = |
340 color_utils::IsDark(GetTextColor(GetEntry(), NORMAL)) | 340 color_utils::IsDark(GetTextColor(GetEntry(), NORMAL)) |
341 ? ui::NativeTheme::GetInstanceForNativeUi() | 341 ? ui::NativeTheme::GetInstanceForNativeUi() |
342 : ui::NativeThemeDarkAura::instance(); | 342 : ui::NativeThemeDarkAura::instance(); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 | 441 |
442 if (!fake_menu_item) { | 442 if (!fake_menu_item) { |
443 fake_menu_item = gtk_custom_menu_item_new(); | 443 fake_menu_item = gtk_custom_menu_item_new(); |
444 gtk_menu_shell_append(GTK_MENU_SHELL(GetMenu()), fake_menu_item); | 444 gtk_menu_shell_append(GTK_MENU_SHELL(GetMenu()), fake_menu_item); |
445 } | 445 } |
446 | 446 |
447 return fake_menu_item; | 447 return fake_menu_item; |
448 } | 448 } |
449 | 449 |
450 } // namespace libgtkui | 450 } // namespace libgtkui |
OLD | NEW |