{- |
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 the owner of a selection changes. On X11, this
information is only available if the X server supports the XFIXES
extension.
-}

module GI.Gdk.Structs.EventOwnerChange
    ( 

-- * Exported types
    EventOwnerChange(..)                    ,
    noEventOwnerChange                      ,


 -- * Properties
-- ** Owner
    eventOwnerChangeReadOwner               ,


-- ** Reason
    eventOwnerChangeReadReason              ,


-- ** Selection
    eventOwnerChangeReadSelection           ,


-- ** SelectionTime
    eventOwnerChangeReadSelectionTime       ,


-- ** SendEvent
    eventOwnerChangeReadSendEvent           ,


-- ** Time
    eventOwnerChangeReadTime                ,


-- ** Type
    eventOwnerChangeReadType                ,


-- ** Window
    eventOwnerChangeReadWindow              ,




    ) 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 EventOwnerChange = EventOwnerChange (ForeignPtr EventOwnerChange)
noEventOwnerChange :: Maybe EventOwnerChange
noEventOwnerChange = Nothing

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

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

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

eventOwnerChangeReadOwner :: EventOwnerChange -> IO Window
eventOwnerChangeReadOwner s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO (Ptr Window)
    val' <- (newObject Window) val
    return val'

eventOwnerChangeReadReason :: EventOwnerChange -> IO OwnerChange
eventOwnerChangeReadReason s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventOwnerChangeReadSelection :: EventOwnerChange -> IO Atom
eventOwnerChangeReadSelection s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr Atom)
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    val' <- (\x -> Atom <$> newForeignPtr_ x) val
    return val'

eventOwnerChangeReadTime :: EventOwnerChange -> IO Word32
eventOwnerChangeReadTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO Word32
    return val

eventOwnerChangeReadSelectionTime :: EventOwnerChange -> IO Word32
eventOwnerChangeReadSelectionTime s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 52) :: IO Word32
    return val