summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 13:53:42 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 13:53:42 +0000
commit4535761bb390246ca26587b9de48e4e619fabd5b (patch)
tree378d54af16219b039d1cfcd0891a7295997df86b /ui
parent39aeea2b4e5fd60e0a9a9bf52ac5448c39e67caa (diff)
downloadchromium_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.h2
-rw-r--r--ui/views/widget/widget.cc11
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);
}
////////////////////////////////////////////////////////////////////////////////