Grab client keys on the client window (#496)

Before this, we grabbed the keys on the frame window. That meant we only got key
events for things that nothing else grabbed directly on the key window.

After this, we grab directly on the client window itself and so we "fight" with
everything else which wants to grab keys. I don't actually know how the winner
is decided... First come, first serve, the rest gets an error?

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2015-10-16 17:30:46 +02:00
parent facf51b8cb
commit ff799a0f5d
2 changed files with 2 additions and 2 deletions

View File

@ -638,7 +638,7 @@ event_handle_key(xcb_key_press_event_t *ev)
/* get keysym ignoring all modifiers */
xcb_keysym_t keysym = keyresolv_get_keysym(ev->detail, 0);
client_t *c;
if((c = client_getbyframewin(ev->event)))
if((c = client_getbywin(ev->event)))
{
luaA_object_push(globalconf.L, c);
event_key_callback(ev, &c->keys, -1, 1, &keysym);

View File

@ -2284,7 +2284,7 @@ luaA_client_keys(lua_State *L)
luaA_key_array_set(L, 1, 2, keys);
luaA_object_emit_signal(L, 1, "property::keys", 0);
xcb_ungrab_key(globalconf.connection, XCB_GRAB_ANY, c->frame_window, XCB_BUTTON_MASK_ANY);
xwindow_grabkeys(c->frame_window, keys);
xwindow_grabkeys(c->window, keys);
}
return luaA_key_array_get(L, 1, keys);