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

Unified Diff: ash/wm/toplevel_window_event_handler.cc

Issue 778043004: Set capture to the window being dragged when dragging a window on Ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_capture
Patch Set: Created 6 years 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 | « ash/wm/system_gesture_event_filter_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 610261f9f78b21a0c2fce52c4091a2e9ace5232d..cc0362e0ece038b331aca7a1aba5289937ffb18d 100644
--- a/ash/wm/toplevel_window_event_handler.cc
+++ b/ash/wm/toplevel_window_event_handler.cc
@@ -110,6 +110,9 @@ class ToplevelWindowEventHandler::ScopedWindowResizer
ToplevelWindowEventHandler* handler_;
scoped_ptr<WindowResizer> resizer_;
+ // Whether ScopedWindowResizer grabbed capture.
+ bool grabbed_capture_;
+
DISALLOW_COPY_AND_ASSIGN(ScopedWindowResizer);
};
@@ -117,14 +120,24 @@ ToplevelWindowEventHandler::ScopedWindowResizer::ScopedWindowResizer(
ToplevelWindowEventHandler* handler,
WindowResizer* resizer)
: handler_(handler),
- resizer_(resizer) {
- resizer_->GetTarget()->AddObserver(this);
- wm::GetWindowState(resizer_->GetTarget())->AddObserver(this);
+ resizer_(resizer),
+ grabbed_capture_(false) {
+ aura::Window* target = resizer_->GetTarget();
+ target->AddObserver(this);
+ wm::GetWindowState(target)->AddObserver(this);
+
+ if (!target->HasCapture()) {
+ grabbed_capture_ = true;
+ target->SetCapture();
+ }
}
ToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() {
- resizer_->GetTarget()->RemoveObserver(this);
- wm::GetWindowState(resizer_->GetTarget())->RemoveObserver(this);
+ aura::Window* target = resizer_->GetTarget();
+ target->RemoveObserver(this);
+ wm::GetWindowState(target)->RemoveObserver(this);
+ if (grabbed_capture_)
+ target->ReleaseCapture();
}
bool ToplevelWindowEventHandler::ScopedWindowResizer::IsMove() const {
« no previous file with comments | « ash/wm/system_gesture_event_filter_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698