mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
x11-wm/xmonad: add missing xmonad-0.14-check-repeat.patch
Reported-by: Toralf Förster Closes: https://bugs.gentoo.org/699810 Package-Manager: Portage-2.3.79, Repoman-2.3.18 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
This commit is contained in:
56
x11-wm/xmonad/files/xmonad-0.14-check-repeat.patch
Normal file
56
x11-wm/xmonad/files/xmonad-0.14-check-repeat.patch
Normal file
@@ -0,0 +1,56 @@
|
||||
diff --git a/src/XMonad/Core.hs b/src/XMonad/Core.hs
|
||||
index c79b992..29c7f77 100644
|
||||
--- a/src/XMonad/Core.hs
|
||||
+++ b/src/XMonad/Core.hs
|
||||
@@ -68,6 +68,7 @@ data XState = XState
|
||||
, waitingUnmap :: !(M.Map Window Int) -- ^ the number of expected UnmapEvents
|
||||
, dragging :: !(Maybe (Position -> Position -> X (), X ()))
|
||||
, numberlockMask :: !KeyMask -- ^ The numlock modifier
|
||||
+ , keyPressed :: !KeyCode -- ^ keycode of the key being pressed if any
|
||||
, extensibleState :: !(M.Map String (Either String StateExtension))
|
||||
-- ^ stores custom state information.
|
||||
--
|
||||
diff --git a/src/XMonad/Main.hs b/src/XMonad/Main.hs
|
||||
index 3b6ace1..bdcab3a 100644
|
||||
--- a/src/XMonad/Main.hs
|
||||
+++ b/src/XMonad/Main.hs
|
||||
@@ -219,6 +219,7 @@ launch initxmc = do
|
||||
, mapped = S.empty
|
||||
, waitingUnmap = M.empty
|
||||
, dragging = Nothing
|
||||
+ , keyPressed = 0
|
||||
, extensibleState = M.empty
|
||||
}
|
||||
|
||||
@@ -291,10 +292,15 @@ handle :: Event -> X ()
|
||||
-- run window manager command
|
||||
handle (KeyEvent {ev_event_type = t, ev_state = m, ev_keycode = code})
|
||||
| t == keyPress = withDisplay $ \dpy -> do
|
||||
- s <- io $ keycodeToKeysym dpy code 0
|
||||
- mClean <- cleanMask m
|
||||
- ks <- asks keyActions
|
||||
- userCodeDef () $ whenJust (M.lookup (mClean, s) ks) id
|
||||
+ kp <- gets keyPressed
|
||||
+ if kp /= code then do
|
||||
+ modify $ \s -> s { keyPressed = code }
|
||||
+ s <- io $ keycodeToKeysym dpy code 0
|
||||
+ mClean <- cleanMask m
|
||||
+ ks <- asks keyActions
|
||||
+ userCodeDef () $ whenJust (M.lookup (mClean, s) ks) id
|
||||
+ else return ()
|
||||
+ | t == keyRelease = modify $ \s -> s { keyPressed = 0 }
|
||||
|
||||
-- manage a new window
|
||||
handle (MapRequestEvent {ev_window = w}) = withDisplay $ \dpy -> do
|
||||
diff --git a/src/XMonad/Operations.hs b/src/XMonad/Operations.hs
|
||||
index aa44dcd..747cbf7 100644
|
||||
--- a/src/XMonad/Operations.hs
|
||||
+++ b/src/XMonad/Operations.hs
|
||||
@@ -482,6 +482,7 @@ readStateFile xmc = do
|
||||
, mapped = S.empty
|
||||
, waitingUnmap = M.empty
|
||||
, dragging = Nothing
|
||||
+ , keyPressed = 0
|
||||
, extensibleState = extState
|
||||
}
|
||||
where
|
||||
Reference in New Issue
Block a user