key: move grabbing code to window

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2009-08-31 13:54:36 +02:00
parent 8969bb181a
commit 5daab0fb47
5 changed files with 32 additions and 31 deletions

30
key.c
View file

@ -32,36 +32,6 @@
#include "common/xutil.h"
#include "common/luaobject.h"
/** Grab key on a window.
* \param win The window.
* \param k The key.
*/
static void
window_grabkey(xcb_window_t win, keyb_t *k)
{
if(k->keycode)
xcb_grab_key(globalconf.connection, true, win,
k->modifiers, k->keycode, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
else if(k->keysym)
{
xcb_keycode_t *keycodes = xcb_key_symbols_get_keycode(globalconf.keysyms, k->keysym);
if(keycodes)
{
for(xcb_keycode_t *kc = keycodes; *kc; kc++)
xcb_grab_key(globalconf.connection, true, win,
k->modifiers, *kc, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
p_delete(&keycodes);
}
}
}
void
window_grabkeys(xcb_window_t win, key_array_t *keys)
{
foreach(k, *keys)
window_grabkey(win, *k);
}
/** XCB equivalent of XLookupString which translate the keycode given
* by PressEvent to a KeySym and a string
* \todo use XKB!

1
key.h
View file

@ -47,7 +47,6 @@ xcb_keysym_t key_getkeysym(xcb_keycode_t, uint16_t);
void luaA_key_array_set(lua_State *, int, int, key_array_t *);
int luaA_key_array_get(lua_State *, int, key_array_t *);
void window_grabkeys(xcb_window_t, key_array_t *);
int luaA_pushmodifiers(lua_State *, uint16_t);
uint16_t luaA_tomodifiers(lua_State *L, int ud);

1
root.c
View file

@ -25,6 +25,7 @@
#include "button.h"
#include "wibox.h"
#include "luaa.h"
#include "window.h"
#include "common/xcursor.h"
#include "common/tokenize.h"
#include "common/xutil.h"

View file

@ -109,6 +109,36 @@ window_buttons_grab(xcb_window_t win, button_array_t *buttons)
(*b)->button, (*b)->modifiers);
}
/** Grab key on a window.
* \param win The window.
* \param k The key.
*/
static void
window_grabkey(xcb_window_t win, keyb_t *k)
{
if(k->keycode)
xcb_grab_key(globalconf.connection, true, win,
k->modifiers, k->keycode, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
else if(k->keysym)
{
xcb_keycode_t *keycodes = xcb_key_symbols_get_keycode(globalconf.keysyms, k->keysym);
if(keycodes)
{
for(xcb_keycode_t *kc = keycodes; *kc; kc++)
xcb_grab_key(globalconf.connection, true, win,
k->modifiers, *kc, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
p_delete(&keycodes);
}
}
}
void
window_grabkeys(xcb_window_t win, key_array_t *keys)
{
foreach(k, *keys)
window_grabkey(win, *k);
}
/** Get the opacity of a window.
* \param win The window.
* \return The opacity, between 0 and 1 or -1 or no opacity set.

View file

@ -33,6 +33,7 @@ double window_opacity_get(xcb_window_t);
double window_opacity_get_from_reply(xcb_get_property_reply_t *);
void window_opacity_set(xcb_window_t, double);
void window_grabbuttons(xcb_window_t, xcb_window_t, button_array_t *);
void window_grabkeys(xcb_window_t, key_array_t *);
void window_takefocus(xcb_window_t);
void window_set_cursor(xcb_window_t, xcb_cursor_t);