diff --git a/hledger-ui/Hledger/UI/AccountsScreen.hs b/hledger-ui/Hledger/UI/AccountsScreen.hs index 20add4b78..e8a0a70b0 100644 --- a/hledger-ui/Hledger/UI/AccountsScreen.hs +++ b/hledger-ui/Hledger/UI/AccountsScreen.hs @@ -337,7 +337,7 @@ asHandle ui0@UIState{ VtyEvent (EvKey (KChar '/') []) -> continue $ regenerateScreens j d $ showMinibuffer ui VtyEvent (EvKey k []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) VtyEvent e | e `elem` moveLeftEvents -> continue $ popScreen ui - VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle _asList >> invalidateCache >> continue ui + VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle _asList >> redraw ui -- enter register screen for selected account (if there is one), -- centering its selected transaction if possible diff --git a/hledger-ui/Hledger/UI/RegisterScreen.hs b/hledger-ui/Hledger/UI/RegisterScreen.hs index 61d53fdaa..5b81ab943 100644 --- a/hledger-ui/Hledger/UI/RegisterScreen.hs +++ b/hledger-ui/Hledger/UI/RegisterScreen.hs @@ -333,7 +333,7 @@ rsHandle ui@UIState{ VtyEvent (EvKey (KLeft) [MShift]) -> continue $ regenerateScreens j d $ previousReportPeriod journalspan ui VtyEvent (EvKey k []) | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) VtyEvent e | e `elem` moveLeftEvents -> continue $ popScreen ui - VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle rsList >> invalidateCache >> continue ui + VtyEvent (EvKey (KChar 'l') [MCtrl]) -> scrollSelectionToMiddle rsList >> redraw ui -- enter transaction screen for selected transaction VtyEvent e | e `elem` moveRightEvents -> do diff --git a/hledger-ui/Hledger/UI/UIUtils.hs b/hledger-ui/Hledger/UI/UIUtils.hs index b458f4d88..ad62cf9fd 100644 --- a/hledger-ui/Hledger/UI/UIUtils.hs +++ b/hledger-ui/Hledger/UI/UIUtils.hs @@ -21,6 +21,7 @@ module Hledger.UI.UIUtils ( ,renderToggle ,replaceHiddenAccountsNameWith ,scrollSelectionToMiddle + ,redraw ) where @@ -36,7 +37,10 @@ import Data.Maybe #if !(MIN_VERSION_base(4,11,0)) import Data.Monoid #endif -import Graphics.Vty (Event(..),Key(..),Modifier(..),Color,Attr,currentAttr) +import Graphics.Vty + (Event(..),Key(..),Modifier(..),Vty(..),Color,Attr,currentAttr,refresh + -- ,Output(displayBounds,mkDisplayContext),DisplayContext(..) + ) import Lens.Micro.Platform import System.Environment @@ -47,6 +51,10 @@ import Hledger.UI.UITypes import Hledger.UI.UIState +-- | Tell vty to redraw the whole screen, and continue. +redraw :: s -> EventM a (Next s) +redraw ui = getVtyHandle >>= liftIO . refresh >> continue ui + -- ui -- | Wrap a widget in the default hledger-ui screen layout.