@@ -184,7 +184,7 @@ anyChildFocused f = do
185-- | Request focus be shifted backward and forward based on tab presses. <Tab>
185-- | Request focus be shifted backward and forward based on tab presses. <Tab>
186-- shifts focus forward and <Shift+Tab> shifts focus backward.
186-- shifts focus forward and <Shift+Tab> shifts focus backward.
187−tabNavigation :: (Reflex t, MonadNodeId m, HasInput t m, HasFocus t m) => m ()
187+tabNavigation :: (Reflex t, HasInput t m, HasFocus t m) => m ()
188tabNavigation = do
188tabNavigation = do
189 fwd <- fmap (const 1) <$> key (V.KChar '\t')
189 fwd <- fmap (const 1) <$> key (V.KChar '\t')
190 back <- fmap (const (-1)) <$> key V.KBackTab
190 back <- fmap (const (-1)) <$> key V.KBackTab
@@ -242,14 +242,14 @@ data Orientation = Orientation_Column
243-- | Create a row-oriented 'axis'
243-- | Create a row-oriented 'axis'
245− :: (Reflex t, MonadNodeId m, MonadFix m, HasLayout t m)
245+ :: (Reflex t, MonadFix m, HasLayout t m)
248row = axis (pure Orientation_Row) flex
248row = axis (pure Orientation_Row) flex
250-- | Create a column-oriented 'axis'
250-- | Create a column-oriented 'axis'
252− :: (Reflex t, MonadNodeId m, MonadFix m, HasLayout t m)
252+ :: (Reflex t, MonadFix m, HasLayout t m)
255col = axis (pure Orientation_Column) flex
255col = axis (pure Orientation_Column) flex
@@ -433,14 +433,15 @@ instance (HasFocusReader t m, Monad m) => HasFocusReader t (Layout t m)
433instance (Monad m, MonadNodeId m, Reflex t, MonadFix m) => HasLayout t (Layout t m) where
433instance (Monad m, MonadNodeId m, Reflex t, MonadFix m) => HasLayout t (Layout t m) where
434 axis o c (Layout x) = Layout $ do
434 axis o c (Layout x) = Layout $ do
435 nodeId <- getNextNodeId
435 nodeId <- getNextNodeId
436+ let dummyParentLayout = LayoutTree (nilRegion, Orientation_Column) mempty
436− (result, forest) <- lift $ local (\t -> fromMaybe (LayoutTree (Region 0 0 0 0, Orientation_Column) mempty) . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
437+ (result, forest) <- lift $ local (\t -> fromMaybe dummyParentLayout . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
437 tellDyn $ singletonLF nodeId <$> (LayoutTree <$> ((,) <$> c <*> o) <*> forest)
438 tellDyn $ singletonLF nodeId <$> (LayoutTree <$> ((,) <$> c <*> o) <*> forest)
438 pure result
439 pure result
439 region c = do
440 region c = do
440 nodeId <- lift getNextNodeId
441 nodeId <- lift getNextNodeId
441 Layout $ tellDyn $ ffor c $ \c' -> singletonLF nodeId $ LayoutTree (c', Orientation_Row) mempty
442 Layout $ tellDyn $ ffor c $ \c' -> singletonLF nodeId $ LayoutTree (c', Orientation_Row) mempty
442 solutions <- Layout ask
443 solutions <- Layout ask
443− pure $ maybe (Region 0 0 0 0) (fst . rootLT) . lookupLF nodeId . childrenLT <$> solutions
444+ pure $ maybe nilRegion (fst . rootLT) . lookupLF nodeId . childrenLT <$> solutions
444 askOrientation = Layout $ asks $ fmap (snd . rootLT)
445 askOrientation = Layout $ asks $ fmap (snd . rootLT)
446instance (MonadFix m, HasFocus t m) => HasFocus t (Layout t m) where
447instance (MonadFix m, HasFocus t m) => HasFocus t (Layout t m) where
@@ -505,7 +506,7 @@ initManager_ = fmap fst . initManager
505-- provided constraint. Returns the 'FocusId' allowing for manual focus
506-- provided constraint. Returns the 'FocusId' allowing for manual focus
506-- management.
507-- management.
508− :: (MonadNodeId m, MonadFix m, Reflex t, HasInput t m, HasFocus t m, HasLayout t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
509+ :: (MonadFix m, Reflex t, HasInput t m, HasFocus t m, HasLayout t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
509 => Dynamic t Constraint
510 => Dynamic t Constraint
511 -> m (FocusId, a)
512 -> m (FocusId, a)
@@ -524,7 +525,7 @@ tile' c w = do
524-- | A widget that is focusable and occupies a layout region based on the
525-- | A widget that is focusable and occupies a layout region based on the
525-- provided constraint.
526-- provided constraint.
527− :: (MonadNodeId m, MonadFix m, Reflex t, HasInput t m, HasFocus t m, HasLayout t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
528+ :: (MonadFix m, Reflex t, HasInput t m, HasFocus t m, HasLayout t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
528 => Dynamic t Constraint
529 => Dynamic t Constraint
@@ -535,7 +536,7 @@ tile c = fmap snd . tile' c
535-- | A widget that is not focusable and occupies a layout region based on the
536-- | A widget that is not focusable and occupies a layout region based on the
536-- provided constraint.
537-- provided constraint.
538− :: (Reflex t, MonadNodeId m, HasLayout t m, HasInput t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
539+ :: (Reflex t, HasLayout t m, HasInput t m, HasImageWriter t m, HasDisplayRegion t m, HasFocusReader t m)
539 => Dynamic t Constraint
540 => Dynamic t Constraint