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

Unified Diff: ash/wm/toplevel_window_event_handler.cc

Issue 12441010: Attach panel while dragging to bring it in front of other panels. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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
Index: ash/wm/toplevel_window_event_handler.cc
diff --git a/ash/wm/toplevel_window_event_handler.cc b/ash/wm/toplevel_window_event_handler.cc
index 4f0826986bba4e2188281a0a6d36e0e844fbf746..1cda284dcf74b71e658281d35fb8a45bbf8f5e20 100644
--- a/ash/wm/toplevel_window_event_handler.cc
+++ b/ash/wm/toplevel_window_event_handler.cc
@@ -59,6 +59,8 @@ class ToplevelWindowEventHandler::ScopedWindowResizer
WindowResizer* resizer);
virtual ~ScopedWindowResizer();
+ WindowResizer* ReleaseResizer();
+
WindowResizer* resizer() { return resizer_.get(); }
// WindowObserver overrides:
@@ -88,6 +90,13 @@ ToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() {
resizer_->GetTarget()->RemoveObserver(this);
}
+WindowResizer*
+ToplevelWindowEventHandler::ScopedWindowResizer::ReleaseResizer() {
+ if (resizer_.get())
+ resizer_->GetTarget()->RemoveObserver(this);
+ return resizer_.release();
+}
+
void ToplevelWindowEventHandler::ScopedWindowResizer::OnWindowPropertyChanged(
aura::Window* window,
const void* key,
@@ -323,13 +332,27 @@ void ToplevelWindowEventHandler::OnDisplayConfigurationChanging() {
}
}
+void ToplevelWindowEventHandler::PassResizer(WindowResizerOwner* new_owner) {
+ DCHECK(window_resizer_.get());
+ new_owner->AcceptResizer(window_resizer_->ReleaseResizer(),
+ in_gesture_drag_);
+ window_resizer_.reset();
+}
+
+void ToplevelWindowEventHandler::AcceptResizer(WindowResizer* resizer,
+ bool in_gesture_drag) {
+ window_resizer_.reset(new ScopedWindowResizer(this, resizer));
+ in_gesture_drag_ = in_gesture_drag;
+}
+
void ToplevelWindowEventHandler::CreateScopedWindowResizer(
aura::Window* window,
const gfx::Point& point_in_parent,
int window_component) {
window_resizer_.reset();
WindowResizer* resizer =
- CreateWindowResizer(window, point_in_parent, window_component).release();
+ CreateWindowResizer(this, window, point_in_parent,
+ window_component).release();
if (resizer)
window_resizer_.reset(new ScopedWindowResizer(this, resizer));
}

Powered by Google App Engine
This is Rietveld 408576698