on develop help sign in
layout: use default values in place of partial patterns
f51b165Ali Abrar
src/Reflex/Vty/Widget/Layout.hs+3−2
@@ -12,6 +12,7 @@ import Control.Monad.Reader
12import Data.List (mapAccumL)
12import Data.List (mapAccumL)
13import Data.Map.Ordered (OMap)
13import Data.Map.Ordered (OMap)
14import qualified Data.Map.Ordered as OMap
14import qualified Data.Map.Ordered as OMap
15+import Data.Maybe (fromMaybe)
15import Data.Ratio ((%))
16import Data.Ratio ((%))
16import Data.Semigroup (First(..))
17import Data.Semigroup (First(..))
17import Data.Set.Ordered (OSet)
18import Data.Set.Ordered (OSet)
@@ -395,14 +396,14 @@ instance (HasFocus t m, Monad m) => HasFocus t (Layout t m)
395instance (Monad m, MonadNodeId m, Reflex t, MonadFix m) => MonadLayout t (Layout t m) where
396instance (Monad m, MonadNodeId m, Reflex t, MonadFix m) => MonadLayout t (Layout t m) where
396 axis o c (Layout x) = Layout $ do
397 axis o c (Layout x) = Layout $ do
397 nodeId <- getNextNodeId
398 nodeId <- getNextNodeId
398− (result, forest) <- lift $ local (\t -> (\(Just a) -> a) . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
399+ (result, forest) <- lift $ local (\t -> fromMaybe (LayoutTree (Region 0 0 0 0, Orientation_Column) mempty) . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
399 tellDyn $ singletonLF nodeId <$> (LayoutTree <$> ((,) <$> c <*> o) <*> forest)
400 tellDyn $ singletonLF nodeId <$> (LayoutTree <$> ((,) <$> c <*> o) <*> forest)
400 pure result
401 pure result
401 region c = do
402 region c = do
402 nodeId <- lift getNextNodeId
403 nodeId <- lift getNextNodeId
403 Layout $ tellDyn $ ffor c $ \c' -> singletonLF nodeId $ LayoutTree (c', Orientation_Row) mempty
404 Layout $ tellDyn $ ffor c $ \c' -> singletonLF nodeId $ LayoutTree (c', Orientation_Row) mempty
404 solutions <- Layout ask
405 solutions <- Layout ask
405− pure $ maybe (error "region: could not find layout solution") (fst . rootLT) . lookupLF nodeId . childrenLT <$> solutions
406+ pure $ maybe (Region 0 0 0 0) (fst . rootLT) . lookupLF nodeId . childrenLT <$> solutions
406 askOrientation = Layout $ asks $ fmap (snd . rootLT)
407 askOrientation = Layout $ asks $ fmap (snd . rootLT)
407
408
408instance (MonadFix m, MonadFocus t m) => MonadFocus t (Layout t m) where
409instance (MonadFix m, MonadFocus t m) => MonadFocus t (Layout t m) where