display: Clean up set_grab_op_cursor

This commit is contained in:
Jasper St. Pierre 2014-04-23 11:06:32 -04:00
parent 98a1573bee
commit af515732b0

View File

@ -1727,44 +1727,53 @@ meta_display_set_grab_op_cursor (MetaDisplay *display,
MetaGrabOp op, MetaGrabOp op,
guint32 timestamp) guint32 timestamp)
{ {
unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 }; /* Set root cursor */
XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits }; {
MetaCursorTracker *tracker = meta_cursor_tracker_get_for_screen (display->screen); MetaCursorTracker *tracker = meta_cursor_tracker_get_for_screen (display->screen);
MetaCursor cursor = meta_cursor_for_grab_op (op); MetaCursor cursor = meta_cursor_for_grab_op (op);
MetaCursorReference *cursor_ref; MetaCursorReference *cursor_ref;
XISetMask (mask.mask, XI_ButtonPress); cursor_ref = meta_cursor_reference_from_theme (cursor);
XISetMask (mask.mask, XI_ButtonRelease); meta_cursor_tracker_set_grab_cursor (tracker, cursor_ref);
XISetMask (mask.mask, XI_Enter); meta_cursor_reference_unref (cursor_ref);
XISetMask (mask.mask, XI_Leave); }
XISetMask (mask.mask, XI_Motion);
meta_error_trap_push (display); /* Take grab */
if (XIGrabDevice (display->xdisplay, {
META_VIRTUAL_CORE_POINTER_ID, unsigned char mask_bits[XIMaskLen (XI_LASTEVENT)] = { 0 };
display->screen->xroot, XIEventMask mask = { XIAllMasterDevices, sizeof (mask_bits), mask_bits };
timestamp,
meta_display_create_x_cursor (display, cursor),
XIGrabModeAsync, XIGrabModeAsync,
False, /* owner_events */
&mask) == Success)
{
display->grab_have_pointer = TRUE;
meta_topic (META_DEBUG_WINDOW_OPS,
"XIGrabDevice() returned GrabSuccess time %u\n",
timestamp);
}
else
{
meta_topic (META_DEBUG_WINDOW_OPS,
"XIGrabDevice() failed time %u\n",
timestamp);
}
meta_error_trap_pop (display);
cursor_ref = meta_cursor_reference_from_theme (cursor); XISetMask (mask.mask, XI_ButtonPress);
meta_cursor_tracker_set_grab_cursor (tracker, cursor_ref); XISetMask (mask.mask, XI_ButtonRelease);
meta_cursor_reference_unref (cursor_ref); XISetMask (mask.mask, XI_Enter);
XISetMask (mask.mask, XI_Leave);
XISetMask (mask.mask, XI_Motion);
MetaCursor cursor = meta_cursor_for_grab_op (op);
meta_error_trap_push (display);
if (XIGrabDevice (display->xdisplay,
META_VIRTUAL_CORE_POINTER_ID,
display->screen->xroot,
timestamp,
meta_display_create_x_cursor (display, cursor),
XIGrabModeAsync, XIGrabModeAsync,
False, /* owner_events */
&mask) == Success)
{
display->grab_have_pointer = TRUE;
meta_topic (META_DEBUG_WINDOW_OPS,
"XIGrabDevice() returned GrabSuccess time %u\n",
timestamp);
}
else
{
meta_topic (META_DEBUG_WINDOW_OPS,
"XIGrabDevice() failed time %u\n",
timestamp);
}
meta_error_trap_pop (display);
}
} }
gboolean gboolean