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/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" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 namespace libgtk2ui { | 97 namespace libgtk2ui { |
98 | 98 |
99 // static | 99 // static |
100 NativeThemeGtk2* NativeThemeGtk2::instance() { | 100 NativeThemeGtk2* NativeThemeGtk2::instance() { |
101 CR_DEFINE_STATIC_LOCAL(NativeThemeGtk2, s_native_theme, ()); | 101 CR_DEFINE_STATIC_LOCAL(NativeThemeGtk2, s_native_theme, ()); |
102 return &s_native_theme; | 102 return &s_native_theme; |
103 } | 103 } |
104 | 104 |
105 NativeThemeGtk2::NativeThemeGtk2() | 105 NativeThemeGtk2::NativeThemeGtk2() |
106 : fake_window_(NULL), | 106 : fake_window_(NULL), |
| 107 fake_tooltip_(NULL), |
107 fake_menu_item_(NULL) { | 108 fake_menu_item_(NULL) { |
108 } | 109 } |
109 | 110 |
110 NativeThemeGtk2::~NativeThemeGtk2() { | 111 NativeThemeGtk2::~NativeThemeGtk2() { |
111 if (fake_window_) | 112 if (fake_window_) |
112 gtk_widget_destroy(fake_window_); | 113 gtk_widget_destroy(fake_window_); |
| 114 if (fake_tooltip_) |
| 115 gtk_widget_destroy(fake_tooltip_); |
| 116 |
113 fake_entry_.Destroy(); | 117 fake_entry_.Destroy(); |
114 fake_label_.Destroy(); | 118 fake_label_.Destroy(); |
115 fake_button_.Destroy(); | 119 fake_button_.Destroy(); |
116 fake_tree_.Destroy(); | 120 fake_tree_.Destroy(); |
117 fake_menu_.Destroy(); | 121 fake_menu_.Destroy(); |
118 } | 122 } |
119 | 123 |
120 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { | 124 SkColor NativeThemeGtk2::GetSystemColor(ColorId color_id) const { |
121 return GdkColorToSkColor(GetSystemGdkColor(color_id)); | 125 return GdkColorToSkColor(GetSystemGdkColor(color_id)); |
122 } | 126 } |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 return GetEntryStyle()->text[GTK_STATE_INSENSITIVE]; | 246 return GetEntryStyle()->text[GTK_STATE_INSENSITIVE]; |
243 case kColorId_TextfieldReadOnlyBackground: | 247 case kColorId_TextfieldReadOnlyBackground: |
244 return GetEntryStyle()->base[GTK_STATE_INSENSITIVE]; | 248 return GetEntryStyle()->base[GTK_STATE_INSENSITIVE]; |
245 case kColorId_TextfieldSelectionColor: | 249 case kColorId_TextfieldSelectionColor: |
246 return GetEntryStyle()->text[GTK_STATE_SELECTED]; | 250 return GetEntryStyle()->text[GTK_STATE_SELECTED]; |
247 case kColorId_TextfieldSelectionBackgroundFocused: | 251 case kColorId_TextfieldSelectionBackgroundFocused: |
248 return GetEntryStyle()->base[GTK_STATE_SELECTED]; | 252 return GetEntryStyle()->base[GTK_STATE_SELECTED]; |
249 | 253 |
250 // Tooltips | 254 // Tooltips |
251 case kColorId_TooltipBackground: | 255 case kColorId_TooltipBackground: |
252 return GetWindowStyle()->bg[GTK_STATE_NORMAL]; | 256 return GetTooltipStyle()->bg[GTK_STATE_NORMAL]; |
| 257 case kColorId_TooltipText: |
| 258 return GetTooltipStyle()->fg[GTK_STATE_NORMAL]; |
253 | 259 |
254 // Trees and Tables (implemented on GTK using the same class) | 260 // Trees and Tables (implemented on GTK using the same class) |
255 case kColorId_TableBackground: | 261 case kColorId_TableBackground: |
256 case kColorId_TreeBackground: | 262 case kColorId_TreeBackground: |
257 return GetTreeStyle()->bg[GTK_STATE_NORMAL]; | 263 return GetTreeStyle()->bg[GTK_STATE_NORMAL]; |
258 case kColorId_TableText: | 264 case kColorId_TableText: |
259 case kColorId_TreeText: | 265 case kColorId_TreeText: |
260 return GetTreeStyle()->text[GTK_STATE_NORMAL]; | 266 return GetTreeStyle()->text[GTK_STATE_NORMAL]; |
261 case kColorId_TableSelectedText: | 267 case kColorId_TableSelectedText: |
262 case kColorId_TableSelectedTextUnfocused: | 268 case kColorId_TableSelectedTextUnfocused: |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 return gtk_rc_get_style(fake_button_.get()); | 376 return gtk_rc_get_style(fake_button_.get()); |
371 } | 377 } |
372 | 378 |
373 GtkStyle* NativeThemeGtk2::GetTreeStyle() const { | 379 GtkStyle* NativeThemeGtk2::GetTreeStyle() const { |
374 if (!fake_tree_.get()) | 380 if (!fake_tree_.get()) |
375 fake_tree_.Own(gtk_tree_view_new()); | 381 fake_tree_.Own(gtk_tree_view_new()); |
376 | 382 |
377 return gtk_rc_get_style(fake_tree_.get()); | 383 return gtk_rc_get_style(fake_tree_.get()); |
378 } | 384 } |
379 | 385 |
| 386 GtkStyle* NativeThemeGtk2::GetTooltipStyle() const { |
| 387 if (!fake_tooltip_) { |
| 388 fake_tooltip_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 389 gtk_widget_set_name(fake_tooltip_, "gtk-tooltip"); |
| 390 gtk_widget_realize(fake_tooltip_); |
| 391 } |
| 392 return gtk_rc_get_style(fake_tooltip_); |
| 393 } |
| 394 |
380 GtkStyle* NativeThemeGtk2::GetMenuStyle() const { | 395 GtkStyle* NativeThemeGtk2::GetMenuStyle() const { |
381 if (!fake_menu_.get()) | 396 if (!fake_menu_.get()) |
382 fake_menu_.Own(gtk_menu_new()); | 397 fake_menu_.Own(gtk_menu_new()); |
383 return gtk_rc_get_style(fake_menu_.get()); | 398 return gtk_rc_get_style(fake_menu_.get()); |
384 } | 399 } |
385 | 400 |
386 GtkStyle* NativeThemeGtk2::GetMenuItemStyle() const { | 401 GtkStyle* NativeThemeGtk2::GetMenuItemStyle() const { |
387 if (!fake_menu_item_) { | 402 if (!fake_menu_item_) { |
388 if (!fake_menu_.get()) | 403 if (!fake_menu_.get()) |
389 fake_menu_.Own(gtk_custom_menu_new()); | 404 fake_menu_.Own(gtk_custom_menu_new()); |
390 | 405 |
391 fake_menu_item_ = gtk_custom_menu_item_new(); | 406 fake_menu_item_ = gtk_custom_menu_item_new(); |
392 gtk_menu_shell_append(GTK_MENU_SHELL(fake_menu_.get()), fake_menu_item_); | 407 gtk_menu_shell_append(GTK_MENU_SHELL(fake_menu_.get()), fake_menu_item_); |
393 } | 408 } |
394 | 409 |
395 return gtk_rc_get_style(fake_menu_item_); | 410 return gtk_rc_get_style(fake_menu_item_); |
396 } | 411 } |
397 | 412 |
398 } // namespace libgtk2ui | 413 } // namespace libgtk2ui |
OLD | NEW |