| Index: ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
|
| diff --git a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
|
| index cf259d3598a309f17f3158631290344da345568f..de39a04867757a01fd19152f4ff88ca869212c50 100644
|
| --- a/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
|
| +++ b/ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc
|
| @@ -21,6 +21,7 @@
|
| #include "ui/events/keycodes/keyboard_code_conversion_x.h"
|
| #include "ui/events/platform/scoped_event_dispatcher.h"
|
| #include "ui/events/platform/x11/x11_event_source.h"
|
| +#include "ui/views/widget/desktop_aura/x11_pointer_grab.h"
|
|
|
| namespace views {
|
|
|
| @@ -186,15 +187,8 @@ bool X11WholeScreenMoveLoop::RunMoveLoop(aura::Window* source,
|
| }
|
|
|
| void X11WholeScreenMoveLoop::UpdateCursor(gfx::NativeCursor cursor) {
|
| - if (in_move_loop_) {
|
| - // We cannot call GrabPointer() because we do not want to change the
|
| - // "owner_events" property of the active pointer grab.
|
| - XChangeActivePointerGrab(
|
| - gfx::GetXDisplay(),
|
| - ButtonPressMask | ButtonReleaseMask | PointerMotionMask,
|
| - cursor.platform(),
|
| - CurrentTime);
|
| - }
|
| + if (in_move_loop_)
|
| + ChangeActivePointerGrabCursor(cursor.platform());
|
| }
|
|
|
| void X11WholeScreenMoveLoop::EndMoveLoop() {
|
| @@ -215,12 +209,12 @@ void X11WholeScreenMoveLoop::EndMoveLoop() {
|
| // the chrome process.
|
|
|
| // Ungrab before we let go of the window.
|
| - XDisplay* display = gfx::GetXDisplay();
|
| if (grabbed_pointer_)
|
| - XUngrabPointer(display, CurrentTime);
|
| + UngrabPointer();
|
| else
|
| UpdateCursor(initial_cursor_);
|
|
|
| + XDisplay* display = gfx::GetXDisplay();
|
| unsigned int esc_keycode = XKeysymToKeycode(display, XK_Escape);
|
| for (size_t i = 0; i < arraysize(kModifiersMasks); ++i) {
|
| XUngrabKey(display, esc_keycode, kModifiersMasks[i], grab_input_window_);
|
| @@ -242,16 +236,7 @@ bool X11WholeScreenMoveLoop::GrabPointer(gfx::NativeCursor cursor) {
|
|
|
| // Pass "owner_events" as false so that X sends all mouse events to
|
| // |grab_input_window_|.
|
| - int ret = XGrabPointer(
|
| - display,
|
| - grab_input_window_,
|
| - False, // owner_events
|
| - ButtonPressMask | ButtonReleaseMask | PointerMotionMask,
|
| - GrabModeAsync,
|
| - GrabModeAsync,
|
| - None,
|
| - cursor.platform(),
|
| - CurrentTime);
|
| + int ret = ::views::GrabPointer(grab_input_window_, false, cursor.platform());
|
| if (ret != GrabSuccess) {
|
| DLOG(ERROR) << "Grabbing pointer for dragging failed: "
|
| << ui::GetX11ErrorString(display, ret);
|
|
|