vanadium/xmonad: return Nothing if the layout is not changed

This commit is contained in:
Primrose 2026-01-07 13:32:48 +01:00
parent 24775459ed
commit 040afef280
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
2 changed files with 8 additions and 6 deletions

View file

@ -23,8 +23,10 @@ instance LayoutClass SetMasterNTall a where
let ws' = W.Workspace t (unSetMasterNTall l) s let ws' = W.Workspace t (unSetMasterNTall l) s
in (fmap . fmap . fmap) SetMasterNTall . runLayout ws' in (fmap . fmap . fmap) SetMasterNTall . runLayout ws'
handleMessage (SetMasterNTall l@(ResizableTall _n0 d f s)) mess handleMessage (SetMasterNTall l@(ResizableTall n0 d f s)) mess
| Just (SetMasterN n) <- fromMessage mess = pure $ Just $ SetMasterNTall $ ResizableTall n d f s | Just (SetMasterN n) <- fromMessage mess = pure $
if n0 /= n then Just $ SetMasterNTall $ ResizableTall n d f s
else Nothing
| otherwise = (fmap . fmap) SetMasterNTall . handleMessage l $ mess | otherwise = (fmap . fmap) SetMasterNTall . handleMessage l $ mess
description (SetMasterNTall l) = description l description (SetMasterNTall l) = description l

View file

@ -210,10 +210,10 @@ setMasterNEventHandleHook ev =
let adjustMasterCount :: X () let adjustMasterCount :: X ()
adjustMasterCount = do adjustMasterCount = do
count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset count <- gets $ length . W.integrate' . W.stack . W.workspace . W.current . windowset
if count <= 3 then sendMessage (SetMasterN 1) if count >= 7 then sendMessage (SetMasterN 4)
else if count <= 5 then sendMessage (SetMasterN 2) else if count >= 5 then sendMessage (SetMasterN 3)
else if count <= 7 then sendMessage (SetMasterN 3) else if count >= 3 then sendMessage (SetMasterN 2)
else pure () else sendMessage (SetMasterN 1)
in do in do
case ev of case ev of
MapRequestEvent{} -> adjustMasterCount MapRequestEvent{} -> adjustMasterCount