mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -05:00
core: Ensure passive key grabs are only set up on X11
We don't strictly need it for wayland compositors, yet there are paths where we try to trigger those passive grabs there. Just skip those on the high level code (where "is it x11" decisions are taken) like we do with passive button grabs.
This commit is contained in:
parent
9367cd2d66
commit
835a97a66c
@ -1526,6 +1526,8 @@ meta_window_grab_keys (MetaWindow *window)
|
|||||||
MetaDisplay *display = window->display;
|
MetaDisplay *display = window->display;
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||||
|
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
return;
|
||||||
if (window->all_keys_grabbed)
|
if (window->all_keys_grabbed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1560,7 +1562,7 @@ meta_window_grab_keys (MetaWindow *window)
|
|||||||
void
|
void
|
||||||
meta_window_ungrab_keys (MetaWindow *window)
|
meta_window_ungrab_keys (MetaWindow *window)
|
||||||
{
|
{
|
||||||
if (window->keys_grabbed)
|
if (!meta_is_wayland_compositor () && window->keys_grabbed)
|
||||||
{
|
{
|
||||||
MetaDisplay *display = window->display;
|
MetaDisplay *display = window->display;
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
||||||
@ -1619,7 +1621,11 @@ meta_display_grab_accelerator (MetaDisplay *display,
|
|||||||
return META_KEYBINDING_ACTION_NONE;
|
return META_KEYBINDING_ACTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
meta_change_keygrab (keys, display->x11_display->xroot, TRUE, &resolved_combo);
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
meta_change_keygrab (keys, display->x11_display->xroot,
|
||||||
|
TRUE, &resolved_combo);
|
||||||
|
}
|
||||||
|
|
||||||
grab = g_new0 (MetaKeyGrab, 1);
|
grab = g_new0 (MetaKeyGrab, 1);
|
||||||
grab->action = next_dynamic_keybinding_action ();
|
grab->action = next_dynamic_keybinding_action ();
|
||||||
@ -1665,8 +1671,11 @@ meta_display_ungrab_accelerator (MetaDisplay *display,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
meta_change_keygrab (keys, display->x11_display->xroot,
|
meta_change_keygrab (keys, display->x11_display->xroot,
|
||||||
FALSE, &binding->resolved_combo);
|
FALSE, &binding->resolved_combo);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < binding->resolved_combo.len; i++)
|
for (i = 0; i < binding->resolved_combo.len; i++)
|
||||||
{
|
{
|
||||||
@ -1744,7 +1753,7 @@ meta_window_grab_all_keys (MetaWindow *window,
|
|||||||
guint32 timestamp)
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
Window grabwindow;
|
Window grabwindow;
|
||||||
gboolean retval;
|
gboolean retval = TRUE;
|
||||||
|
|
||||||
if (window->all_keys_grabbed)
|
if (window->all_keys_grabbed)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -1760,6 +1769,8 @@ meta_window_grab_all_keys (MetaWindow *window,
|
|||||||
window->desc);
|
window->desc);
|
||||||
meta_window_focus (window, timestamp);
|
meta_window_focus (window, timestamp);
|
||||||
|
|
||||||
|
if (!meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
grabwindow = meta_window_x11_get_toplevel_xwindow (window);
|
grabwindow = meta_window_x11_get_toplevel_xwindow (window);
|
||||||
|
|
||||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||||
@ -1771,14 +1782,16 @@ meta_window_grab_all_keys (MetaWindow *window,
|
|||||||
window->all_keys_grabbed = TRUE;
|
window->all_keys_grabbed = TRUE;
|
||||||
window->grab_on_frame = window->frame != NULL;
|
window->grab_on_frame = window->frame != NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_window_ungrab_all_keys (MetaWindow *window, guint32 timestamp)
|
meta_window_ungrab_all_keys (MetaWindow *window,
|
||||||
|
guint32 timestamp)
|
||||||
{
|
{
|
||||||
if (window->all_keys_grabbed)
|
if (!meta_is_wayland_compositor () && window->all_keys_grabbed)
|
||||||
{
|
{
|
||||||
ungrab_keyboard (timestamp);
|
ungrab_keyboard (timestamp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user