@@ -184,7 +184,7 @@ anyChildFocused f = do
184184
185185-- | Request focus be shifted backward and forward based on tab presses. <Tab>
186186-- 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 ()
188188tabNavigation = do
189189 fwd <- fmap (const 1) <$> key (V.KChar '\t')
190190 back <- fmap (const (-1)) <$> key V.KBackTab
@@ -242,14 +242,14 @@ data Orientation = Orientation_Column
242242
243243-- | Create a row-oriented 'axis'
244244row
245− :: (Reflex t, MonadNodeId m, MonadFix m, HasLayout t m)
245+ :: (Reflex t, MonadFix m, HasLayout t m)
246246 => m a
247247 -> m a
248248row = axis (pure Orientation_Row) flex
249249
250250-- | Create a column-oriented 'axis'
251251col
252− :: (Reflex t, MonadNodeId m, MonadFix m, HasLayout t m)
252+ :: (Reflex t, MonadFix m, HasLayout t m)
253253 => m a
254254 -> m a
255255col = axis (pure Orientation_Column) flex
@@ -433,14 +433,15 @@ instance (HasFocusReader t m, Monad m) => HasFocusReader t (Layout t m)
433433instance (Monad m, MonadNodeId m, Reflex t, MonadFix m) => HasLayout t (Layout t m) where
434434 axis o c (Layout x) = Layout $ do
435435 nodeId <- getNextNodeId
436− (result, forest) <- lift $ local (\t -> fromMaybe (LayoutTree (Region 0 0 0 0, Orientation_Column) mempty) . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
436+ let dummyParentLayout = LayoutTree (nilRegion, Orientation_Column) mempty
437+ (result, forest) <- lift $ local (\t -> fromMaybe dummyParentLayout . lookupLF nodeId . childrenLT <$> t) $ runDynamicWriterT x
437438 tellDyn $ singletonLF nodeId <$> (LayoutTree <$> ((,) <$> c <*> o) <*> forest)
438439 pure result
439440 region c = do
440441 nodeId <- lift getNextNodeId
441442 Layout $ tellDyn $ ffor c $ \c' -> singletonLF nodeId $ LayoutTree (c', Orientation_Row) mempty
442443 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
444445 askOrientation = Layout $ asks $ fmap (snd . rootLT)
445446
446447instance (MonadFix m, HasFocus t m) => HasFocus t (Layout t m) where
@@ -505,7 +506,7 @@ initManager_ = fmap fst . initManager
505506-- provided constraint. Returns the 'FocusId' allowing for manual focus
506507-- management.
507508tile'
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)
509510 => Dynamic t Constraint
510511 -> m a
511512 -> m (FocusId, a)
@@ -524,7 +525,7 @@ tile' c w = do
524525-- | A widget that is focusable and occupies a layout region based on the
525526-- provided constraint.
526527tile
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)
528529 => Dynamic t Constraint
529530 -> m a
530531 -> m a
@@ -535,7 +536,7 @@ tile c = fmap snd . tile' c
535536-- | A widget that is not focusable and occupies a layout region based on the
536537-- provided constraint.
537538grout
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)
539540 => Dynamic t Constraint
540541 -> m a
541542 -> m a