mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
events: Clean up event replay code
This commit is contained in:
parent
a7ea54bd7d
commit
d9b72b0f43
@ -1931,6 +1931,7 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
ClutterModifierType grab_mask;
|
ClutterModifierType grab_mask;
|
||||||
gboolean unmodified;
|
gboolean unmodified;
|
||||||
gboolean fully_modified;
|
gboolean fully_modified;
|
||||||
|
gboolean handled = FALSE;
|
||||||
|
|
||||||
grab_mask = display->window_grab_modifiers;
|
grab_mask = display->window_grab_modifiers;
|
||||||
if (g_getenv ("MUTTER_DEBUG_BUTTON_GRABS"))
|
if (g_getenv ("MUTTER_DEBUG_BUTTON_GRABS"))
|
||||||
@ -1985,18 +1986,7 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
*/
|
*/
|
||||||
display->allow_terminal_deactivation = TRUE;
|
display->allow_terminal_deactivation = TRUE;
|
||||||
|
|
||||||
meta_verbose ("Allowing events time %u\n",
|
/* Don't handle the event so it's sent back to clients. */
|
||||||
(unsigned int)event->button.time);
|
|
||||||
|
|
||||||
{
|
|
||||||
MetaBackend *backend = meta_get_backend ();
|
|
||||||
if (META_IS_BACKEND_X11 (backend))
|
|
||||||
{
|
|
||||||
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
|
|
||||||
XIAllowEvents (xdisplay, clutter_input_device_get_device_id (event->button.device),
|
|
||||||
XIReplayDevice, event->button.time);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_resize ())
|
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_resize ())
|
||||||
{
|
{
|
||||||
@ -2046,7 +2036,7 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
event->button.x,
|
event->button.x,
|
||||||
event->button.y);
|
event->button.y);
|
||||||
}
|
}
|
||||||
bypass_wayland = TRUE;
|
handled = TRUE;
|
||||||
}
|
}
|
||||||
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_menu ())
|
else if (fully_modified && (int) event->button.button == meta_prefs_get_mouse_button_menu ())
|
||||||
{
|
{
|
||||||
@ -2057,7 +2047,7 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
event->button.y,
|
event->button.y,
|
||||||
event->button.button,
|
event->button.button,
|
||||||
event->any.time);
|
event->any.time);
|
||||||
bypass_wayland = TRUE;
|
handled = TRUE;
|
||||||
}
|
}
|
||||||
else if (fully_modified && (int) event->button.button == 1)
|
else if (fully_modified && (int) event->button.button == 1)
|
||||||
{
|
{
|
||||||
@ -2075,8 +2065,31 @@ meta_display_handle_event (MetaDisplay *display,
|
|||||||
event->button.x,
|
event->button.x,
|
||||||
event->button.y);
|
event->button.y);
|
||||||
}
|
}
|
||||||
|
handled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Under X11, we have a Sync grab and in order to send it back to
|
||||||
|
* clients, we have to explicitly replay it.
|
||||||
|
*
|
||||||
|
* Under Wayland, we retrieve all events and we have to make sure
|
||||||
|
* to filter them out from Wayland clients.
|
||||||
|
*/
|
||||||
|
if (handled)
|
||||||
|
{
|
||||||
bypass_wayland = TRUE;
|
bypass_wayland = TRUE;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MetaBackend *backend = meta_get_backend ();
|
||||||
|
if (META_IS_BACKEND_X11 (backend))
|
||||||
|
{
|
||||||
|
Display *xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
|
||||||
|
meta_verbose ("Allowing events time %u\n",
|
||||||
|
(unsigned int)event->button.time);
|
||||||
|
XIAllowEvents (xdisplay, clutter_event_get_device_id (event),
|
||||||
|
XIReplayDevice, event->button.time);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
Loading…
Reference in New Issue
Block a user