mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-08-01 12:41:52 -07:00
X.A.EasyMotion: consistent indentation, hlint nits
This commit is contained in:
@@ -240,16 +240,17 @@ bar f th r = Rectangle { rect_width = rect_width r
|
||||
, rect_height = fi th
|
||||
, rect_x = rect_x r
|
||||
, rect_y = rect_y r + round (f' * (fi (rect_height r) - fi th)) }
|
||||
where
|
||||
-- clamp f in [0,1] as other values will appear to lock up xmonad as the overlay will be
|
||||
-- displayed off-screen
|
||||
where f' = min 0.0 $ max f 1.0
|
||||
f' = min 0.0 $ max f 1.0
|
||||
|
||||
-- | Handles overlay display and window selection. Called after config has been sanitised.
|
||||
handleSelectWindow :: EasyMotionConfig -> X (Maybe Window)
|
||||
handleSelectWindow EMConf { sKeys = AnyKeys [] } = return Nothing
|
||||
handleSelectWindow c = do
|
||||
f <- initXMF $ font c
|
||||
th <- (\(asc, dsc) -> asc + dsc + 2) <$> (textExtentsXMF f (concatMap keysymToString (allKeys . sKeys $ c)))
|
||||
th <- (\(asc, dsc) -> asc + dsc + 2) <$> textExtentsXMF f (concatMap keysymToString (allKeys . sKeys $ c))
|
||||
XConf { theRoot = rw, display = dpy } <- ask
|
||||
XState { mapped = mappedWins, windowset = ws } <- get
|
||||
-- build overlays depending on key configuration
|
||||
@@ -269,11 +270,11 @@ handleSelectWindow c = do
|
||||
screenById :: ScreenId -> Maybe (W.Screen WorkspaceId (Layout Window) Window ScreenId ScreenDetail)
|
||||
screenById sid = L.find ((== sid) . screen) (W.current ws : W.visible ws)
|
||||
visibleWindowsOnScreen :: ScreenId -> [Window]
|
||||
visibleWindowsOnScreen sid = L.filter (`elem` (toList mappedWins)) $ W.integrate' $ (screenById sid) >>= W.stack . W.workspace
|
||||
visibleWindowsOnScreen sid = L.filter (`elem` toList mappedWins) $ W.integrate' $ screenById sid >>= W.stack . W.workspace
|
||||
sortedOverlayWindows :: ScreenId -> X [OverlayWindow]
|
||||
sortedOverlayWindows sid = sortOverlayWindows <$> (buildOverlayWindows dpy th $ visibleWindowsOnScreen sid)
|
||||
sortedOverlayWindows sid = sortOverlayWindows <$> buildOverlayWindows dpy th (visibleWindowsOnScreen sid)
|
||||
status <- io $ grabKeyboard dpy rw True grabModeAsync grabModeAsync currentTime
|
||||
if (status == grabSuccess)
|
||||
if status == grabSuccess
|
||||
then do
|
||||
resultWin <- handleKeyboard dpy (displayOverlay f) (cancelKey c) overlays []
|
||||
io $ ungrabKeyboard dpy currentTime
|
||||
@@ -284,7 +285,7 @@ handleSelectWindow c = do
|
||||
-- focus the selected window
|
||||
Selected o -> return . Just . win . overlayWin $ o
|
||||
-- return focus correctly
|
||||
_ -> whenJust (W.peek ws :: Maybe Window) (windows . W.focusWindow) >> return Nothing
|
||||
_ -> whenJust (W.peek ws) (windows . W.focusWindow) >> return Nothing
|
||||
else releaseXMF f >> return Nothing
|
||||
where
|
||||
allKeys :: ChordKeys -> [KeySym]
|
||||
@@ -295,10 +296,10 @@ handleSelectWindow c = do
|
||||
buildOverlays ks = appendChords (maxChordLen c) ks
|
||||
|
||||
buildOverlayWindows :: Display -> Position -> [Window] -> X [OverlayWindow]
|
||||
buildOverlayWindows dpy th ws = sequence $ (buildOverlayWin dpy th) <$> ws
|
||||
buildOverlayWindows dpy th ws = sequence $ buildOverlayWin dpy th <$> ws
|
||||
|
||||
sortOverlayWindows :: [OverlayWindow] -> [OverlayWindow]
|
||||
sortOverlayWindows = (sortOn ((wa_x &&& wa_y) . attrs))
|
||||
sortOverlayWindows = sortOn ((wa_x &&& wa_y) . attrs)
|
||||
|
||||
makeRect :: WindowAttributes -> Rectangle
|
||||
makeRect wa = Rectangle (fi (wa_x wa)) (fi (wa_y wa)) (fi (wa_width wa)) (fi (wa_height wa))
|
||||
@@ -347,8 +348,9 @@ appendChords maxUserSelectedLen ks overlayWins =
|
||||
-- | A three-state result for handling user-initiated selection cancellation, successful selection,
|
||||
-- or backspace.
|
||||
data HandleResult = Exit | Selected Overlay | Backspace
|
||||
|
||||
-- | Handle key press events for window selection.
|
||||
handleKeyboard :: Display -> (Overlay -> X()) -> KeySym -> [Overlay] -> [Overlay] -> X (HandleResult)
|
||||
handleKeyboard :: Display -> (Overlay -> X()) -> KeySym -> [Overlay] -> [Overlay] -> X HandleResult
|
||||
handleKeyboard _ _ _ [] _ = return Exit
|
||||
handleKeyboard dpy drawFn cancel selected deselected = do
|
||||
redraw
|
||||
|
Reference in New Issue
Block a user