summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-19 19:03:55 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-19 19:03:55 +0000
commit6b2e6c8e02c3d37aaf7bebf38833c85b851c1074 (patch)
treef051912576a3b4b0fb570dc8a37016977e175778 /ui
parent948d3c6675d7e22c0fdf7d80ff5a1f8b5a8f2892 (diff)
downloadchromium_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.cc27
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,