brick 0.71 → 0.71.1
raw patch · 4 files changed
+46/−38 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Brick.Widgets.FileBrowser: fileBrowserEntriesG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (List n_a1q9L FileInfo)
+ Brick.Widgets.FileBrowser: fileBrowserEntriesG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (List n_a1q8z FileInfo)
- Brick.Widgets.FileBrowser: fileBrowserEntryFilterG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (Maybe (FileInfo -> Bool))
+ Brick.Widgets.FileBrowser: fileBrowserEntryFilterG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (Maybe (FileInfo -> Bool))
- Brick.Widgets.FileBrowser: fileBrowserExceptionG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (Maybe IOException)
+ Brick.Widgets.FileBrowser: fileBrowserExceptionG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (Maybe IOException)
- Brick.Widgets.FileBrowser: fileBrowserLatestResultsG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) [FileInfo]
+ Brick.Widgets.FileBrowser: fileBrowserLatestResultsG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) [FileInfo]
- Brick.Widgets.FileBrowser: fileBrowserNameG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) n_a1q9L
+ Brick.Widgets.FileBrowser: fileBrowserNameG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) n_a1q8z
- Brick.Widgets.FileBrowser: fileBrowserSearchStringG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (Maybe Text)
+ Brick.Widgets.FileBrowser: fileBrowserSearchStringG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (Maybe Text)
- Brick.Widgets.FileBrowser: fileBrowserSelectableG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (FileInfo -> Bool)
+ Brick.Widgets.FileBrowser: fileBrowserSelectableG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (FileInfo -> Bool)
- Brick.Widgets.FileBrowser: fileBrowserSelectableL :: forall n_a1q9L. Lens' (FileBrowser n_a1q9L) (FileInfo -> Bool)
+ Brick.Widgets.FileBrowser: fileBrowserSelectableL :: forall n_a1q8z. Lens' (FileBrowser n_a1q8z) (FileInfo -> Bool)
- Brick.Widgets.FileBrowser: fileBrowserSelectedFilesG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) (Set String)
+ Brick.Widgets.FileBrowser: fileBrowserSelectedFilesG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) (Set String)
- Brick.Widgets.FileBrowser: fileBrowserWorkingDirectoryG :: forall n_a1q9L. SimpleGetter (FileBrowser n_a1q9L) FilePath
+ Brick.Widgets.FileBrowser: fileBrowserWorkingDirectoryG :: forall n_a1q8z. SimpleGetter (FileBrowser n_a1q8z) FilePath
- Brick.Widgets.List: listElementsL :: forall n_a1kXT t_a1kXU e_a1kXV t_a1lbZ e_a1lc0. Lens (GenericList n_a1kXT t_a1kXU e_a1kXV) (GenericList n_a1kXT t_a1lbZ e_a1lc0) (t_a1kXU e_a1kXV) (t_a1lbZ e_a1lc0)
+ Brick.Widgets.List: listElementsL :: forall n_a1kWH t_a1kWI e_a1kWJ t_a1laN e_a1laO. Lens (GenericList n_a1kWH t_a1kWI e_a1kWJ) (GenericList n_a1kWH t_a1laN e_a1laO) (t_a1kWI e_a1kWJ) (t_a1laN e_a1laO)
- Brick.Widgets.List: listItemHeightL :: forall n_a1kXT t_a1kXU e_a1kXV. Lens' (GenericList n_a1kXT t_a1kXU e_a1kXV) Int
+ Brick.Widgets.List: listItemHeightL :: forall n_a1kWH t_a1kWI e_a1kWJ. Lens' (GenericList n_a1kWH t_a1kWI e_a1kWJ) Int
- Brick.Widgets.List: listNameL :: forall n_a1kXT t_a1kXU e_a1kXV n_a1lc1. Lens (GenericList n_a1kXT t_a1kXU e_a1kXV) (GenericList n_a1lc1 t_a1kXU e_a1kXV) n_a1kXT n_a1lc1
+ Brick.Widgets.List: listNameL :: forall n_a1kWH t_a1kWI e_a1kWJ n_a1laP. Lens (GenericList n_a1kWH t_a1kWI e_a1kWJ) (GenericList n_a1laP t_a1kWI e_a1kWJ) n_a1kWH n_a1laP
- Brick.Widgets.List: listSelectedL :: forall n_a1kXT t_a1kXU e_a1kXV. Lens' (GenericList n_a1kXT t_a1kXU e_a1kXV) (Maybe Int)
+ Brick.Widgets.List: listSelectedL :: forall n_a1kWH t_a1kWI e_a1kWJ. Lens' (GenericList n_a1kWH t_a1kWI e_a1kWJ) (Maybe Int)
Files
- CHANGELOG.md +7/−0
- brick.cabal +1/−1
- src/Brick/Main.hs +36/−35
- tests/Render.hs +2/−2
CHANGELOG.md view
@@ -2,6 +2,13 @@ Brick changelog --------------- +0.71.1+------++Bug fixes:+ * Fixed an issue where `tests/Render.hs` did not gracefully exit in the+ presence of an unknown terminal.+ 0.71 ----
brick.cabal view
@@ -1,5 +1,5 @@ name: brick-version: 0.71+version: 0.71.1 synopsis: A declarative terminal user interface library description: Write terminal user interfaces (TUIs) painlessly with 'brick'! You
src/Brick/Main.hs view
@@ -59,6 +59,7 @@ import Control.Monad.Trans.Reader import Control.Concurrent (forkIO, killThread) import qualified Data.Foldable as F+import Data.List (find) import Data.Maybe (listToMaybe) import qualified Data.Map as M import qualified Data.Set as S@@ -309,9 +310,9 @@ -> Bool -> IO (Next s, RenderState n, [Extent n]) runVty vty readEvent app appState rs prevExtents draw = do- (firstRS, exts) <- case draw of- True -> renderApp vty app appState rs- False -> return (rs, prevExtents)+ (firstRS, exts) <- if draw+ then renderApp vty app appState rs+ else return (rs, prevExtents) e <- readEvent @@ -330,23 +331,23 @@ -- If the clicked extent was registered as -- clickable, send a click event. Otherwise, just -- send the raw mouse event- case n `elem` firstRS^.clickableNamesL of- True -> do- let localCoords = Location (lc, lr)- lc = c - ec- lr = r - er+ if n `elem` firstRS^.clickableNamesL+ then do+ let localCoords = Location (lc, lr)+ lc = c - ec+ lr = r - er - -- If the clicked extent was a viewport,- -- adjust the local coordinates by- -- adding the viewport upper-left corner- -- offset.- newCoords = case M.lookup n (viewportMap firstRS) of- Nothing -> localCoords- Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))- & _2 %~ (+ (vp^.vpTop))+ -- If the clicked extent was a viewport,+ -- adjust the local coordinates by+ -- adding the viewport upper-left corner+ -- offset.+ newCoords = case M.lookup n (viewportMap firstRS) of+ Nothing -> localCoords+ Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))+ & _2 %~ (+ (vp^.vpTop)) - return (MouseDown n button mods newCoords, firstRS, exts)- False -> return (e, firstRS, exts)+ return (MouseDown n button mods newCoords, firstRS, exts)+ else return (e, firstRS, exts) _ -> return (e, firstRS, exts) VtyEvent (EvMouseUp c r button) -> do let matching = findClickedExtents_ (c, r) exts@@ -355,21 +356,21 @@ -- If the clicked extent was registered as -- clickable, send a click event. Otherwise, just -- send the raw mouse event- case n `elem` firstRS^.clickableNamesL of- True -> do- let localCoords = Location (lc, lr)- lc = c - ec- lr = r - er- -- If the clicked extent was a viewport,- -- adjust the local coordinates by- -- adding the viewport upper-left corner- -- offset.- newCoords = case M.lookup n (viewportMap firstRS) of- Nothing -> localCoords- Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))- & _2 %~ (+ (vp^.vpTop))- return (MouseUp n button newCoords, firstRS, exts)- False -> return (e, firstRS, exts)+ if n `elem` firstRS^.clickableNamesL+ then do+ let localCoords = Location (lc, lr)+ lc = c - ec+ lr = r - er+ -- If the clicked extent was a viewport,+ -- adjust the local coordinates by+ -- adding the viewport upper-left corner+ -- offset.+ newCoords = case M.lookup n (viewportMap firstRS) of+ Nothing -> localCoords+ Just vp -> localCoords & _1 %~ (+ (vp^.vpLeft))+ & _2 %~ (+ (vp^.vpTop))+ return (MouseUp n button newCoords, firstRS, exts)+ else return (e, firstRS, exts) _ -> return (e, firstRS, exts) _ -> return (e, firstRS, exts) @@ -422,7 +423,7 @@ -- | Given a resource name, get the most recent rendering extent for the -- name (if any). lookupExtent :: (Eq n) => n -> EventM n (Maybe (Extent n))-lookupExtent n = EventM $ asks (listToMaybe . filter f . latestExtents)+lookupExtent n = EventM $ asks (find f . latestExtents) where f (Extent n' _ _) = n == n' @@ -500,7 +501,7 @@ showCursorNamed :: (Eq n) => n -> [CursorLocation n] -> Maybe (CursorLocation n) showCursorNamed name locs = let matches l = l^.cursorLocationNameL == Just name- in listToMaybe $ filter matches locs+ in find matches locs -- | A viewport scrolling handle for managing the scroll state of -- viewports.
tests/Render.hs view
@@ -12,7 +12,7 @@ #endif import qualified Graphics.Vty as V import Brick.Widgets.Border (hBorder)-import Control.Exception (try)+import Control.Exception (SomeException, try) region :: V.DisplayRegion region = (30, 10)@@ -34,7 +34,7 @@ main :: IO Bool main = do- result <- try (renderDisplay [myWidget]) :: IO (Either V.VtyConfigurationError ())+ result <- try (renderDisplay [myWidget]) :: IO (Either SomeException ()) case result of Left _ -> do putStrLn "Terminal is not available, skipping test"