diff options
author | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-19 19:03:55 +0000 |
---|---|---|
committer | mukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-19 19:03:55 +0000 |
commit | 6b2e6c8e02c3d37aaf7bebf38833c85b851c1074 (patch) | |
tree | f051912576a3b4b0fb570dc8a37016977e175778 /ui | |
parent | 948d3c6675d7e22c0fdf7d80ff5a1f8b5a8f2892 (diff) | |
download | chromium_src-6b2e6c8e02c3d37aaf7bebf38833c85b851c1074.zip chromium_src-6b2e6c8e02c3d37aaf7bebf38833c85b851c1074.tar.gz chromium_src-6b2e6c8e02c3d37aaf7bebf38833c85b851c1074.tar.bz2 |
Implement CloseAllSecondaryWidgets()
BUG=102575
TEST=none
Review URL: http://codereview.chromium.org/8956006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115007 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/native_widget_aura.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc index c009a07..1355f17 100644 --- a/ui/views/widget/native_widget_aura.cc +++ b/ui/views/widget/native_widget_aura.cc @@ -60,18 +60,34 @@ aura::WindowType GetAuraWindowTypeForWidgetType(Widget::InitParams::Type type) { } } -void NotifyLocaleChangedInternal(aura::Window* window) { +typedef void (*WidgetCallback)(Widget*); + +void ForEachNativeWidgetInternal(aura::Window* window, + WidgetCallback callback) { Widget* widget = Widget::GetWidgetForNativeWindow(window); if (widget) - widget->LocaleChanged(); + callback(widget); const aura::Window::Windows& children = window->children(); for (aura::Window::Windows::const_iterator it = children.begin(); it != children.end(); ++it) { - NotifyLocaleChangedInternal(*it); + ForEachNativeWidgetInternal(*it, callback); } } +void ForEachNativeWidget(WidgetCallback callback) { + ForEachNativeWidgetInternal(aura::RootWindow::GetInstance(), callback); +} + +void NotifyLocaleChangedCallback(Widget* widget) { + widget->LocaleChanged(); +} + +void CloseAllSecondaryWidgetsCallback(Widget* widget) { + if (widget->is_secondary_widget()) + widget->Close(); +} + } // namespace // Used when SetInactiveRenderingDisabled() is invoked to track when active @@ -746,13 +762,12 @@ int NativeWidgetAura::OnPerformDrop(const aura::DropTargetEvent& event) { // static void Widget::NotifyLocaleChanged() { - NotifyLocaleChangedInternal(aura::RootWindow::GetInstance()); + ForEachNativeWidget(NotifyLocaleChangedCallback); } // static void Widget::CloseAllSecondaryWidgets() { - // http://crbug.com/102575 - NOTIMPLEMENTED(); + ForEachNativeWidget(CloseAllSecondaryWidgetsCallback); } bool Widget::ConvertRect(const Widget* source, |