    {-# OPTIONS_HADDOCK hide #-}
    {-# LANGUAGE PatternGuards, RankNTypes #-}

    -- | Callback for exiting the program.
    module Graphics.Gloss.Internals.Interface.Common.Exit
            (callback_exit)
    where
    import Graphics.Gloss.Internals.Interface.Backend.Types

    callback_exit :: a -> Callback
    callback_exit stateRef
     =      KeyMouse (keyMouse_exit stateRef)

    keyMouse_exit :: a -> KeyboardMouseCallback
    keyMouse_exit
            _
            backend
            key keyState _
            _
            | key           == SpecialKey KeyEsc
            , keyState      == Down
            = exitBackend backend

            | otherwise
            = return ()