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

Unified Diff: ui/views/widget/desktop_aura/x11_whole_screen_move_loop.cc

Issue 821803002: Use XGrabPointer instead of XChangeActivatePointerGrab() to change the cursor during a pointer grab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_capture
Patch Set: Created 5 years, 11 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_aura/x11_pointer_grab.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « ui/views/widget/desktop_aura/x11_pointer_grab.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698