{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

Generated when a pointer or keyboard grab is broken. On X11, this happens
when the grab window becomes unviewable (i.e. it or one of its ancestors
is unmapped), or if the same application grabs the pointer or keyboard
again. Note that implicit grabs (which are initiated by button presses)
can also cause #GdkEventGrabBroken events.
-}

module GI.Gdk.Structs.EventGrabBroken
    ( 

-- * Exported types
    EventGrabBroken(..)                     ,
    noEventGrabBroken                       ,


 -- * Properties
-- ** GrabWindow
    eventGrabBrokenReadGrabWindow           ,


-- ** Implicit
    eventGrabBrokenReadImplicit             ,


-- ** Keyboard
    eventGrabBrokenReadKeyboard             ,


-- ** SendEvent
    eventGrabBrokenReadSendEvent            ,


-- ** Type
    eventGrabBrokenReadType                 ,


-- ** Window
    eventGrabBrokenReadWindow               ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gdk.Types
import GI.Gdk.Callbacks

newtype EventGrabBroken = EventGrabBroken (ForeignPtr EventGrabBroken)
noEventGrabBroken :: Maybe EventGrabBroken
noEventGrabBroken = Nothing

eventGrabBrokenReadType :: EventGrabBroken -> IO EventType
eventGrabBrokenReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventGrabBrokenReadWindow :: EventGrabBroken -> IO Window
eventGrabBrokenReadWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventGrabBrokenReadSendEvent :: EventGrabBroken -> IO Int8
eventGrabBrokenReadSendEvent s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Int8
    return val

eventGrabBrokenReadKeyboard :: EventGrabBroken -> IO Bool
eventGrabBrokenReadKeyboard s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO CInt
    let val' = (/= 0) val
    return val'

eventGrabBrokenReadImplicit :: EventGrabBroken -> IO Bool
eventGrabBrokenReadImplicit s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO CInt
    let val' = (/= 0) val
    return val'

eventGrabBrokenReadGrabWindow :: EventGrabBroken -> IO Window
eventGrabBrokenReadGrabWindow s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'