mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -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
|
-- 'rescreenWorkspacesHook', which has a replace rather than sequence
|
||||||
-- semantics), also just once.
|
-- semantics), also just once.
|
||||||
rescreenHook :: RescreenConfig -> XConfig l -> XConfig l
|
rescreenHook :: RescreenConfig -> XConfig l -> XConfig l
|
||||||
rescreenHook = XC.once $ \c -> c
|
rescreenHook = XC.once hook . catchUserCode
|
||||||
|
where
|
||||||
|
hook c = c
|
||||||
{ startupHook = startupHook c <> rescreenStartupHook
|
{ startupHook = startupHook c <> rescreenStartupHook
|
||||||
, handleEventHook = handleEventHook c <> rescreenEventHook }
|
, handleEventHook = handleEventHook c <> rescreenEventHook }
|
||||||
|
catchUserCode rc@RescreenConfig{..} = rc
|
||||||
|
{ afterRescreenHook = userCodeDef () afterRescreenHook
|
||||||
|
, randrChangeHook = userCodeDef () randrChangeHook
|
||||||
|
, rescreenWorkspacesHook = flip catchX rescreen <$> rescreenWorkspacesHook
|
||||||
|
}
|
||||||
|
|
||||||
-- | Shortcut for 'rescreenHook'.
|
-- | Shortcut for 'rescreenHook'.
|
||||||
addAfterRescreenHook :: X () -> XConfig l -> XConfig l
|
addAfterRescreenHook :: X () -> XConfig l -> XConfig l
|
||||||
addAfterRescreenHook h = rescreenHook def{ afterRescreenHook = userCodeDef () h }
|
addAfterRescreenHook h = rescreenHook def{ afterRescreenHook = h }
|
||||||
|
|
||||||
-- | Shortcut for 'rescreenHook'.
|
-- | Shortcut for 'rescreenHook'.
|
||||||
addRandrChangeHook :: X () -> XConfig l -> XConfig l
|
addRandrChangeHook :: X () -> XConfig l -> XConfig l
|
||||||
addRandrChangeHook h = rescreenHook def{ randrChangeHook = userCodeDef () h }
|
addRandrChangeHook h = rescreenHook def{ randrChangeHook = h }
|
||||||
|
|
||||||
-- | Shortcut for 'rescreenHook'.
|
-- | Shortcut for 'rescreenHook'.
|
||||||
setRescreenWorkspacesHook :: X () -> XConfig l -> XConfig l
|
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.
|
-- | Startup hook to listen for @RRScreenChangeNotify@ events.
|
||||||
rescreenStartupHook :: X ()
|
rescreenStartupHook :: X ()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user