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:
Sergei Trofimovich
2019-11-11 22:34:08 +00:00
parent 61d8c12e72
commit b751dbba1e

View 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