monomer-1.0.0.3: src/Monomer/Widgets/Util/Types.hs
{-|
Module : Monomer.Widgets.Util.Types
Copyright : (c) 2018 Francisco Vallarino
License : BSD-3-Clause (see the LICENSE file)
Maintainer : fjvallarino@gmail.com
Stability : experimental
Portability : non-portable
Common types for widget related functions.
-}
{-# LANGUAGE Strict #-}
module Monomer.Widgets.Util.Types (
IsHovered,
IsFocused,
IsActive,
GetBaseStyle,
CurrentStyleCfg(..)
) where
import Monomer.Core.StyleTypes
import Monomer.Core.WidgetTypes
-- | Indicates whether the mouse pointer is over a valid region the given node.
type IsHovered s e = WidgetEnv s e -> WidgetNode s e -> Bool
-- | Indicates whether the given node has keyboard focus.
type IsFocused s e = WidgetEnv s e -> WidgetNode s e -> Bool
-- | Indicates whether the given node is clicked on a valid region.
type IsActive s e = WidgetEnv s e -> WidgetNode s e -> Bool
{-|
Returns the base style for a given node, if any. This is widget dependent.
Usually this style comes from the active theme.
-}
type GetBaseStyle s e
= WidgetEnv s e
-> WidgetNode s e
-> Maybe Style
{-|
Configuration for style related functions. It allows to override how each of the
states (hovered, focused and active) is defined for a given widget type.
A usage example can be found in "Monomer.Widgets.Radio".
-}
data CurrentStyleCfg s e = CurrentStyleCfg {
_ascIsHovered :: IsHovered s e,
_ascIsFocused :: IsFocused s e,
_ascIsActive :: IsActive s e
}