diff options
author | Michael Cardell Widerkrantz <mc@hack.org> | 2011-03-18 19:04:04 +0100 |
---|---|---|
committer | Michael Cardell Widerkrantz <mc@hack.org> | 2011-03-20 15:15:05 +0100 |
commit | 45f5e57d3d95b9b1ea5d5e043cac86f03f197e1a (patch) | |
tree | d8c14aed3635260a86c09532481a96d17af5ab64 /mcwm.c | |
parent | 979d3f738ba1ae16d37a940ef6dd7dd3e0fd1dc2 (diff) | |
download | mcwm-45f5e57d3d95b9b1ea5d5e043cac86f03f197e1a.zip |
Handle mapping notify and regrab of keys. When implementing this we
leaked memory. Noticed that we need to use special free() function for
keysyms.
Diffstat (limited to 'mcwm.c')
-rw-r--r-- | mcwm.c | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -1008,7 +1008,7 @@ int setupkeys(void) /* Couldn't set up keys! */ /* Get rid of key symbols. */ - free(keysyms); + xcb_key_symbols_free(keysyms); return -1; } @@ -1042,13 +1042,12 @@ int setupkeys(void) } } /* for */ - /* Need this to take effect NOW! */ xcb_flush(conn); /* Get rid of the key symbols table. */ - free(keysyms); - + xcb_key_symbols_free(keysyms); + return 0; } @@ -3048,6 +3047,20 @@ void events(void) } break; + case XCB_MAPPING_NOTIFY: + /* + * XXX Gah! We get a new notify message for *every* key! + * We want to know when the entire keyboard is finished. + */ + + /* Forget old key bindings. */ + xcb_ungrab_key(conn, XCB_GRAB_ANY, screen->root, XCB_MOD_MASK_ANY); + + /* Use the new ones. */ + setupkeys(); + + break; + case XCB_UNMAP_NOTIFY: { xcb_unmap_notify_event_t *e = |