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

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

Issue 243633003: use the right NativeTheme on bubbles + dialogs on Aura Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: good enough for now Created 6 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/gtk2_ui.h" 5 #include "chrome/browser/ui/libgtk2ui/gtk2_ui.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/leak_annotations.h" 10 #include "base/debug/leak_annotations.h"
11 #include "base/environment.h" 11 #include "base/environment.h"
12 #include "base/i18n/rtl.h" 12 #include "base/i18n/rtl.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/nix/mime_util_xdg.h" 14 #include "base/nix/mime_util_xdg.h"
15 #include "base/prefs/pref_service.h"
15 #include "base/stl_util.h" 16 #include "base/stl_util.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
17 #include "chrome/browser/themes/theme_properties.h" 18 #include "chrome/browser/themes/theme_properties.h"
18 #include "chrome/browser/ui/libgtk2ui/app_indicator_icon.h" 19 #include "chrome/browser/ui/libgtk2ui/app_indicator_icon.h"
19 #include "chrome/browser/ui/libgtk2ui/chrome_gtk_frame.h" 20 #include "chrome/browser/ui/libgtk2ui/chrome_gtk_frame.h"
20 #include "chrome/browser/ui/libgtk2ui/gtk2_border.h" 21 #include "chrome/browser/ui/libgtk2ui/gtk2_border.h"
21 #include "chrome/browser/ui/libgtk2ui/gtk2_event_loop.h" 22 #include "chrome/browser/ui/libgtk2ui/gtk2_event_loop.h"
22 #include "chrome/browser/ui/libgtk2ui/gtk2_key_bindings_handler.h" 23 #include "chrome/browser/ui/libgtk2ui/gtk2_key_bindings_handler.h"
23 #include "chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.h" 24 #include "chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.h"
24 #include "chrome/browser/ui/libgtk2ui/gtk2_util.h" 25 #include "chrome/browser/ui/libgtk2ui/gtk2_util.h"
25 #include "chrome/browser/ui/libgtk2ui/native_theme_gtk2.h" 26 #include "chrome/browser/ui/libgtk2ui/native_theme_gtk2.h"
26 #include "chrome/browser/ui/libgtk2ui/print_dialog_gtk2.h" 27 #include "chrome/browser/ui/libgtk2ui/print_dialog_gtk2.h"
27 #include "chrome/browser/ui/libgtk2ui/printing_gtk2_util.h" 28 #include "chrome/browser/ui/libgtk2ui/printing_gtk2_util.h"
28 #include "chrome/browser/ui/libgtk2ui/select_file_dialog_impl.h" 29 #include "chrome/browser/ui/libgtk2ui/select_file_dialog_impl.h"
29 #include "chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h" 30 #include "chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h"
30 #include "chrome/browser/ui/libgtk2ui/unity_service.h" 31 #include "chrome/browser/ui/libgtk2ui/unity_service.h"
31 #include "chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.h" 32 #include "chrome/browser/ui/libgtk2ui/x11_input_method_context_impl_gtk2.h"
33 #include "chrome/browser/ui/views/frame/browser_view.h"
34 #include "chrome/common/pref_names.h"
32 #include "grit/theme_resources.h" 35 #include "grit/theme_resources.h"
33 #include "grit/ui_resources.h" 36 #include "grit/ui_resources.h"
34 #include "printing/printing_context_linux.h" 37 #include "printing/printing_context_linux.h"
35 #include "third_party/skia/include/core/SkBitmap.h" 38 #include "third_party/skia/include/core/SkBitmap.h"
36 #include "third_party/skia/include/core/SkCanvas.h" 39 #include "third_party/skia/include/core/SkCanvas.h"
37 #include "third_party/skia/include/core/SkColor.h" 40 #include "third_party/skia/include/core/SkColor.h"
38 #include "third_party/skia/include/core/SkShader.h" 41 #include "third_party/skia/include/core/SkShader.h"
39 #include "ui/base/resource/resource_bundle.h" 42 #include "ui/base/resource/resource_bundle.h"
40 #include "ui/gfx/canvas.h" 43 #include "ui/gfx/canvas.h"
41 #include "ui/gfx/image/image.h" 44 #include "ui/gfx/image/image.h"
42 #include "ui/gfx/rect.h" 45 #include "ui/gfx/rect.h"
43 #include "ui/gfx/size.h" 46 #include "ui/gfx/size.h"
44 #include "ui/gfx/skbitmap_operations.h" 47 #include "ui/gfx/skbitmap_operations.h"
45 #include "ui/gfx/skia_util.h" 48 #include "ui/gfx/skia_util.h"
49 #include "ui/native_theme/native_theme_aura.h"
46 #include "ui/views/linux_ui/window_button_order_observer.h" 50 #include "ui/views/linux_ui/window_button_order_observer.h"
47 51
48 #if defined(USE_GCONF) 52 #if defined(USE_GCONF)
49 #include "chrome/browser/ui/libgtk2ui/gconf_listener.h" 53 #include "chrome/browser/ui/libgtk2ui/gconf_listener.h"
50 #endif 54 #endif
51 55
52 // A minimized port of GtkThemeService into something that can provide colors 56 // A minimized port of GtkThemeService into something that can provide colors
53 // and images for aura. 57 // and images for aura.
54 // 58 //
55 // TODO(erg): There's still a lot that needs ported or done for the first time: 59 // TODO(erg): There's still a lot that needs ported or done for the first time:
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 446
443 gint cursor_blink_time = kGtkDefaultCursorBlinkTime; 447 gint cursor_blink_time = kGtkDefaultCursorBlinkTime;
444 gboolean cursor_blink = TRUE; 448 gboolean cursor_blink = TRUE;
445 g_object_get(gtk_settings_get_default(), 449 g_object_get(gtk_settings_get_default(),
446 "gtk-cursor-blink-time", &cursor_blink_time, 450 "gtk-cursor-blink-time", &cursor_blink_time,
447 "gtk-cursor-blink", &cursor_blink, 451 "gtk-cursor-blink", &cursor_blink,
448 NULL); 452 NULL);
449 return cursor_blink ? (cursor_blink_time / kGtkCursorBlinkCycleFactor) : 0.0; 453 return cursor_blink ? (cursor_blink_time / kGtkCursorBlinkCycleFactor) : 0.0;
450 } 454 }
451 455
452 ui::NativeTheme* Gtk2UI::GetNativeTheme() const { 456 ui::NativeTheme* Gtk2UI::GetNativeTheme(aura::Window* window) const {
453 return NativeThemeGtk2::instance(); 457 Profile* profile = NULL;
458 if (window->type() == ui::wm::WINDOW_TYPE_NORMAL ||
459 window->type() == ui::wm::WINDOW_TYPE_POPUP) {
460 profile = reinterpret_cast<Profile*>(
461 window->GetNativeWindowProperty(Profile::kProfileKey));
Elliot Glaysher 2014/04/21 22:43:20 I sort of worry about destruction order issues her
Evan Stade 2014/04/22 18:33:22 I believe this to be correct.
462 }
463
464 if (profile && !profile->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme))
465 return ui::NativeThemeAura::instance();
466 else
467 return NativeThemeGtk2::instance();
454 } 468 }
455 469
456 bool Gtk2UI::GetDefaultUsesSystemTheme() const { 470 bool Gtk2UI::GetDefaultUsesSystemTheme() const {
457 scoped_ptr<base::Environment> env(base::Environment::Create()); 471 scoped_ptr<base::Environment> env(base::Environment::Create());
458 472
459 switch (base::nix::GetDesktopEnvironment(env.get())) { 473 switch (base::nix::GetDesktopEnvironment(env.get())) {
460 case base::nix::DESKTOP_ENVIRONMENT_GNOME: 474 case base::nix::DESKTOP_ENVIRONMENT_GNOME:
461 case base::nix::DESKTOP_ENVIRONMENT_UNITY: 475 case base::nix::DESKTOP_ENVIRONMENT_UNITY:
462 case base::nix::DESKTOP_ENVIRONMENT_XFCE: 476 case base::nix::DESKTOP_ENVIRONMENT_XFCE:
463 return true; 477 return true;
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 1394
1381 FOR_EACH_OBSERVER(views::NativeThemeChangeObserver, theme_change_observers_, 1395 FOR_EACH_OBSERVER(views::NativeThemeChangeObserver, theme_change_observers_,
1382 OnNativeThemeChanged()); 1396 OnNativeThemeChanged());
1383 } 1397 }
1384 1398
1385 } // namespace libgtk2ui 1399 } // namespace libgtk2ui
1386 1400
1387 views::LinuxUI* BuildGtk2UI() { 1401 views::LinuxUI* BuildGtk2UI() {
1388 return new libgtk2ui::Gtk2UI; 1402 return new libgtk2ui::Gtk2UI;
1389 } 1403 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698