diff --git a/client/Main.hs b/client/Main.hs index 8e75372..bd9b1f0 100644 --- a/client/Main.hs +++ b/client/Main.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE OverloadedStrings #-} + module Main where import Brick @@ -54,13 +56,19 @@ clientHandleEvent :: ClientState -> BrickEvent ResourceName () -> EventM Resourc clientHandleEvent cs (VtyEvent (Vty.EvKey (Vty.KChar 'q') [])) = halt cs clientHandleEvent cs _ = continue cs +clientAttrMap :: AttrMap +clientAttrMap = attrMap Vty.defAttr + [ ("expand", Vty.currentAttr `Vty.withStyle` Vty.bold `Vty.withForeColor` Vty.yellow) + , ("focus", Vty.currentAttr `Vty.withBackColor` Vty.blue) + ] + clientApp :: App ClientState () ResourceName clientApp = App { appDraw = clientDraw , appChooseCursor = showFirstCursor , appHandleEvent = clientHandleEvent , appStartEvent = pure - , appAttrMap = const $ attrMap Vty.defAttr [] + , appAttrMap = const clientAttrMap } main :: IO () diff --git a/src/Forest/Client/Node.hs b/src/Forest/Client/Node.hs index 4b4e2fc..5a587f0 100644 --- a/src/Forest/Client/Node.hs +++ b/src/Forest/Client/Node.hs @@ -34,7 +34,7 @@ nodeToWidget focused node = let nodeWidget = txt $ nodeText node expandStyle = if null (nodeChildren node) then "noexpand" else "expand" focusStyle = if focused then "focus" else "nofocus" - in withAttr focusStyle $ withAttr expandStyle nodeWidget + in withDefAttr focusStyle $ withDefAttr expandStyle nodeWidget subnodeToTree :: NodeId -> DrawState -> Node -> WidgetTree ResourceName subnodeToTree nodeId ds node = @@ -50,6 +50,7 @@ nodeToTree :: DrawState -> Node -> WidgetTree ResourceName nodeToTree ds node = case dsEditor ds of Nothing -> WidgetTree nodeWidget subnodeWidgets Just ed + | not focused -> WidgetTree nodeWidget subnodeWidgets | asReply ed -> WidgetTree nodeWidget (subnodeWidgets ++ [WidgetTree (renderNodeEditor ed) []]) | otherwise -> WidgetTree (renderNodeEditor ed) subnodeWidgets where