pdateGUIZoomWindow :: AppController -> IO AppController
updateGUIZoomWindow app = do
  let w  = appWidth app
      h  = appHeight app
      zf = appZoomFactor app
  newZoomWindow <- runMaybeT $ tryCreateZoomWindow (floor w) (floor h) zf
  case newZoomWindow of
    Nothing -> return app
    Just zoomWindow  -> do
      let gv  = appGView app
      case gv of
        G.StandardView _ zw -> do
          let ngv = gv { stdViewZoomArea = zoomWindow }
          return app { appGView = ngv }

updateGUIZoomWindow :: AppController -> IO AppController
updateGUIZoomWindow app = do
  let w  = appWidth app
      h  = appHeight app
      zf = appZoomFactor app
  newZoomWindow <- runMaybeT $ tryCreateZoomWindow (floor w) (floor h) zf
  case newZoomWindow of
    Nothing -> return app
    Just zoomWindow  -> do
      let gv  = appGView app
      case gv of
        G.StandardView _ zw -> do
          let ngv = gv { stdViewZoomArea = zoomWindow }
          return app { appGView = ngv }
updateGUIZoomWindow app = do
  let w  = appWidth app
      h  = appHeight app
      zf = appZoomFactor app
  newZoomWindow <- runMaybeT $ tryCreateZoomWindow (floor w) (floor h) zf
  case newZoomWindow of
    Nothing -> return app
    Just zoomWindow  -> do
      let gv  = appGView app
      case gv of
        G.StandardView _ zw -> do
          let ngv = gv { stdViewZoomArea = zoomWindow }
          return app { appGView = ngv }