Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(289)

Unified Diff: ui/views/widget/desktop_native_widget_helper_aura.cc

Issue 10828133: Desktop Aura: Allow tab drags out of window. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/widget/desktop_native_widget_helper_aura.h ('k') | ui/views/widget/native_widget_aura.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/widget/desktop_native_widget_helper_aura.cc
diff --git a/ui/views/widget/desktop_native_widget_helper_aura.cc b/ui/views/widget/desktop_native_widget_helper_aura.cc
index b2618f838099369e85c7a51635ae2c0955f88e74..598b366c21858739c1af149cb8f7d316f92a8619 100644
--- a/ui/views/widget/desktop_native_widget_helper_aura.cc
+++ b/ui/views/widget/desktop_native_widget_helper_aura.cc
@@ -22,6 +22,7 @@
#include "ui/views/widget/widget_message_filter.h"
#elif defined(USE_X11)
#include "ui/views/widget/x11_desktop_handler.h"
+#include "ui/views/widget/x11_desktop_window_move_client.h"
#include "ui/views/widget/x11_window_event_filter.h"
#endif
@@ -91,13 +92,18 @@ class DesktopScreenPositionClient
DesktopNativeWidgetHelperAura::DesktopNativeWidgetHelperAura(
NativeWidgetAura* widget)
: widget_(widget),
+ window_(NULL),
root_window_event_filter_(NULL),
is_embedded_window_(false) {
}
DesktopNativeWidgetHelperAura::~DesktopNativeWidgetHelperAura() {
+ if (window_)
+ window_->RemoveObserver(this);
+
if (root_window_event_filter_) {
#if defined(USE_X11)
+ root_window_event_filter_->RemoveFilter(x11_window_move_client_.get());
root_window_event_filter_->RemoveFilter(x11_window_event_filter_.get());
#endif
@@ -178,9 +184,19 @@ void DesktopNativeWidgetHelperAura::PreInitialize(
root_window_->AddRootWindowObserver(this);
+ window_ = window;
+ window_->AddObserver(this);
+
aura::client::SetActivationClient(root_window_.get(), activation_client);
aura::client::SetDispatcherClient(root_window_.get(),
new aura::DesktopDispatcherClient);
+#if defined(USE_X11)
+ // TODO(ben): A window implementation of this will need to be written.
+ x11_window_move_client_.reset(new X11DesktopWindowMoveClient);
+ root_window_event_filter_->AddFilter(x11_window_move_client_.get());
+ aura::client::SetWindowMoveClient(root_window_.get(),
+ x11_window_move_client_.get());
+#endif
position_client_.reset(new DesktopScreenPositionClient());
aura::client::SetScreenPositionClient(root_window_.get(),
@@ -197,11 +213,6 @@ void DesktopNativeWidgetHelperAura::PostInitialize() {
#endif
}
-void DesktopNativeWidgetHelperAura::ShowRootWindow() {
- if (root_window_.get())
- root_window_->ShowRootWindow();
-}
-
aura::RootWindow* DesktopNativeWidgetHelperAura::GetRootWindow() {
return root_window_.get();
}
@@ -232,6 +243,20 @@ gfx::Rect DesktopNativeWidgetHelperAura::ModifyAndSetBounds(
}
////////////////////////////////////////////////////////////////////////////////
+// DesktopNativeWidgetHelperAura, aura::WindowObserver implementation:
+void DesktopNativeWidgetHelperAura::OnWindowVisibilityChanged(
+ aura::Window* window,
+ bool visible) {
+ DCHECK_EQ(window, window_);
+
+ // Since we're trying to hide the main window, hide the OS level root as well.
+ if (visible)
+ root_window_->ShowRootWindow();
+ else
+ root_window_->HideRootWindow();
+}
+
+////////////////////////////////////////////////////////////////////////////////
// DesktopNativeWidgetHelperAura, aura::RootWindowObserver implementation:
void DesktopNativeWidgetHelperAura::OnRootWindowResized(
@@ -248,4 +273,10 @@ void DesktopNativeWidgetHelperAura::OnRootWindowHostCloseRequested(
widget_->GetWidget()->Close();
}
+void DesktopNativeWidgetHelperAura::OnRootWindowMoved(
+ const aura::RootWindow* root,
+ const gfx::Point& new_origin) {
+ widget_->GetWidget()->OnNativeWidgetMove();
+}
+
} // namespace views
« no previous file with comments | « ui/views/widget/desktop_native_widget_helper_aura.h ('k') | ui/views/widget/native_widget_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698