Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: chrome/browser/ui/libgtk2ui/native_theme_gtk2.cc

Issue 190633007: linux_aura: Implement the tree/table colors. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/libgtk2ui/native_theme_gtk2.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/libgtk2ui/native_theme_gtk2.h" 5 #include "chrome/browser/ui/libgtk2ui/native_theme_gtk2.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 8
9 #include "chrome/browser/ui/libgtk2ui/chrome_gtk_menu_subclasses.h" 9 #include "chrome/browser/ui/libgtk2ui/chrome_gtk_menu_subclasses.h"
10 #include "chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h" 10 #include "chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h"
11 #include "ui/gfx/color_utils.h" 11 #include "ui/gfx/color_utils.h"
12 #include "ui/gfx/path.h" 12 #include "ui/gfx/path.h"
13 #include "ui/gfx/rect.h" 13 #include "ui/gfx/rect.h"
14 #include "ui/gfx/size.h" 14 #include "ui/gfx/size.h"
15 #include "ui/gfx/skia_util.h" 15 #include "ui/gfx/skia_util.h"
16 #include "ui/native_theme/common_theme.h" 16 #include "ui/native_theme/common_theme.h"
17 17
18 namespace { 18 namespace {
19 19
20 // Theme colors returned by GetSystemColor(). 20 // Theme colors returned by GetSystemColor().
21 const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128); 21 const SkColor kInvalidColorIdColor = SkColorSetRGB(255, 0, 128);
22 // Tree
23 const SkColor kTreeBackground = SK_ColorWHITE;
24 const SkColor kTreeTextColor = SK_ColorBLACK;
25 const SkColor kTreeSelectedTextColor = SK_ColorBLACK;
26 const SkColor kTreeSelectionBackgroundColor = SkColorSetRGB(0xEE, 0xEE, 0xEE);
27 const SkColor kTreeArrowColor = SkColorSetRGB(0x7A, 0x7A, 0x7A);
28 // Table
29 const SkColor kTableBackground = SK_ColorWHITE;
30 const SkColor kTableTextColor = SK_ColorBLACK;
31 const SkColor kTableSelectedTextColor = SK_ColorBLACK;
32 const SkColor kTableSelectionBackgroundColor = SkColorSetRGB(0xEE, 0xEE, 0xEE);
33 const SkColor kTableGroupingIndicatorColor = SkColorSetRGB(0xCC, 0xCC, 0xCC);
34 22
35 } // namespace 23 } // namespace
36 24
37 25
38 namespace libgtk2ui { 26 namespace libgtk2ui {
39 27
40 // static 28 // static
41 NativeThemeGtk2* NativeThemeGtk2::instance() { 29 NativeThemeGtk2* NativeThemeGtk2::instance() {
42 CR_DEFINE_STATIC_LOCAL(NativeThemeGtk2, s_native_theme, ()); 30 CR_DEFINE_STATIC_LOCAL(NativeThemeGtk2, s_native_theme, ());
43 return &s_native_theme; 31 return &s_native_theme;
44 } 32 }
45 33
46 NativeThemeGtk2::NativeThemeGtk2() 34 NativeThemeGtk2::NativeThemeGtk2()
47 : fake_window_(NULL), 35 : fake_window_(NULL),
48 fake_menu_item_(NULL) { 36 fake_menu_item_(NULL) {
49 } 37 }
50 38
51 NativeThemeGtk2::~NativeThemeGtk2() { 39 NativeThemeGtk2::~NativeThemeGtk2() {
52 if (fake_window_) 40 if (fake_window_)
53 gtk_widget_destroy(fake_window_); 41 gtk_widget_destroy(fake_window_);
54 fake_entry_.Destroy(); 42 fake_entry_.Destroy();
55 fake_label_.Destroy(); 43 fake_label_.Destroy();
56 fake_button_.Destroy(); 44 fake_button_.Destroy();
45 fake_tree_.Destroy();
57 fake_menu_.Destroy(); 46 fake_menu_.Destroy();
58 } 47 }
59 48
60 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { 49 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const {
61 switch (color_id) {
62 // TODO(erg): Still need to fish the colors out of trees and tables.
63
64 // Tree
65 case kColorId_TreeBackground:
66 return kTreeBackground;
67 case kColorId_TreeText:
68 return kTreeTextColor;
69 case kColorId_TreeSelectedText:
70 case kColorId_TreeSelectedTextUnfocused:
71 return kTreeSelectedTextColor;
72 case kColorId_TreeSelectionBackgroundFocused:
73 case kColorId_TreeSelectionBackgroundUnfocused:
74 return kTreeSelectionBackgroundColor;
75 case kColorId_TreeArrow:
76 return kTreeArrowColor;
77
78 // Table
79 case kColorId_TableBackground:
80 return kTableBackground;
81 case kColorId_TableText:
82 return kTableTextColor;
83 case kColorId_TableSelectedText:
84 case kColorId_TableSelectedTextUnfocused:
85 return kTableSelectedTextColor;
86 case kColorId_TableSelectionBackgroundFocused:
87 case kColorId_TableSelectionBackgroundUnfocused:
88 return kTableSelectionBackgroundColor;
89 case kColorId_TableGroupingIndicatorColor:
90 return kTableGroupingIndicatorColor;
91
92 default:
93 // Fall through.
94 break;
95 }
96
97 return GdkColorToSkColor(GetSystemGdkColor(color_id)); 50 return GdkColorToSkColor(GetSystemGdkColor(color_id));
98 } 51 }
99 52
100 void NativeThemeGtk2::PaintMenuPopupBackground( 53 void NativeThemeGtk2::PaintMenuPopupBackground(
101 SkCanvas* canvas, 54 SkCanvas* canvas,
102 const gfx::Size& size, 55 const gfx::Size& size,
103 const MenuBackgroundExtraParams& menu_background) const { 56 const MenuBackgroundExtraParams& menu_background) const {
104 if (menu_background.corner_radius > 0) { 57 if (menu_background.corner_radius > 0) {
105 SkPaint paint; 58 SkPaint paint;
106 paint.setStyle(SkPaint::kFill_Style); 59 paint.setStyle(SkPaint::kFill_Style);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 return GetEntryStyle()->base[GTK_STATE_NORMAL]; 166 return GetEntryStyle()->base[GTK_STATE_NORMAL];
214 case kColorId_TextfieldReadOnlyColor: 167 case kColorId_TextfieldReadOnlyColor:
215 return GetEntryStyle()->text[GTK_STATE_INSENSITIVE]; 168 return GetEntryStyle()->text[GTK_STATE_INSENSITIVE];
216 case kColorId_TextfieldReadOnlyBackground: 169 case kColorId_TextfieldReadOnlyBackground:
217 return GetEntryStyle()->base[GTK_STATE_INSENSITIVE]; 170 return GetEntryStyle()->base[GTK_STATE_INSENSITIVE];
218 case kColorId_TextfieldSelectionColor: 171 case kColorId_TextfieldSelectionColor:
219 return GetEntryStyle()->text[GTK_STATE_SELECTED]; 172 return GetEntryStyle()->text[GTK_STATE_SELECTED];
220 case kColorId_TextfieldSelectionBackgroundFocused: 173 case kColorId_TextfieldSelectionBackgroundFocused:
221 return GetEntryStyle()->base[GTK_STATE_SELECTED]; 174 return GetEntryStyle()->base[GTK_STATE_SELECTED];
222 175
223 // Tree 176 // Trees and Tables (implemented on GTK using the same class)
224 // Table 177 case kColorId_TableBackground:
178 case kColorId_TreeBackground:
179 return GetTreeStyle()->bg[GTK_STATE_NORMAL];
180 case kColorId_TableText:
181 case kColorId_TreeText:
182 return GetTreeStyle()->text[GTK_STATE_NORMAL];
183 case kColorId_TableSelectedText:
184 case kColorId_TableSelectedTextUnfocused:
185 case kColorId_TreeSelectedText:
186 case kColorId_TreeSelectedTextUnfocused:
187 return GetTreeStyle()->text[GTK_STATE_SELECTED];
188 case kColorId_TableSelectionBackgroundFocused:
189 case kColorId_TableSelectionBackgroundUnfocused:
190 case kColorId_TreeSelectionBackgroundFocused:
191 case kColorId_TreeSelectionBackgroundUnfocused:
192 return GetTreeStyle()->bg[GTK_STATE_SELECTED];
193 case kColorId_TreeArrow:
194 return GetTreeStyle()->fg[GTK_STATE_NORMAL];
195 case kColorId_TableGroupingIndicatorColor:
196 return GetTreeStyle()->text_aa[GTK_STATE_NORMAL];
225 197
226 default: 198 default:
227 // Fall through 199 // Fall through
228 break; 200 break;
229 } 201 }
230 202
231 return SkColorToGdkColor(kInvalidColorIdColor); 203 return SkColorToGdkColor(kInvalidColorIdColor);
232 } 204 }
233 205
234 GtkWidget* NativeThemeGtk2::GetRealizedWindow() const { 206 GtkWidget* NativeThemeGtk2::GetRealizedWindow() const {
(...skipping 28 matching lines...) Expand all
263 return gtk_rc_get_style(fake_label_.get()); 235 return gtk_rc_get_style(fake_label_.get());
264 } 236 }
265 237
266 GtkStyle* NativeThemeGtk2::GetButtonStyle() const { 238 GtkStyle* NativeThemeGtk2::GetButtonStyle() const {
267 if (!fake_button_.get()) 239 if (!fake_button_.get())
268 fake_button_.Own(gtk_button_new()); 240 fake_button_.Own(gtk_button_new());
269 241
270 return gtk_rc_get_style(fake_button_.get()); 242 return gtk_rc_get_style(fake_button_.get());
271 } 243 }
272 244
245 GtkStyle* NativeThemeGtk2::GetTreeStyle() const {
246 if (!fake_tree_.get())
247 fake_tree_.Own(gtk_tree_view_new());
248
249 return gtk_rc_get_style(fake_tree_.get());
250 }
251
273 GtkStyle* NativeThemeGtk2::GetMenuStyle() const { 252 GtkStyle* NativeThemeGtk2::GetMenuStyle() const {
274 if (!fake_menu_.get()) 253 if (!fake_menu_.get())
275 fake_menu_.Own(gtk_menu_new()); 254 fake_menu_.Own(gtk_menu_new());
276 return gtk_rc_get_style(fake_menu_.get()); 255 return gtk_rc_get_style(fake_menu_.get());
277 } 256 }
278 257
279 GtkStyle* NativeThemeGtk2::GetMenuItemStyle() const { 258 GtkStyle* NativeThemeGtk2::GetMenuItemStyle() const {
280 if (!fake_menu_item_) { 259 if (!fake_menu_item_) {
281 if (!fake_menu_.get()) 260 if (!fake_menu_.get())
282 fake_menu_.Own(gtk_custom_menu_new()); 261 fake_menu_.Own(gtk_custom_menu_new());
283 262
284 fake_menu_item_ = gtk_custom_menu_item_new(); 263 fake_menu_item_ = gtk_custom_menu_item_new();
285 gtk_menu_shell_append(GTK_MENU_SHELL(fake_menu_.get()), fake_menu_item_); 264 gtk_menu_shell_append(GTK_MENU_SHELL(fake_menu_.get()), fake_menu_item_);
286 } 265 }
287 266
288 return gtk_rc_get_style(fake_menu_item_); 267 return gtk_rc_get_style(fake_menu_item_);
289 } 268 }
290 269
291 } // namespace libgtk2ui 270 } // namespace libgtk2ui
OLDNEW
« no previous file with comments | « chrome/browser/ui/libgtk2ui/native_theme_gtk2.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698