summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 03:42:23 +0000
committerzork@chromium.org <zork@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-24 03:42:23 +0000
commit24ac9f16048cd62ff769261f8204163bba922579 (patch)
treed617fcc468ec94e2588ca37aa73c1b4dce6a420c
parent5f5d58a9635023d87a8acbe11c4aacc4fb387e14 (diff)
downloadchromium_src-24ac9f16048cd62ff769261f8204163bba922579.zip
chromium_src-24ac9f16048cd62ff769261f8204163bba922579.tar.gz
chromium_src-24ac9f16048cd62ff769261f8204163bba922579.tar.bz2
Determine the theme for a widget in gtk from its parent,
instead of just using the defaul BUG=chromium-os:4890 TEST=On ChromeOS, enable a theme, and open the find box. Check that the theme is applied. Review URL: http://codereview.chromium.org/4705005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67210 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--views/views.gyp2
-rw-r--r--views/widget/widget_gtk.cc3
-rw-r--r--views/widget/widget_utils.cc29
-rw-r--r--views/widget/widget_utils.h19
-rw-r--r--views/widget/widget_win.cc15
5 files changed, 54 insertions, 14 deletions
diff --git a/views/views.gyp b/views/views.gyp
index eac9966..d523633 100644
--- a/views/views.gyp
+++ b/views/views.gyp
@@ -311,6 +311,8 @@
'widget/widget.h',
'widget/widget_gtk.cc',
'widget/widget_gtk.h',
+ 'widget/widget_utils.cc',
+ 'widget/widget_utils.h',
'widget/widget_win.cc',
'widget/widget_win.h',
'window/client_view.cc',
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc
index dcb6fb3..b56a03d 100644
--- a/views/widget/widget_gtk.cc
+++ b/views/widget/widget_gtk.cc
@@ -26,6 +26,7 @@
#include "views/widget/root_view.h"
#include "views/widget/tooltip_manager_gtk.h"
#include "views/widget/widget_delegate.h"
+#include "views/widget/widget_utils.h"
#include "views/window/window_gtk.h"
namespace {
@@ -811,7 +812,7 @@ void* WidgetGtk::GetNativeWindowProperty(const char* name) {
}
ThemeProvider* WidgetGtk::GetThemeProvider() const {
- return default_theme_provider_.get();
+ return GetWidgetThemeProvider(this);
}
ThemeProvider* WidgetGtk::GetDefaultThemeProvider() const {
diff --git a/views/widget/widget_utils.cc b/views/widget/widget_utils.cc
new file mode 100644
index 0000000..70b946d
--- /dev/null
+++ b/views/widget/widget_utils.cc
@@ -0,0 +1,29 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "views/widget/widget_utils.h"
+
+#include <string>
+
+#include "views/widget/widget.h"
+
+namespace views {
+
+ThemeProvider* GetWidgetThemeProvider(const Widget* widget) {
+ Widget* root_widget = widget->GetRootWidget();
+ if (root_widget && root_widget != widget) {
+ // Attempt to get the theme provider, and fall back to the default theme
+ // provider if not found.
+ ThemeProvider* provider = root_widget->GetThemeProvider();
+ if (provider)
+ return provider;
+
+ provider = root_widget->GetDefaultThemeProvider();
+ if (provider)
+ return provider;
+ }
+ return widget->GetDefaultThemeProvider();
+}
+
+} // namespace views
diff --git a/views/widget/widget_utils.h b/views/widget/widget_utils.h
new file mode 100644
index 0000000..78fdba9
--- /dev/null
+++ b/views/widget/widget_utils.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef VIEWS_WIDGET_WIDGET_UTILS_H_
+#define VIEWS_WIDGET_WIDGET_UTILS_H_
+#pragma once
+
+class ThemeProvider;
+
+namespace views {
+
+class Widget;
+
+ThemeProvider* GetWidgetThemeProvider(const Widget* widget);
+
+} // namespace views
+
+#endif // VIEWS_WIDGET_WIDGET_UTILS_H_
diff --git a/views/widget/widget_win.cc b/views/widget/widget_win.cc
index 62643b2..9b30754 100644
--- a/views/widget/widget_win.cc
+++ b/views/widget/widget_win.cc
@@ -24,6 +24,7 @@
#include "views/widget/drop_target_win.h"
#include "views/widget/root_view.h"
#include "views/widget/widget_delegate.h"
+#include "views/widget/widget_utils.h"
#include "views/window/window_win.h"
using app::ViewProp;
@@ -437,19 +438,7 @@ void* WidgetWin::GetNativeWindowProperty(const char* name) {
}
ThemeProvider* WidgetWin::GetThemeProvider() const {
- Widget* widget = GetRootWidget();
- if (widget && widget != this) {
- // Attempt to get the theme provider, and fall back to the default theme
- // provider if not found.
- ThemeProvider* provider = widget->GetThemeProvider();
- if (provider)
- return provider;
-
- provider = widget->GetDefaultThemeProvider();
- if (provider)
- return provider;
- }
- return default_theme_provider_.get();
+ return GetWidgetThemeProvider(this);
}
ThemeProvider* WidgetWin::GetDefaultThemeProvider() const {