mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
X.H.Rescreen: Move error handling to rescreenHook
This handles errors in hooks set using `rescreenHook` as well, not just those set using the individual adders/setters. Fixes: 2e3254a9080c ("X.H.Rescreen: Catch exceptions in user-provided hooks in add*Hook")
This commit is contained in:
parent
5680205c72
commit
b454f1e0be
@ -101,21 +101,28 @@ instance Monoid RescreenConfig where
|
||||
-- 'rescreenWorkspacesHook', which has a replace rather than sequence
|
||||
-- semantics), also just once.
|
||||
rescreenHook :: RescreenConfig -> XConfig l -> XConfig l
|
||||
rescreenHook = XC.once $ \c -> c
|
||||
rescreenHook = XC.once hook . catchUserCode
|
||||
where
|
||||
hook c = c
|
||||
{ startupHook = startupHook c <> rescreenStartupHook
|
||||
, handleEventHook = handleEventHook c <> rescreenEventHook }
|
||||
catchUserCode rc@RescreenConfig{..} = rc
|
||||
{ afterRescreenHook = userCodeDef () afterRescreenHook
|
||||
, randrChangeHook = userCodeDef () randrChangeHook
|
||||
, rescreenWorkspacesHook = flip catchX rescreen <$> rescreenWorkspacesHook
|
||||
}
|
||||
|
||||
-- | Shortcut for 'rescreenHook'.
|
||||
addAfterRescreenHook :: X () -> XConfig l -> XConfig l
|
||||
addAfterRescreenHook h = rescreenHook def{ afterRescreenHook = userCodeDef () h }
|
||||
addAfterRescreenHook h = rescreenHook def{ afterRescreenHook = h }
|
||||
|
||||
-- | Shortcut for 'rescreenHook'.
|
||||
addRandrChangeHook :: X () -> XConfig l -> XConfig l
|
||||
addRandrChangeHook h = rescreenHook def{ randrChangeHook = userCodeDef () h }
|
||||
addRandrChangeHook h = rescreenHook def{ randrChangeHook = h }
|
||||
|
||||
-- | Shortcut for 'rescreenHook'.
|
||||
setRescreenWorkspacesHook :: X () -> XConfig l -> XConfig l
|
||||
setRescreenWorkspacesHook h = rescreenHook def{ rescreenWorkspacesHook = pure (catchX h rescreen) }
|
||||
setRescreenWorkspacesHook h = rescreenHook def{ rescreenWorkspacesHook = pure h }
|
||||
|
||||
-- | Startup hook to listen for @RRScreenChangeNotify@ events.
|
||||
rescreenStartupHook :: X ()
|
||||
|
Loading…
x
Reference in New Issue
Block a user