@@ -118,19 +118,26 @@ instance (Reflex t) => Default (CheckboxConfig t) where
118118
119119-- | A checkbox widget
120120checkbox
121− :: (MonadHold t m, MonadFix m, Reflex t, HasVtyInput t m, HasDisplaySize t m, ImageWriter t m)
121+ :: (MonadHold t m, MonadFix m, Reflex t, HasVtyInput t m, HasDisplaySize t m, ImageWriter t m, HasFocus t m)
122122 => CheckboxConfig t
123123 -> Bool
124124 -> m (Dynamic t Bool)
125125checkbox cfg v0 = do
126126 md <- mouseDown V.BLeft
127127 mu <- mouseUp
128− v <- toggle v0 $ () <$ mu
128+ space <- key (V.KChar ' ')
129+ f <- focus
130+ v <- toggle v0 $ leftmost
131+ [ () <$ mu
132+ , () <$ space
133+ ]
134+ let bold = V.withStyle mempty V.bold
129135 depressed <- hold mempty $ leftmost
130− [ V.withStyle mempty V.bold <$ md
136+ [ bold <$ md
131137 , mempty <$ mu
132138 ]
133− let attrs = (<>) <$> _checkboxConfig_attributes cfg <*> depressed
139+ let focused = ffor (current f) $ \x -> if x then bold else mempty
140+ let attrs = mconcat <$> sequence [_checkboxConfig_attributes cfg, depressed, focused]
134141 richText (RichTextConfig attrs) $ join . current $ ffor v $ \checked ->
135142 if checked
136143 then _checkboxStyle_checked <$> _checkboxConfig_checkboxStyle cfg