{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) Describes a property change on a window. -} module GI.Gdk.Structs.EventProperty ( -- * Exported types EventProperty(..) , noEventProperty , -- * Properties -- ** Atom eventPropertyReadAtom , -- ** SendEvent eventPropertyReadSendEvent , -- ** State eventPropertyReadState , -- ** Time eventPropertyReadTime , -- ** Type eventPropertyReadType , -- ** Window eventPropertyReadWindow , ) 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 EventProperty = EventProperty (ForeignPtr EventProperty) noEventProperty :: Maybe EventProperty noEventProperty = Nothing eventPropertyReadType :: EventProperty -> IO EventType eventPropertyReadType s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CUInt let val' = (toEnum . fromIntegral) val return val' eventPropertyReadWindow :: EventProperty -> IO Window eventPropertyReadWindow s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window) val' <- (newObject Window) val return val' eventPropertyReadSendEvent :: EventProperty -> IO Int8 eventPropertyReadSendEvent s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO Int8 return val eventPropertyReadAtom :: EventProperty -> IO Atom eventPropertyReadAtom s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO (Ptr Atom) -- XXX Wrapping a foreign struct/union with no known destructor, leak? val' <- (\x -> Atom <$> newForeignPtr_ x) val return val' eventPropertyReadTime :: EventProperty -> IO Word32 eventPropertyReadTime s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 32) :: IO Word32 return val eventPropertyReadState :: EventProperty -> IO PropertyState eventPropertyReadState s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 36) :: IO CUInt let val' = (toEnum . fromIntegral) val return val'