mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
ResizeScreen has been rewritten as a layout modifier
This commit is contained in:
parent
0f0a99e355
commit
18921e16c9
@ -22,11 +22,9 @@ module XMonad.Layout.ResizeScreen
|
|||||||
, ResizeScreen (..)
|
, ResizeScreen (..)
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Arrow (second)
|
|
||||||
import Control.Applicative ((<$>))
|
|
||||||
|
|
||||||
import XMonad
|
import XMonad
|
||||||
import XMonad.Util.XUtils (fi)
|
import XMonad.Util.XUtils (fi)
|
||||||
|
import XMonad.Layout.LayoutModifier
|
||||||
|
|
||||||
-- $usage
|
-- $usage
|
||||||
-- You can use this module by importing it into your
|
-- You can use this module by importing it into your
|
||||||
@ -42,40 +40,24 @@ import XMonad.Util.XUtils (fi)
|
|||||||
--
|
--
|
||||||
-- "XMonad.Doc.Extending#Editing_the_layout_hook"
|
-- "XMonad.Doc.Extending#Editing_the_layout_hook"
|
||||||
|
|
||||||
resizeHorizontal :: Int -> l a -> ResizeScreen l a
|
resizeHorizontal :: Int -> l a -> ModifiedLayout ResizeScreen l a
|
||||||
resizeHorizontal = ResizeScreen H
|
resizeHorizontal i = ModifiedLayout (ResizeScreen H i)
|
||||||
|
|
||||||
resizeVertical :: Int -> l a -> ResizeScreen l a
|
resizeVertical :: Int -> l a -> ModifiedLayout ResizeScreen l a
|
||||||
resizeVertical = ResizeScreen V
|
resizeVertical i = ModifiedLayout (ResizeScreen V i)
|
||||||
|
|
||||||
withNewRectangle :: Rectangle -> l a -> ResizeScreen l a
|
withNewRectangle :: Rectangle -> l a -> ModifiedLayout ResizeScreen l a
|
||||||
withNewRectangle = WithNewScreen
|
withNewRectangle r = ModifiedLayout (WithNewScreen r)
|
||||||
|
|
||||||
data ResizeScreen l a = ResizeScreen ResizeMode Int (l a)
|
data ResizeScreen a = ResizeScreen ResizeMode Int
|
||||||
| WithNewScreen Rectangle (l a)
|
| WithNewScreen Rectangle
|
||||||
deriving (Read, Show)
|
deriving (Read, Show)
|
||||||
data ResizeMode = H | V deriving (Read, Show)
|
data ResizeMode = H | V deriving (Read, Show)
|
||||||
|
|
||||||
instance (LayoutClass l a) => LayoutClass (ResizeScreen l) a where
|
instance LayoutModifier ResizeScreen a where
|
||||||
doLayout m (Rectangle x y w h ) s
|
modifyLayout m l re@(Rectangle x y w h) s
|
||||||
| ResizeScreen H i l <- m = resize (ResizeScreen V i) l (Rectangle (x + fi i) y (w - fi i) h)
|
| ResizeScreen H i <- m = resize (Rectangle (x + fi i) y (w - fi i) h)
|
||||||
| ResizeScreen V i l <- m = resize (ResizeScreen H i) l (Rectangle x (y + fi i) w (h - fi i))
|
| ResizeScreen V i <- m = resize (Rectangle x (y + fi i) w (h - fi i))
|
||||||
| WithNewScreen r l <- m = resize (WithNewScreen r) l r
|
| WithNewScreen r <- m = resize r
|
||||||
| otherwise = return ([],Nothing)
|
| otherwise = resize re
|
||||||
where resize t l' nr = second (fmap t) <$> doLayout l' nr s
|
where resize nr = doLayout l nr s
|
||||||
|
|
||||||
handleMessage rs m
|
|
||||||
| ResizeScreen t i l <- rs = go (ResizeScreen t i) l
|
|
||||||
| WithNewScreen r l <- rs = go (WithNewScreen r) l
|
|
||||||
| otherwise = return Nothing
|
|
||||||
where go tp lay = do ml' <- handleMessage lay m
|
|
||||||
return (tp `fmap` ml')
|
|
||||||
|
|
||||||
emptyLayout rs re
|
|
||||||
| ResizeScreen t i l <- rs = go (ResizeScreen t i) l
|
|
||||||
| WithNewScreen r l <- rs = go (WithNewScreen r) l
|
|
||||||
| otherwise = return ([],Nothing)
|
|
||||||
where go tp lay = do (wrs,ml) <- emptyLayout lay re
|
|
||||||
return (wrs, tp `fmap` ml)
|
|
||||||
|
|
||||||
description _ = []
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user