diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-29 02:59:21 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-29 02:59:21 +0000 |
commit | 0d06de4116d615007945635c8cd9d70cddccd231 (patch) | |
tree | 25e41d7718074f2fa4e2a229d09d5a89fe93480a /ui | |
parent | 6ce0bbc6b09f14ce21d1af2bb34790ca2e2f52d0 (diff) | |
download | chromium_src-0d06de4116d615007945635c8cd9d70cddccd231.zip chromium_src-0d06de4116d615007945635c8cd9d70cddccd231.tar.gz chromium_src-0d06de4116d615007945635c8cd9d70cddccd231.tar.bz2 |
linux_aura: Close window when the OS requests it.
Alt-F4 key events are handled by the window manager, who then sends an X11
message telling us that we should close. This used to be hooked up, but it
looks like it broke when we merged with the crossplatform
DesktopNativeWidgetAura code that we also use on Windows.
BUG=176783
Review URL: https://chromiumcodereview.appspot.com/15827009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202758 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_native_widget_aura.cc | 12 | ||||
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_native_widget_aura.h | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc index 4e6c1c4..26828e0 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc @@ -178,6 +178,8 @@ DesktopNativeWidgetAura::~DesktopNativeWidgetAura() { CloseNow(); stacking_client_.reset(); // Uses root_window_ at destruction. + + root_window_->RemoveRootWindowObserver(this); root_window_.reset(); // Uses input_method_event_filter_ at destruction. input_method_event_filter_.reset(); } @@ -235,6 +237,8 @@ void DesktopNativeWidgetAura::InitNativeWidget( this, params.bounds); root_window_.reset( desktop_root_window_host_->Init(window_, params)); + root_window_->AddRootWindowObserver(this); + stacking_client_.reset( new DesktopNativeWidgetAuraStackingClient(root_window_.get())); drop_helper_.reset(new DropHelper( @@ -842,4 +846,12 @@ int DesktopNativeWidgetAura::OnPerformDrop(const ui::DropTargetEvent& event) { last_drop_operation_); } +//////////////////////////////////////////////////////////////////////////////// +// DesktopNativeWidgetAura, aura::RootWindowObserver implementation: + +void DesktopNativeWidgetAura::OnRootWindowHostCloseRequested( + const aura::RootWindow* root) { + Close(); +} + } // namespace views diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h index 7a79db8..d46f0ba 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.h +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.h @@ -10,6 +10,7 @@ #include "ui/aura/client/activation_delegate.h" #include "ui/aura/client/drag_drop_delegate.h" #include "ui/aura/client/focus_change_observer.h" +#include "ui/aura/root_window_observer.h" #include "ui/aura/window_delegate.h" #include "ui/views/ime/input_method_delegate.h" #include "ui/views/widget/native_widget_private.h" @@ -44,7 +45,8 @@ class VIEWS_EXPORT DesktopNativeWidgetAura public aura::client::ActivationChangeObserver, public aura::client::FocusChangeObserver, public views::internal::InputMethodDelegate, - public aura::client::DragDropDelegate { + public aura::client::DragDropDelegate, + public aura::RootWindowObserver { public: explicit DesktopNativeWidgetAura(internal::NativeWidgetDelegate* delegate); virtual ~DesktopNativeWidgetAura(); @@ -193,6 +195,10 @@ class VIEWS_EXPORT DesktopNativeWidgetAura virtual void OnDragExited() OVERRIDE; virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE; + // Overridden from aura::RootWindowObserver: + virtual void OnRootWindowHostCloseRequested( + const aura::RootWindow* root) OVERRIDE; + private: // See class documentation for Widget in widget.h for a note about ownership. Widget::InitParams::Ownership ownership_; |