@@ -59,7 +59,7 @@ import Hledger
5959import Hledger.Cli.CliOptions
6060import Hledger.UI.UITypes
6161import Hledger.UI.UIOptions (UIOpts (uoCliOpts ))
62- import Hledger.UI.UIScreens ( screenUpdate )
62+ import Hledger.UI.UIScreens
6363import Hledger.UI.UIUtils (showScreenId , showScreenStack )
6464
6565-- | Make an initial UI state with the given options, journal,
@@ -369,8 +369,15 @@ resetScreens d ui@UIState{astartupopts=origopts, ajournal=j, aScreen=s,aPrevScre
369369-- XXX Currently this does not properly regenerate the transaction screen or error screen,
370370-- which depend on state from their parent(s); those screens' handlers must do additional work, which is fragile.
371371regenerateScreens :: Journal -> Day -> UIState -> UIState
372- regenerateScreens j d ui@ UIState {aopts= opts, aScreen= s,aPrevScreens= ss} =
373- let ! newScreen = screenUpdate opts d j s
374- ! newPrevScreens = map (screenUpdate opts d j) ss
375- ! newJournal = j
376- in ui{ajournal= newJournal, aScreen= newScreen, aPrevScreens= newPrevScreens}
372+ regenerateScreens j d ui@ UIState {aScreen= s} =
373+ let ! ui' = ui{ajournal= j, aScreen= s'}
374+ ! s' = case s of
375+ MS mss -> MS $! msUpdate mss
376+ AS ass -> AS $! asUpdate (aopts ui') d j ass
377+ CS ass -> CS $! csUpdate (aopts ui') d j ass
378+ BS ass -> BS $! bsUpdate (aopts ui') d j ass
379+ IS ass -> IS $! isUpdate (aopts ui') d j ass
380+ RS rss -> RS $! rsUpdate (aopts ui') d j rss
381+ TS tss -> TS $! tsUpdate tss
382+ ES _ -> s
383+ in ui'
0 commit comments