{-# LINE 1 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LINE 4 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LINE 6 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
module Graphics.UI.Gtk.Gdk.EventM (
HasCoordinates,
HasRootCoordinates,
HasModifier,
HasTime,
EventM,
EAny,
EKey,
EButton,
EScroll,
EMotion,
EExpose,
EVisibility,
ECrossing,
EFocus,
EConfigure,
EProperty,
EProximity,
EWindowState,
{-# LINE 124 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
EOwnerChange,
{-# LINE 126 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 127 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
EGrabBroken,
{-# LINE 129 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventWindow,
eventSent,
eventCoordinates,
eventRootCoordinates,
eventModifier,
eventModifierAll,
eventModifierMouse,
eventTime,
eventKeyVal,
eventKeyName,
eventHardwareKeycode,
eventKeyboardGroup,
MouseButton(..),
eventButton,
Click(..),
eventClick,
ScrollDirection(..),
eventScrollDirection,
eventIsHint,
{-# LINE 151 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventRequestMotions,
{-# LINE 153 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventArea,
{-# LINE 157 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
VisibilityState(..),
eventVisibilityState,
CrossingMode(..),
eventCrossingMode,
NotifyType(..),
eventNotifyType,
eventCrossingFocus,
eventFocusIn,
eventPosition,
eventSize,
eventProperty,
WindowState(..),
eventWindowStateChanged,
eventWindowState,
{-# LINE 172 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
OwnerChange(..),
eventChangeReason,
eventSelection,
eventSelectionTime,
{-# LINE 177 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 178 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventKeyboardGrab,
eventImplicit,
eventGrabWindow,
{-# LINE 182 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
Modifier(..),
TimeStamp,
currentTime,
tryEvent,
stopEvent,
) where
import Prelude hiding (catch)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.Flags
import System.Glib.GObject ( makeNewGObject )
import Graphics.UI.Gtk.Gdk.Keys (KeyVal, KeyCode, keyName)
{-# LINE 200 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
import Graphics.UI.Gtk.Gdk.Enums (Modifier(..), VisibilityState(..),
CrossingMode(..), NotifyType(..), WindowState(..), ScrollDirection(..),
{-# LINE 203 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
OwnerChange(..)
{-# LINE 205 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
)
import Graphics.UI.Gtk.General.Enums (MouseButton(..), Click(..))
import Graphics.UI.Gtk.General.Structs (Rectangle(..))
import Graphics.UI.Gtk.General.DNDTypes (Atom(..), SelectionTag)
import Graphics.UI.Gtk.Types ( DrawWindow, mkDrawWindow )
import Data.List (isPrefixOf)
import Control.Monad.Reader ( ReaderT, ask, runReaderT )
import Control.Monad.Trans ( liftIO )
import Control.Monad ( liftM )
{-# LINE 216 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
import Control.Exception ( Handler(..)
, PatternMatchFail(..)
, catches, throw )
import System.IO.Error (isUserError, ioeGetErrorString)
{-# LINE 224 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
type EventM t = ReaderT (Ptr t) IO
data EAny
data EKey
data EButton
data EScroll
data EMotion
data EExpose
data EVisibility
data ECrossing
data EFocus
data EConfigure
data EProperty
data EProximity
data EWindowState
{-# LINE 270 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
data EOwnerChange
{-# LINE 273 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 276 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
data EGrabBroken
{-# LINE 279 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventWindow :: EventM any DrawWindow
eventWindow = do
ptr <- ask
liftIO $ makeNewGObject mkDrawWindow ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr)
{-# LINE 286 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventSent :: EventM any Bool
eventSent = do
ptr <- ask
liftIO $ (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 293 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
class HasCoordinates a
instance HasCoordinates EButton
instance HasCoordinates EScroll
instance HasCoordinates EMotion
instance HasCoordinates ECrossing
eventCoordinates :: HasCoordinates t => EventM t (Double, Double)
eventCoordinates = do
ptr <- ask
liftIO $ do
(ty :: Int32) <- peek (castPtr ptr)
{-# LINE 306 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
if ty `elem` [ 4,
{-# LINE 307 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
5,
{-# LINE 308 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
6,
{-# LINE 309 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
7] then do
{-# LINE 310 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 311 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 312 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 31 ] then do
{-# LINE 314 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 315 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 316 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 3 ] then do
{-# LINE 318 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 319 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 320 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 10,
{-# LINE 322 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
11] then do
{-# LINE 323 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 324 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 325 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else error ("eventCoordinates: none for event type "++show ty)
class HasRootCoordinates a
instance HasRootCoordinates EButton
instance HasRootCoordinates EScroll
instance HasRootCoordinates EMotion
instance HasRootCoordinates ECrossing
eventRootCoordinates :: HasRootCoordinates t => EventM t (Double, Double)
eventRootCoordinates = do
ptr <- ask
liftIO $ do
(ty :: Int32) <- peek (castPtr ptr)
{-# LINE 341 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
if ty `elem` [ 4,
{-# LINE 342 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
5,
{-# LINE 343 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
6,
{-# LINE 344 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
7] then do
{-# LINE 345 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 346 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr
{-# LINE 347 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 31 ] then do
{-# LINE 349 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 350 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 351 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 3 ] then do
{-# LINE 353 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 354 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr
{-# LINE 355 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else if ty `elem` [ 10,
{-# LINE 357 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
11] then do
{-# LINE 358 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(x :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 359 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Double) <- (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 360 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (realToFrac x, realToFrac y)
else error ("eventRootCoordinates: none for event type "++show ty)
class HasModifier a
instance HasModifier EKey
instance HasModifier EButton
instance HasModifier EScroll
instance HasModifier EMotion
instance HasModifier ECrossing
eventModifier :: HasModifier t => EventM t [Modifier]
eventModifier = eM defModMask
eventModifierAll :: HasModifier t => EventM t [Modifier]
eventModifierAll = eM allModMask
eventModifierMouse :: HasModifier t => EventM t [Modifier]
eventModifierMouse = eM mouseModMask
allModMask = -1
foreign import ccall safe "gtk_accelerator_get_default_mod_mask"
defModMask :: Word32
{-# LINE 394 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
mouseModMask = 256
{-# LINE 396 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
.|. 512
{-# LINE 397 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
.|. 1024
{-# LINE 398 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
.|. 2048
{-# LINE 399 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
.|. 4096
{-# LINE 400 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eM mask = do
ptr <- ask
liftIO $ do
(ty :: Int32) <- peek (castPtr ptr)
{-# LINE 405 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
if ty `elem` [ 8,
{-# LINE 406 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
9] then do
{-# LINE 407 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(modif ::Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 408 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (toFlags (fromIntegral (modif .&. mask)))
else if ty `elem` [ 4,
{-# LINE 410 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
5,
{-# LINE 411 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
6,
{-# LINE 412 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
7] then do
{-# LINE 413 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(modif ::Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 414 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (toFlags (fromIntegral (modif .&. mask)))
else if ty `elem` [ 31 ] then do
{-# LINE 416 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(modif ::Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 417 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (toFlags (fromIntegral (modif .&. mask)))
else if ty `elem` [ 3 ] then do
{-# LINE 419 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(modif ::Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 420 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (toFlags (fromIntegral (modif .&. mask)))
else if ty `elem` [ 10,
{-# LINE 422 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
11] then do
{-# LINE 423 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(modif ::Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 84) ptr
{-# LINE 424 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (toFlags (fromIntegral (modif .&. mask)))
else error ("eventModifiers: none for event type "++show ty)
class HasTime a
instance HasTime EKey
instance HasTime EButton
instance HasTime EScroll
instance HasTime EMotion
instance HasTime ECrossing
instance HasTime EProperty
instance HasTime EProximity
{-# LINE 436 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
instance HasTime EOwnerChange
{-# LINE 438 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
type TimeStamp = Word32
currentTime :: TimeStamp
currentTime = 0
{-# LINE 448 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventTime :: HasTime t => EventM t TimeStamp
eventTime = do
ptr <- ask
liftIO $ do
(ty :: Int32) <- peek (castPtr ptr)
{-# LINE 455 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
if ty `elem` [ 8,
{-# LINE 456 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
9] then do
{-# LINE 457 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 458 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 4,
{-# LINE 460 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
5,
{-# LINE 461 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
6,
{-# LINE 462 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
7] then do
{-# LINE 463 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 464 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 31 ] then do
{-# LINE 466 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 467 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 3 ] then do
{-# LINE 469 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 470 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 10,
{-# LINE 472 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
11] then do
{-# LINE 473 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 474 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 16 ] then do
{-# LINE 476 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 477 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
else if ty `elem` [ 20,
{-# LINE 479 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
21] then do
{-# LINE 480 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 481 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
{-# LINE 483 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
else if ty `elem` [ 34 ] then do
{-# LINE 484 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(time :: Word32) <- (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 485 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral time)
{-# LINE 487 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
else error ("eventModifiers: none for event type "++show ty)
eventKeyVal :: EventM EKey KeyVal
eventKeyVal = ask >>= \ptr -> liftIO $ liftM fromIntegral
((\hsc_ptr -> peekByteOff hsc_ptr 28) ptr :: IO Word32)
{-# LINE 493 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventKeyName :: EventM EKey DefaultGlibString
eventKeyName = liftM keyName $ eventKeyVal
eventHardwareKeycode :: EventM EKey KeyCode
eventHardwareKeycode = ask >>= \ptr -> liftIO $ liftM fromIntegral
((\hsc_ptr -> peekByteOff hsc_ptr 48) ptr :: IO Word16)
{-# LINE 502 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventKeyboardGroup :: EventM EKey Word8
eventKeyboardGroup = ask >>= \ptr -> liftIO $ liftM fromIntegral
((\hsc_ptr -> peekByteOff hsc_ptr 50) ptr :: IO Word8)
{-# LINE 507 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventButton :: EventM EButton MouseButton
eventButton = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 52) ptr :: IO Word32)
{-# LINE 512 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventClick :: EventM EButton Click
eventClick = do
ptr <- ask
liftIO $ do
(ty :: Int32) <- peek (castPtr ptr)
{-# LINE 519 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
case ty of
4 -> return SingleClick
{-# LINE 521 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
5 -> return DoubleClick
{-# LINE 522 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
6 -> return TripleClick
{-# LINE 523 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
7 -> return ReleaseClick
{-# LINE 524 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
_ -> error ("eventClick: non for event type "++show ty)
eventScrollDirection :: EventM EScroll ScrollDirection
eventScrollDirection = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 44) ptr :: IO Word32)
{-# LINE 530 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventIsHint :: EventM EMotion Bool
eventIsHint = ask >>= \ptr -> liftIO $ liftM toBool
((\hsc_ptr -> peekByteOff hsc_ptr 52) ptr :: IO Int16)
{-# LINE 536 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 538 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventRequestMotions :: EventM EMotion ()
eventRequestMotions = ask >>= \ptr -> liftIO $
gdk_event_request_motions ptr
foreign import ccall "gdk_event_request_motions"
gdk_event_request_motions :: Ptr EMotion -> IO ()
{-# LINE 561 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventArea :: EventM EExpose Rectangle
eventArea = ask >>= \ptr -> liftIO $
((\hsc_ptr -> peekByteOff hsc_ptr 20) ptr :: IO Rectangle)
{-# LINE 566 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 579 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventVisibilityState :: EventM EVisibility VisibilityState
eventVisibilityState = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 20) ptr :: IO Word32)
{-# LINE 584 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventCrossingMode :: EventM ECrossing CrossingMode
eventCrossingMode = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 72) ptr :: IO Word32)
{-# LINE 589 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventNotifyType :: EventM ECrossing NotifyType
eventNotifyType = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 76) ptr :: IO Word32)
{-# LINE 594 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventCrossingFocus :: EventM ECrossing Bool
eventCrossingFocus = ask >>= \ptr -> liftIO $ liftM toBool
((\hsc_ptr -> peekByteOff hsc_ptr 80) ptr :: IO Int32)
{-# LINE 599 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventFocusIn :: EventM EFocus Bool
eventFocusIn = ask >>= \ptr -> liftIO $ liftM toBool
((\hsc_ptr -> peekByteOff hsc_ptr 18) ptr :: IO Int16)
{-# LINE 604 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventPosition :: EventM EConfigure (Int,Int)
eventPosition = ask >>= \ptr -> liftIO $ do
(x :: Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 609 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 610 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral x, fromIntegral y)
eventSize :: EventM EConfigure (Int,Int)
eventSize = ask >>= \ptr -> liftIO $ do
(x :: Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 28) ptr
{-# LINE 616 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
(y :: Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 617 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
return (fromIntegral x, fromIntegral y)
eventProperty :: EventM EProperty Atom
eventProperty = ask >>= \ptr -> liftIO $ liftM Atom
((\hsc_ptr -> peekByteOff hsc_ptr 24) ptr :: IO (Ptr ()))
{-# LINE 622 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventWindowStateChanged :: EventM EWindowState [WindowState]
eventWindowStateChanged = ask >>= \ptr -> liftIO $ liftM (toFlags . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 20) ptr :: IO Word32)
{-# LINE 627 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventWindowState :: EventM EWindowState [WindowState]
eventWindowState = ask >>= \ptr -> liftIO $ liftM (toFlags . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 24) ptr :: IO Word32)
{-# LINE 632 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 634 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventChangeReason :: EventM EOwnerChange OwnerChange
eventChangeReason = ask >>= \ptr -> liftIO $ liftM (toEnum . fromIntegral)
((\hsc_ptr -> peekByteOff hsc_ptr 32) ptr :: IO Word32)
{-# LINE 638 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventSelection :: EventM EOwnerChange SelectionTag
eventSelection = ask >>= \ptr -> liftIO $ liftM Atom
((\hsc_ptr -> peekByteOff hsc_ptr 40) ptr :: IO (Ptr ()))
{-# LINE 643 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventSelectionTime :: EventM EOwnerChange TimeStamp
eventSelectionTime = ask >>= \ptr -> liftIO $ liftM fromIntegral
((\hsc_ptr -> peekByteOff hsc_ptr 52) ptr :: IO (Word32))
{-# LINE 648 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 649 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 651 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventKeyboardGrab :: EventM EGrabBroken Bool
eventKeyboardGrab = ask >>= \ptr -> liftIO $ liftM toBool
((\hsc_ptr -> peekByteOff hsc_ptr 20) ptr :: IO Int32)
{-# LINE 656 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventImplicit :: EventM EGrabBroken Bool
eventImplicit = ask >>= \ptr -> liftIO $ liftM toBool
((\hsc_ptr -> peekByteOff hsc_ptr 24) ptr :: IO Int32)
{-# LINE 661 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
eventGrabWindow :: EventM EGrabBroken (Maybe DrawWindow)
eventGrabWindow = do
ptr <- ask
liftIO $ maybeNull (makeNewGObject mkDrawWindow) ((\hsc_ptr -> peekByteOff hsc_ptr 8) ptr)
{-# LINE 668 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
{-# LINE 669 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
tryEvent :: EventM any () -> EventM any Bool
tryEvent act = do
ptr <- ask
liftIO $ (runReaderT (act >> return True) ptr)
{-# LINE 678 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
`catches` [ Handler (\ (PatternMatchFail _) -> return False)
, Handler (\ e -> if isUserError e &&
("Pattern" `isPrefixOf` ioeGetErrorString e ||
"mzero" == ioeGetErrorString e)
then return False
else throw e) ]
{-# LINE 694 "Graphics/UI/Gtk/Gdk/EventM.hsc" #-}
stopEvent :: EventM any ()
stopEvent =
liftIO $ throw (PatternMatchFail "EventM.stopEvent called explicitly")