mirror of
https://github.com/brl/mutter.git
synced 2025-05-29 10:00:03 +00:00
window: Move grab op sync handling code out
This removes some duplicate event type checks, and will make the code cleaner in the future when we want to make the grab_op_event handler take an XIDeviceEvent directly. Based on a patch by Owen Taylor <otaylor@fishsoup.net> https://bugzilla.gnome.org/show_bug.cgi?id=688779
This commit is contained in:
parent
6b31bd402a
commit
881d256ce0
@ -432,6 +432,7 @@ int meta_resize_gravity_from_grab_op (MetaGrabOp op);
|
|||||||
|
|
||||||
gboolean meta_grab_op_is_moving (MetaGrabOp op);
|
gboolean meta_grab_op_is_moving (MetaGrabOp op);
|
||||||
gboolean meta_grab_op_is_resizing (MetaGrabOp op);
|
gboolean meta_grab_op_is_resizing (MetaGrabOp op);
|
||||||
|
gboolean meta_grab_op_is_mouse (MetaGrabOp op);
|
||||||
|
|
||||||
void meta_display_devirtualize_modifiers (MetaDisplay *display,
|
void meta_display_devirtualize_modifiers (MetaDisplay *display,
|
||||||
MetaVirtualModifier modifiers,
|
MetaVirtualModifier modifiers,
|
||||||
|
@ -1295,8 +1295,8 @@ grab_op_is_mouse_only (MetaGrabOp op)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
gboolean
|
||||||
grab_op_is_mouse (MetaGrabOp op)
|
meta_grab_op_is_mouse (MetaGrabOp op)
|
||||||
{
|
{
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
@ -1922,12 +1922,11 @@ event_callback (XEvent *event,
|
|||||||
event->type == (display->xsync_event_base + XSyncAlarmNotify) &&
|
event->type == (display->xsync_event_base + XSyncAlarmNotify) &&
|
||||||
((XSyncAlarmNotifyEvent*)event)->alarm == display->grab_sync_request_alarm)
|
((XSyncAlarmNotifyEvent*)event)->alarm == display->grab_sync_request_alarm)
|
||||||
{
|
{
|
||||||
|
XSyncValue value = ((XSyncAlarmNotifyEvent*)event)->counter_value;
|
||||||
|
guint64 new_counter_value;
|
||||||
|
new_counter_value = XSyncValueLow32 (value) + ((gint64)XSyncValueHigh32 (value) << 32);
|
||||||
|
meta_window_update_sync_request_counter (display->grab_window, new_counter_value);
|
||||||
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
filter_out_event = TRUE; /* GTK doesn't want to see this really */
|
||||||
|
|
||||||
if (display->grab_op != META_GRAB_OP_NONE &&
|
|
||||||
display->grab_window != NULL &&
|
|
||||||
grab_op_is_mouse (display->grab_op))
|
|
||||||
meta_window_handle_mouse_grab_op_event (display->grab_window, event);
|
|
||||||
}
|
}
|
||||||
#endif /* HAVE_XSYNC */
|
#endif /* HAVE_XSYNC */
|
||||||
|
|
||||||
@ -2026,7 +2025,7 @@ event_callback (XEvent *event,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if ((window &&
|
if ((window &&
|
||||||
grab_op_is_mouse (display->grab_op) &&
|
meta_grab_op_is_mouse (display->grab_op) &&
|
||||||
display->grab_button != (int) event->xbutton.button &&
|
display->grab_button != (int) event->xbutton.button &&
|
||||||
display->grab_window == window) ||
|
display->grab_window == window) ||
|
||||||
grab_op_is_keyboard (display->grab_op))
|
grab_op_is_keyboard (display->grab_op))
|
||||||
@ -2221,7 +2220,7 @@ event_callback (XEvent *event,
|
|||||||
display->overlay_key_only_pressed = FALSE;
|
display->overlay_key_only_pressed = FALSE;
|
||||||
|
|
||||||
if (display->grab_window == window &&
|
if (display->grab_window == window &&
|
||||||
grab_op_is_mouse (display->grab_op))
|
meta_grab_op_is_mouse (display->grab_op))
|
||||||
meta_window_handle_mouse_grab_op_event (window, event);
|
meta_window_handle_mouse_grab_op_event (window, event);
|
||||||
break;
|
break;
|
||||||
case MotionNotify:
|
case MotionNotify:
|
||||||
@ -2229,7 +2228,7 @@ event_callback (XEvent *event,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (display->grab_window == window &&
|
if (display->grab_window == window &&
|
||||||
grab_op_is_mouse (display->grab_op))
|
meta_grab_op_is_mouse (display->grab_op))
|
||||||
meta_window_handle_mouse_grab_op_event (window, event);
|
meta_window_handle_mouse_grab_op_event (window, event);
|
||||||
break;
|
break;
|
||||||
case EnterNotify:
|
case EnterNotify:
|
||||||
|
@ -580,6 +580,11 @@ void meta_window_shove_titlebar_onscreen (MetaWindow *window);
|
|||||||
void meta_window_set_gravity (MetaWindow *window,
|
void meta_window_set_gravity (MetaWindow *window,
|
||||||
int gravity);
|
int gravity);
|
||||||
|
|
||||||
|
#ifdef HAVE_XSYNC
|
||||||
|
void meta_window_update_sync_request_counter (MetaWindow *window,
|
||||||
|
guint64 new_counter_value);
|
||||||
|
#endif /* HAVE_XSYNC */
|
||||||
|
|
||||||
void meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
void meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||||
XEvent *event);
|
XEvent *event);
|
||||||
|
|
||||||
|
@ -9225,13 +9225,16 @@ update_tile_mode (MetaWindow *window)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
|
||||||
XEvent *event)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_XSYNC
|
#ifdef HAVE_XSYNC
|
||||||
if (event->type == (window->display->xsync_event_base + XSyncAlarmNotify))
|
void
|
||||||
|
meta_window_update_sync_request_counter (MetaWindow *window,
|
||||||
|
guint64 new_counter_value)
|
||||||
|
{
|
||||||
|
if (window->display->grab_op != META_GRAB_OP_NONE &&
|
||||||
|
window == window->display->grab_window &&
|
||||||
|
meta_grab_op_is_mouse (window->display->grab_op))
|
||||||
{
|
{
|
||||||
|
|
||||||
meta_topic (META_DEBUG_RESIZING,
|
meta_topic (META_DEBUG_RESIZING,
|
||||||
"Alarm event received last motion x = %d y = %d\n",
|
"Alarm event received last motion x = %d y = %d\n",
|
||||||
window->display->grab_latest_motion_x,
|
window->display->grab_latest_motion_x,
|
||||||
@ -9276,8 +9279,13 @@ meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif /* HAVE_XSYNC */
|
#endif /* HAVE_XSYNC */
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_window_handle_mouse_grab_op_event (MetaWindow *window,
|
||||||
|
XEvent *event)
|
||||||
|
{
|
||||||
switch (event->type)
|
switch (event->type)
|
||||||
{
|
{
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user