diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-12 21:20:32 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-12 21:20:32 +0000 |
commit | a04e5f2d19aed5527a052e43a65ec66c88f355c5 (patch) | |
tree | 966a79348b91d0cf49dc5e7bdfab1c4535461761 | |
parent | 4a59e4e9b293138235bbb4a1dc559cb2fb54d481 (diff) | |
download | chromium_src-a04e5f2d19aed5527a052e43a65ec66c88f355c5.zip chromium_src-a04e5f2d19aed5527a052e43a65ec66c88f355c5.tar.gz chromium_src-a04e5f2d19aed5527a052e43a65ec66c88f355c5.tar.bz2 |
Close the task manager dialog on shutdown for aura. This is done by implementing views::Widget::CloseAllSecondaryWidgets()" on win aura.
Review URL: https://codereview.chromium.org/11359154
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167238 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/lifetime/application_lifetime_aura.cc | 4 | ||||
-rw-r--r-- | chrome/browser/lifetime/application_lifetime_win.cc | 2 | ||||
-rw-r--r-- | ui/views/widget/native_widget_aura.cc | 20 |
3 files changed, 21 insertions, 5 deletions
diff --git a/chrome/browser/lifetime/application_lifetime_aura.cc b/chrome/browser/lifetime/application_lifetime_aura.cc index 9547e87..5cfca40 100644 --- a/chrome/browser/lifetime/application_lifetime_aura.cc +++ b/chrome/browser/lifetime/application_lifetime_aura.cc @@ -8,6 +8,7 @@ #include "chrome/common/chrome_switches.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/notifications/notification_ui_manager.h" +#include "ui/views/widget/widget.h" #if defined(USE_ASH) #include "ash/shell.h" @@ -33,8 +34,7 @@ void HandleAppExitingForPlatform() { g_browser_process->notification_ui_manager()->CancelAll(); #endif - // TODO(oshima): Close all non browser windows here while - // the message loop is still alive. + views::Widget::CloseAllSecondaryWidgets(); #if defined(OS_CHROMEOS) if (!CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/chrome/browser/lifetime/application_lifetime_win.cc b/chrome/browser/lifetime/application_lifetime_win.cc index 9370ad2..f590769 100644 --- a/chrome/browser/lifetime/application_lifetime_win.cc +++ b/chrome/browser/lifetime/application_lifetime_win.cc @@ -9,9 +9,7 @@ namespace browser { void HandleAppExitingForPlatform() { -#if !defined(USE_AURA) views::Widget::CloseAllSecondaryWidgets(); -#endif } } // namespace browser diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc index 807c185..4e47ab2 100644 --- a/ui/views/widget/native_widget_aura.cc +++ b/ui/views/widget/native_widget_aura.cc @@ -45,6 +45,7 @@ #include "base/win/scoped_gdi_object.h" #include "base/win/win_util.h" #include "ui/base/l10n/l10n_util_win.h" +#include "ui/views/widget/desktop_root_window_host_win.h" #endif #if !defined(OS_CHROMEOS) @@ -895,9 +896,26 @@ void Widget::NotifyLocaleChanged() { // Deliberately not implemented. } +#if defined(OS_WIN) +namespace { +BOOL CALLBACK WindowCallbackProc(HWND hwnd, LPARAM lParam) { + aura::Window* root_window = + DesktopRootWindowHostWin::GetContentWindowForHWND(hwnd); + if (root_window) { + Widget* widget = Widget::GetWidgetForNativeView(root_window); + if (widget && widget->is_secondary_widget()) + widget->Close(); + } + return TRUE; +} +} // namespace +#endif + // static void Widget::CloseAllSecondaryWidgets() { - // Deliberately not implemented. +#if defined(OS_WIN) + EnumThreadWindows(GetCurrentThreadId(), WindowCallbackProc, 0); +#endif } bool Widget::ConvertRect(const Widget* source, |