From 2fc212c92a6b4d51c12520109d24f7d69a64d2d3 Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Thu, 24 Jan 2008 02:32:07 +0100 Subject: Add emptyLayout to LayoutClass, a method to be called when a workspace is empty darcs-hash:20080124013207-32816-35328360400d6ee06c81586b9e1cc45413df5a61.gz --- XMonad/Core.hs | 7 ++++++- XMonad/Layout.hs | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'XMonad') diff --git a/XMonad/Core.hs b/XMonad/Core.hs index 877a73a..df9c4b7 100644 --- a/XMonad/Core.hs +++ b/XMonad/Core.hs @@ -218,6 +218,10 @@ class Show (layout a) => LayoutClass layout a where pureLayout :: layout a -> Rectangle -> Stack a -> [(a, Rectangle)] pureLayout _ r s = [(focus s, r)] + -- | 'emptyLayout' is called when there is no window. + emptyLayout :: layout a -> Rectangle -> X ([(a, Rectangle)], Maybe (layout a)) + emptyLayout _ _ = return ([], Nothing) + -- | 'handleMessage' performs message handling for that layout. If -- 'handleMessage' returns Nothing, then the layout did not respond to -- that message and the screen is not refreshed. Otherwise, 'handleMessage' @@ -238,6 +242,7 @@ class Show (layout a) => LayoutClass layout a where instance LayoutClass Layout Window where doLayout (Layout l) r s = fmap (fmap Layout) `fmap` doLayout l r s + emptyLayout (Layout l) r = fmap (fmap Layout) `fmap` emptyLayout l r handleMessage (Layout l) = fmap (fmap Layout) . handleMessage l description (Layout l) = description l @@ -245,7 +250,7 @@ instance Show (Layout a) where show (Layout l) = show l -- | This calls doLayout if there are any windows to be laid out. runLayout :: LayoutClass l a => l a -> Rectangle -> Maybe (Stack a) -> X ([(a, Rectangle)], Maybe (l a)) -runLayout l r = maybe (return ([], Nothing)) (doLayout l r) +runLayout l r = maybe (emptyLayout l r) (doLayout l r) -- | Based on ideas in /An Extensible Dynamically-Typed Hierarchy of Exceptions/, -- Simon Marlow, 2006. Use extensible messages to the handleMessage handler. diff --git a/XMonad/Layout.hs b/XMonad/Layout.hs index 01c0428..981541c 100644 --- a/XMonad/Layout.hs +++ b/XMonad/Layout.hs @@ -54,6 +54,9 @@ instance (LayoutClass l a, LayoutClass r a) => LayoutClass (Choose l r) a where doLayout (SLeft r l) = (fmap (second . fmap $ SLeft r) .) . doLayout l doLayout (SRight l r) = (fmap (second . fmap $ SRight l) .) . doLayout r + emptyLayout (SLeft r l) = (fmap (second . fmap $ SLeft r) .) $ emptyLayout l + emptyLayout (SRight l r) = (fmap (second . fmap $ SRight l) .) $ emptyLayout r + description (SLeft _ l) = description l description (SRight _ r) = description r -- cgit v1.2.3