hob-0.0.1.0: src/lib/Hob/Command/FocusCommandEntry.hs
module Hob.Command.FocusCommandEntry (
toggleFocusOnCommandEntryCommandHandler,
focusActiveEditorAndExitLastModeCommandHandler,
focusCommandEntryCommandHandler,
) where
import Control.Monad.Reader
import Graphics.UI.Gtk
import Hob.Context
import Hob.Context.UiContext
import Hob.Control
import Hob.Ui.Editor
focusCommandEntryCommandHandler :: CommandHandler
focusCommandEntryCommandHandler = CommandHandler Nothing focusCommandEntry
focusActiveEditorAndExitLastModeCommandHandler :: CommandHandler
focusActiveEditorAndExitLastModeCommandHandler = CommandHandler Nothing focusActiveEditorAndExitLastMode
toggleFocusOnCommandEntryCommandHandler :: CommandHandler
toggleFocusOnCommandEntryCommandHandler = CommandHandler Nothing toggleFocusOnCommandEntry
focusCommandEntry :: App()
focusCommandEntry = do
ctx <- ask
liftIO $ widgetGrabFocus $ cmdEntry ctx
where cmdEntry ctx = commandEntry.uiContext $ ctx
focusActiveEditorAndExitLastMode :: App()
focusActiveEditorAndExitLastMode = do
exitLastMode
ctx <- ask
editor <- liftIO $ getActiveEditor ctx
liftIO $ maybeDo widgetGrabFocus editor
toggleFocusOnCommandEntry :: App()
toggleFocusOnCommandEntry = do
ctx <- ask
isFocused <- liftIO $ widgetGetIsFocus $ cmdEntry ctx
if isFocused then do
editor <- liftIO $ getActiveEditor ctx
liftIO $ maybeDo widgetGrabFocus editor
else
liftIO $ widgetGrabFocus $ cmdEntry ctx
where cmdEntry ctx = commandEntry.uiContext $ ctx