diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 13:53:42 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 13:53:42 +0000 |
commit | 4535761bb390246ca26587b9de48e4e619fabd5b (patch) | |
tree | 378d54af16219b039d1cfcd0891a7295997df86b /ui | |
parent | 39aeea2b4e5fd60e0a9a9bf52ac5448c39e67caa (diff) | |
download | chromium_src-4535761bb390246ca26587b9de48e4e619fabd5b.zip chromium_src-4535761bb390246ca26587b9de48e4e619fabd5b.tar.gz chromium_src-4535761bb390246ca26587b9de48e4e619fabd5b.tar.bz2 |
Linux Aura: Update Widget when the native theme instance in use changes.
(like when switching between GTK+ and classic theme)
BUG=347832
Review URL: https://codereview.chromium.org/261753005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@268734 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/native_theme/native_theme.h | 2 | ||||
-rw-r--r-- | ui/views/widget/widget.cc | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h index f4ea130..eec9d63 100644 --- a/ui/native_theme/native_theme.h +++ b/ui/native_theme/native_theme.h @@ -320,10 +320,10 @@ class NATIVE_THEME_EXPORT NativeTheme { void AddObserver(NativeThemeObserver* observer); void RemoveObserver(NativeThemeObserver* observer); - protected: // Notify observers of native theme changes. void NotifyObservers(); + protected: NativeTheme(); virtual ~NativeTheme(); diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index cfc6d59..ed07ae2 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc @@ -1356,8 +1356,15 @@ View* Widget::GetFocusTraversableParentView() { // Widget, ui::NativeThemeObserver implementation: void Widget::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) { - DCHECK_EQ(observed_theme, GetNativeTheme()); - root_view_->PropagateNativeThemeChanged(GetNativeTheme()); + DCHECK(observer_manager_.IsObserving(observed_theme)); + + ui::NativeTheme* current_native_theme = GetNativeTheme(); + if (!observer_manager_.IsObserving(current_native_theme)) { + observer_manager_.RemoveAll(); + observer_manager_.Add(current_native_theme); + } + + root_view_->PropagateNativeThemeChanged(current_native_theme); } //////////////////////////////////////////////////////////////////////////////// |