Chromium Code Reviews| Index: ui/views/widget/widget.cc |
| diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc |
| index 154d107a63b298fbb7f6d0eb764d924ecc1a734b..3ece58d3e64e8219b5c4111b1d2c7a035b6f40f2 100644 |
| --- a/ui/views/widget/widget.cc |
| +++ b/ui/views/widget/widget.cc |
| @@ -123,7 +123,8 @@ Widget::InitParams::InitParams() |
| desktop_window_tree_host(NULL), |
| layer_type(ui::LAYER_TEXTURED), |
| context(NULL), |
| - force_show_in_taskbar(false) { |
| + force_show_in_taskbar(false), |
| + theme_provider(nullptr) { |
| } |
| Widget::InitParams::InitParams(Type type) |
| @@ -146,7 +147,8 @@ Widget::InitParams::InitParams(Type type) |
| desktop_window_tree_host(NULL), |
| layer_type(ui::LAYER_TEXTURED), |
| context(NULL), |
| - force_show_in_taskbar(false) { |
| + force_show_in_taskbar(false), |
| + theme_provider(nullptr) { |
| } |
| Widget::InitParams::~InitParams() { |
| @@ -159,6 +161,7 @@ Widget::Widget() |
| : native_widget_(NULL), |
| widget_delegate_(NULL), |
| non_client_view_(NULL), |
| + theme_provider_(nullptr), |
| dragged_view_(NULL), |
| ownership_(InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
| is_secondary_widget_(true), |
| @@ -352,7 +355,10 @@ void Widget::Init(const InitParams& in_params) { |
| native_widget_ = CreateNativeWidget(params.native_widget, this)-> |
| AsNativeWidgetPrivate(); |
| root_view_.reset(CreateRootView()); |
| - default_theme_provider_.reset(new ui::DefaultThemeProvider); |
| + if (in_params.theme_provider && GetTopLevelWidget() == this) |
| + theme_provider_ = in_params.theme_provider; |
| + else |
| + default_theme_provider_.reset(new ui::DefaultThemeProvider); |
|
tdanderson
2015/09/09 17:38:58
nit: newline after line 361
sadrul
2015/09/09 17:56:57
I was thinking this could be more like:
theme_p
|
| if (params.type == InitParams::TYPE_MENU) { |
| is_mouse_button_pressed_ = |
| internal::NativeWidgetPrivate::IsMouseButtonDown(); |
| @@ -744,18 +750,9 @@ bool Widget::IsVisible() const { |
| ui::ThemeProvider* Widget::GetThemeProvider() const { |
| const Widget* root_widget = GetTopLevelWidget(); |
| - if (root_widget && root_widget != this) { |
| - // Attempt to get the theme provider, and fall back to the default theme |
| - // provider if not found. |
| - ui::ThemeProvider* provider = root_widget->GetThemeProvider(); |
| - if (provider) |
| - return provider; |
| - |
| - provider = root_widget->default_theme_provider_.get(); |
| - if (provider) |
| - return provider; |
| - } |
| - return default_theme_provider_.get(); |
| + if (root_widget && root_widget != this) |
| + return root_widget->GetThemeProvider(); |
| + return theme_provider_ ? theme_provider_ : default_theme_provider_.get(); |
| } |
| const ui::NativeTheme* Widget::GetNativeTheme() const { |