diff options
author | Don Stewart <dons@cse.unsw.edu.au> | 2007-03-09 04:06:44 +0100 |
---|---|---|
committer | Don Stewart <dons@cse.unsw.edu.au> | 2007-03-09 04:06:44 +0100 |
commit | c3005e36bb05cee2c1537daa383a06e81d79ca88 (patch) | |
tree | 575df9944b1773d7a7ff88b4abf63af5dbbb69ab | |
parent | b25e07caf6d88611fded494ab4f19b5b87641e2e (diff) | |
download | xmonad-c3005e36bb05cee2c1537daa383a06e81d79ca88.tar.gz xmonad-c3005e36bb05cee2c1537daa383a06e81d79ca88.tar.xz xmonad-c3005e36bb05cee2c1537daa383a06e81d79ca88.zip |
handle MappingNotifyEvent properly, and missing test in MapRequestEvent. firefox still won't take the keyboard though
darcs-hash:20070309030644-9c5c1-1730b17391d547fc94d76bb0bab601578074659c.gz
-rw-r--r-- | Main.hs | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -109,18 +109,17 @@ grabKeys dpy r = forM_ (M.keys keys) $ \(m,s) -> io $ do -- [UnmapNotify] = unmapnotify -- handle :: Event -> W () -handle (MapRequestEvent {window = w}) = manage w +handle (MapRequestEvent {window = w}) = withDisplay $ \dpy -> do + wa <- io $ getWindowAttributes dpy w + when (not (waOverrideRedirect wa)) $ manage w + handle (DestroyWindowEvent {window = w}) = unmanage w handle (UnmapEvent {window = w}) = unmanage w -handle (MappingNotifyEvent {window = w}) = do - trace $ "Got mapping notify event for window: " ++ show w - -{- -, mapping= m@(r,_,_)}) = do +handle e@(MappingNotifyEvent {window = w}) = do + let m = (request e, first_keycode e, count e) io $ refreshKeyboardMapping m - when (r == mappingKeyboard) $ withDisplay $ \d -> grabKeys d w --} + when (request e == mappingKeyboard) $ withDisplay $ flip grabKeys w handle (KeyEvent {event_type = t, state = m, keycode = code}) | t == keyPress = withDisplay $ \dpy -> do |