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

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

Issue 290573003: Make tooltips toplevel windows on Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
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"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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");
pkotwicz 2014/05/16 02:22:53 I found this by luck. I have not found any officia
Elliot Glaysher 2014/05/16 19:39:42 A lot of this stuff isn't documented and has to be
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698