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

module GI.Gtk.Objects.Widget
    ( 

-- * Exported types
    Widget(..)                              ,
    WidgetK                                 ,
    toWidget                                ,
    noWidget                                ,


 -- * Methods
-- ** widgetActivate
    widgetActivate                          ,


-- ** widgetAddAccelerator
    widgetAddAccelerator                    ,


-- ** widgetAddDeviceEvents
    widgetAddDeviceEvents                   ,


-- ** widgetAddEvents
    widgetAddEvents                         ,


-- ** widgetAddMnemonicLabel
    widgetAddMnemonicLabel                  ,


-- ** widgetAddTickCallback
    widgetAddTickCallback                   ,


-- ** widgetCanActivateAccel
    widgetCanActivateAccel                  ,


-- ** widgetChildFocus
    widgetChildFocus                        ,


-- ** widgetChildNotify
    widgetChildNotify                       ,


-- ** widgetClassPath
    widgetClassPath                         ,


-- ** widgetComputeExpand
    widgetComputeExpand                     ,


-- ** widgetCreatePangoContext
    widgetCreatePangoContext                ,


-- ** widgetCreatePangoLayout
    widgetCreatePangoLayout                 ,


-- ** widgetDestroy
    widgetDestroy                           ,


-- ** widgetDestroyed
    widgetDestroyed                         ,


-- ** widgetDeviceIsShadowed
    widgetDeviceIsShadowed                  ,


-- ** widgetDragBegin
    widgetDragBegin                         ,


-- ** widgetDragBeginWithCoordinates
    widgetDragBeginWithCoordinates          ,


-- ** widgetDragCheckThreshold
    widgetDragCheckThreshold                ,


-- ** widgetDragDestAddImageTargets
    widgetDragDestAddImageTargets           ,


-- ** widgetDragDestAddTextTargets
    widgetDragDestAddTextTargets            ,


-- ** widgetDragDestAddUriTargets
    widgetDragDestAddUriTargets             ,


-- ** widgetDragDestFindTarget
    widgetDragDestFindTarget                ,


-- ** widgetDragDestGetTargetList
    widgetDragDestGetTargetList             ,


-- ** widgetDragDestGetTrackMotion
    widgetDragDestGetTrackMotion            ,


-- ** widgetDragDestSet
    widgetDragDestSet                       ,


-- ** widgetDragDestSetProxy
    widgetDragDestSetProxy                  ,


-- ** widgetDragDestSetTargetList
    widgetDragDestSetTargetList             ,


-- ** widgetDragDestSetTrackMotion
    widgetDragDestSetTrackMotion            ,


-- ** widgetDragDestUnset
    widgetDragDestUnset                     ,


-- ** widgetDragGetData
    widgetDragGetData                       ,


-- ** widgetDragHighlight
    widgetDragHighlight                     ,


-- ** widgetDragSourceAddImageTargets
    widgetDragSourceAddImageTargets         ,


-- ** widgetDragSourceAddTextTargets
    widgetDragSourceAddTextTargets          ,


-- ** widgetDragSourceAddUriTargets
    widgetDragSourceAddUriTargets           ,


-- ** widgetDragSourceGetTargetList
    widgetDragSourceGetTargetList           ,


-- ** widgetDragSourceSet
    widgetDragSourceSet                     ,


-- ** widgetDragSourceSetIconGicon
    widgetDragSourceSetIconGicon            ,


-- ** widgetDragSourceSetIconName
    widgetDragSourceSetIconName             ,


-- ** widgetDragSourceSetIconPixbuf
    widgetDragSourceSetIconPixbuf           ,


-- ** widgetDragSourceSetIconStock
    widgetDragSourceSetIconStock            ,


-- ** widgetDragSourceSetTargetList
    widgetDragSourceSetTargetList           ,


-- ** widgetDragSourceUnset
    widgetDragSourceUnset                   ,


-- ** widgetDragUnhighlight
    widgetDragUnhighlight                   ,


-- ** widgetDraw
    widgetDraw                              ,


-- ** widgetEnsureStyle
    widgetEnsureStyle                       ,


-- ** widgetErrorBell
    widgetErrorBell                         ,


-- ** widgetEvent
    widgetEvent                             ,


-- ** widgetFreezeChildNotify
    widgetFreezeChildNotify                 ,


-- ** widgetGetAccessible
    widgetGetAccessible                     ,


-- ** widgetGetActionGroup
    widgetGetActionGroup                    ,


-- ** widgetGetAllocatedBaseline
    widgetGetAllocatedBaseline              ,


-- ** widgetGetAllocatedHeight
    widgetGetAllocatedHeight                ,


-- ** widgetGetAllocatedWidth
    widgetGetAllocatedWidth                 ,


-- ** widgetGetAllocation
    widgetGetAllocation                     ,


-- ** widgetGetAncestor
    widgetGetAncestor                       ,


-- ** widgetGetAppPaintable
    widgetGetAppPaintable                   ,


-- ** widgetGetCanDefault
    widgetGetCanDefault                     ,


-- ** widgetGetCanFocus
    widgetGetCanFocus                       ,


-- ** widgetGetChildRequisition
    widgetGetChildRequisition               ,


-- ** widgetGetChildVisible
    widgetGetChildVisible                   ,


-- ** widgetGetClip
    widgetGetClip                           ,


-- ** widgetGetClipboard
    widgetGetClipboard                      ,


-- ** widgetGetCompositeName
    widgetGetCompositeName                  ,


-- ** widgetGetDefaultDirection
    widgetGetDefaultDirection               ,


-- ** widgetGetDefaultStyle
    widgetGetDefaultStyle                   ,


-- ** widgetGetDeviceEnabled
    widgetGetDeviceEnabled                  ,


-- ** widgetGetDeviceEvents
    widgetGetDeviceEvents                   ,


-- ** widgetGetDirection
    widgetGetDirection                      ,


-- ** widgetGetDisplay
    widgetGetDisplay                        ,


-- ** widgetGetDoubleBuffered
    widgetGetDoubleBuffered                 ,


-- ** widgetGetEvents
    widgetGetEvents                         ,


-- ** widgetGetFrameClock
    widgetGetFrameClock                     ,


-- ** widgetGetHalign
    widgetGetHalign                         ,


-- ** widgetGetHasTooltip
    widgetGetHasTooltip                     ,


-- ** widgetGetHasWindow
    widgetGetHasWindow                      ,


-- ** widgetGetHexpand
    widgetGetHexpand                        ,


-- ** widgetGetHexpandSet
    widgetGetHexpandSet                     ,


-- ** widgetGetMapped
    widgetGetMapped                         ,


-- ** widgetGetMarginBottom
    widgetGetMarginBottom                   ,


-- ** widgetGetMarginEnd
    widgetGetMarginEnd                      ,


-- ** widgetGetMarginLeft
    widgetGetMarginLeft                     ,


-- ** widgetGetMarginRight
    widgetGetMarginRight                    ,


-- ** widgetGetMarginStart
    widgetGetMarginStart                    ,


-- ** widgetGetMarginTop
    widgetGetMarginTop                      ,


-- ** widgetGetModifierMask
    widgetGetModifierMask                   ,


-- ** widgetGetModifierStyle
    widgetGetModifierStyle                  ,


-- ** widgetGetName
    widgetGetName                           ,


-- ** widgetGetNoShowAll
    widgetGetNoShowAll                      ,


-- ** widgetGetOpacity
    widgetGetOpacity                        ,


-- ** widgetGetPangoContext
    widgetGetPangoContext                   ,


-- ** widgetGetParent
    widgetGetParent                         ,


-- ** widgetGetParentWindow
    widgetGetParentWindow                   ,


-- ** widgetGetPath
    widgetGetPath                           ,


-- ** widgetGetPointer
    widgetGetPointer                        ,


-- ** widgetGetPreferredHeight
    widgetGetPreferredHeight                ,


-- ** widgetGetPreferredHeightAndBaselineForWidth
    widgetGetPreferredHeightAndBaselineForWidth,


-- ** widgetGetPreferredHeightForWidth
    widgetGetPreferredHeightForWidth        ,


-- ** widgetGetPreferredSize
    widgetGetPreferredSize                  ,


-- ** widgetGetPreferredWidth
    widgetGetPreferredWidth                 ,


-- ** widgetGetPreferredWidthForHeight
    widgetGetPreferredWidthForHeight        ,


-- ** widgetGetRealized
    widgetGetRealized                       ,


-- ** widgetGetReceivesDefault
    widgetGetReceivesDefault                ,


-- ** widgetGetRequestMode
    widgetGetRequestMode                    ,


-- ** widgetGetRequisition
    widgetGetRequisition                    ,


-- ** widgetGetRootWindow
    widgetGetRootWindow                     ,


-- ** widgetGetScaleFactor
    widgetGetScaleFactor                    ,


-- ** widgetGetScreen
    widgetGetScreen                         ,


-- ** widgetGetSensitive
    widgetGetSensitive                      ,


-- ** widgetGetSettings
    widgetGetSettings                       ,


-- ** widgetGetSizeRequest
    widgetGetSizeRequest                    ,


-- ** widgetGetState
    widgetGetState                          ,


-- ** widgetGetStateFlags
    widgetGetStateFlags                     ,


-- ** widgetGetStyle
    widgetGetStyle                          ,


-- ** widgetGetStyleContext
    widgetGetStyleContext                   ,


-- ** widgetGetSupportMultidevice
    widgetGetSupportMultidevice             ,


-- ** widgetGetTemplateChild
    widgetGetTemplateChild                  ,


-- ** widgetGetTooltipMarkup
    widgetGetTooltipMarkup                  ,


-- ** widgetGetTooltipText
    widgetGetTooltipText                    ,


-- ** widgetGetTooltipWindow
    widgetGetTooltipWindow                  ,


-- ** widgetGetToplevel
    widgetGetToplevel                       ,


-- ** widgetGetValign
    widgetGetValign                         ,


-- ** widgetGetValignWithBaseline
    widgetGetValignWithBaseline             ,


-- ** widgetGetVexpand
    widgetGetVexpand                        ,


-- ** widgetGetVexpandSet
    widgetGetVexpandSet                     ,


-- ** widgetGetVisible
    widgetGetVisible                        ,


-- ** widgetGetVisual
    widgetGetVisual                         ,


-- ** widgetGetWindow
    widgetGetWindow                         ,


-- ** widgetGrabAdd
    widgetGrabAdd                           ,


-- ** widgetGrabDefault
    widgetGrabDefault                       ,


-- ** widgetGrabFocus
    widgetGrabFocus                         ,


-- ** widgetGrabRemove
    widgetGrabRemove                        ,


-- ** widgetHasDefault
    widgetHasDefault                        ,


-- ** widgetHasFocus
    widgetHasFocus                          ,


-- ** widgetHasGrab
    widgetHasGrab                           ,


-- ** widgetHasRcStyle
    widgetHasRcStyle                        ,


-- ** widgetHasScreen
    widgetHasScreen                         ,


-- ** widgetHasVisibleFocus
    widgetHasVisibleFocus                   ,


-- ** widgetHide
    widgetHide                              ,


-- ** widgetHideOnDelete
    widgetHideOnDelete                      ,


-- ** widgetInDestruction
    widgetInDestruction                     ,


-- ** widgetInitTemplate
    widgetInitTemplate                      ,


-- ** widgetInputShapeCombineRegion
    widgetInputShapeCombineRegion           ,


-- ** widgetInsertActionGroup
    widgetInsertActionGroup                 ,


-- ** widgetIntersect
    widgetIntersect                         ,


-- ** widgetIsAncestor
    widgetIsAncestor                        ,


-- ** widgetIsComposited
    widgetIsComposited                      ,


-- ** widgetIsDrawable
    widgetIsDrawable                        ,


-- ** widgetIsFocus
    widgetIsFocus                           ,


-- ** widgetIsSensitive
    widgetIsSensitive                       ,


-- ** widgetIsToplevel
    widgetIsToplevel                        ,


-- ** widgetIsVisible
    widgetIsVisible                         ,


-- ** widgetKeynavFailed
    widgetKeynavFailed                      ,


-- ** widgetListAccelClosures
    widgetListAccelClosures                 ,


-- ** widgetListActionPrefixes
    widgetListActionPrefixes                ,


-- ** widgetListMnemonicLabels
    widgetListMnemonicLabels                ,


-- ** widgetMap
    widgetMap                               ,


-- ** widgetMnemonicActivate
    widgetMnemonicActivate                  ,


-- ** widgetModifyBase
    widgetModifyBase                        ,


-- ** widgetModifyBg
    widgetModifyBg                          ,


-- ** widgetModifyCursor
    widgetModifyCursor                      ,


-- ** widgetModifyFg
    widgetModifyFg                          ,


-- ** widgetModifyFont
    widgetModifyFont                        ,


-- ** widgetModifyStyle
    widgetModifyStyle                       ,


-- ** widgetModifyText
    widgetModifyText                        ,


-- ** widgetOverrideBackgroundColor
    widgetOverrideBackgroundColor           ,


-- ** widgetOverrideColor
    widgetOverrideColor                     ,


-- ** widgetOverrideCursor
    widgetOverrideCursor                    ,


-- ** widgetOverrideFont
    widgetOverrideFont                      ,


-- ** widgetOverrideSymbolicColor
    widgetOverrideSymbolicColor             ,


-- ** widgetPath
    widgetPath                              ,


-- ** widgetPopCompositeChild
    widgetPopCompositeChild                 ,


-- ** widgetPushCompositeChild
    widgetPushCompositeChild                ,


-- ** widgetQueueComputeExpand
    widgetQueueComputeExpand                ,


-- ** widgetQueueDraw
    widgetQueueDraw                         ,


-- ** widgetQueueDrawArea
    widgetQueueDrawArea                     ,


-- ** widgetQueueDrawRegion
    widgetQueueDrawRegion                   ,


-- ** widgetQueueResize
    widgetQueueResize                       ,


-- ** widgetQueueResizeNoRedraw
    widgetQueueResizeNoRedraw               ,


-- ** widgetRealize
    widgetRealize                           ,


-- ** widgetRegionIntersect
    widgetRegionIntersect                   ,


-- ** widgetRegisterWindow
    widgetRegisterWindow                    ,


-- ** widgetRemoveAccelerator
    widgetRemoveAccelerator                 ,


-- ** widgetRemoveMnemonicLabel
    widgetRemoveMnemonicLabel               ,


-- ** widgetRemoveTickCallback
    widgetRemoveTickCallback                ,


-- ** widgetRenderIcon
    widgetRenderIcon                        ,


-- ** widgetRenderIconPixbuf
    widgetRenderIconPixbuf                  ,


-- ** widgetReparent
    widgetReparent                          ,


-- ** widgetResetRcStyles
    widgetResetRcStyles                     ,


-- ** widgetResetStyle
    widgetResetStyle                        ,


-- ** widgetSendExpose
    widgetSendExpose                        ,


-- ** widgetSendFocusChange
    widgetSendFocusChange                   ,


-- ** widgetSetAccelPath
    widgetSetAccelPath                      ,


-- ** widgetSetAllocation
    widgetSetAllocation                     ,


-- ** widgetSetAppPaintable
    widgetSetAppPaintable                   ,


-- ** widgetSetCanDefault
    widgetSetCanDefault                     ,


-- ** widgetSetCanFocus
    widgetSetCanFocus                       ,


-- ** widgetSetChildVisible
    widgetSetChildVisible                   ,


-- ** widgetSetClip
    widgetSetClip                           ,


-- ** widgetSetCompositeName
    widgetSetCompositeName                  ,


-- ** widgetSetDefaultDirection
    widgetSetDefaultDirection               ,


-- ** widgetSetDeviceEnabled
    widgetSetDeviceEnabled                  ,


-- ** widgetSetDeviceEvents
    widgetSetDeviceEvents                   ,


-- ** widgetSetDirection
    widgetSetDirection                      ,


-- ** widgetSetDoubleBuffered
    widgetSetDoubleBuffered                 ,


-- ** widgetSetEvents
    widgetSetEvents                         ,


-- ** widgetSetHalign
    widgetSetHalign                         ,


-- ** widgetSetHasTooltip
    widgetSetHasTooltip                     ,


-- ** widgetSetHasWindow
    widgetSetHasWindow                      ,


-- ** widgetSetHexpand
    widgetSetHexpand                        ,


-- ** widgetSetHexpandSet
    widgetSetHexpandSet                     ,


-- ** widgetSetMapped
    widgetSetMapped                         ,


-- ** widgetSetMarginBottom
    widgetSetMarginBottom                   ,


-- ** widgetSetMarginEnd
    widgetSetMarginEnd                      ,


-- ** widgetSetMarginLeft
    widgetSetMarginLeft                     ,


-- ** widgetSetMarginRight
    widgetSetMarginRight                    ,


-- ** widgetSetMarginStart
    widgetSetMarginStart                    ,


-- ** widgetSetMarginTop
    widgetSetMarginTop                      ,


-- ** widgetSetName
    widgetSetName                           ,


-- ** widgetSetNoShowAll
    widgetSetNoShowAll                      ,


-- ** widgetSetOpacity
    widgetSetOpacity                        ,


-- ** widgetSetParent
    widgetSetParent                         ,


-- ** widgetSetParentWindow
    widgetSetParentWindow                   ,


-- ** widgetSetRealized
    widgetSetRealized                       ,


-- ** widgetSetReceivesDefault
    widgetSetReceivesDefault                ,


-- ** widgetSetRedrawOnAllocate
    widgetSetRedrawOnAllocate               ,


-- ** widgetSetSensitive
    widgetSetSensitive                      ,


-- ** widgetSetSizeRequest
    widgetSetSizeRequest                    ,


-- ** widgetSetState
    widgetSetState                          ,


-- ** widgetSetStateFlags
    widgetSetStateFlags                     ,


-- ** widgetSetStyle
    widgetSetStyle                          ,


-- ** widgetSetSupportMultidevice
    widgetSetSupportMultidevice             ,


-- ** widgetSetTooltipMarkup
    widgetSetTooltipMarkup                  ,


-- ** widgetSetTooltipText
    widgetSetTooltipText                    ,


-- ** widgetSetTooltipWindow
    widgetSetTooltipWindow                  ,


-- ** widgetSetValign
    widgetSetValign                         ,


-- ** widgetSetVexpand
    widgetSetVexpand                        ,


-- ** widgetSetVexpandSet
    widgetSetVexpandSet                     ,


-- ** widgetSetVisible
    widgetSetVisible                        ,


-- ** widgetSetVisual
    widgetSetVisual                         ,


-- ** widgetSetWindow
    widgetSetWindow                         ,


-- ** widgetShapeCombineRegion
    widgetShapeCombineRegion                ,


-- ** widgetShow
    widgetShow                              ,


-- ** widgetShowAll
    widgetShowAll                           ,


-- ** widgetShowNow
    widgetShowNow                           ,


-- ** widgetSizeAllocate
    widgetSizeAllocate                      ,


-- ** widgetSizeAllocateWithBaseline
    widgetSizeAllocateWithBaseline          ,


-- ** widgetSizeRequest
    widgetSizeRequest                       ,


-- ** widgetStyleAttach
    widgetStyleAttach                       ,


-- ** widgetStyleGetProperty
    widgetStyleGetProperty                  ,


-- ** widgetThawChildNotify
    widgetThawChildNotify                   ,


-- ** widgetTranslateCoordinates
    widgetTranslateCoordinates              ,


-- ** widgetTriggerTooltipQuery
    widgetTriggerTooltipQuery               ,


-- ** widgetUnmap
    widgetUnmap                             ,


-- ** widgetUnparent
    widgetUnparent                          ,


-- ** widgetUnrealize
    widgetUnrealize                         ,


-- ** widgetUnregisterWindow
    widgetUnregisterWindow                  ,


-- ** widgetUnsetStateFlags
    widgetUnsetStateFlags                   ,




 -- * Properties
-- ** AppPaintable
    WidgetAppPaintablePropertyInfo          ,
    constructWidgetAppPaintable             ,
    getWidgetAppPaintable                   ,
    setWidgetAppPaintable                   ,


-- ** CanDefault
    WidgetCanDefaultPropertyInfo            ,
    constructWidgetCanDefault               ,
    getWidgetCanDefault                     ,
    setWidgetCanDefault                     ,


-- ** CanFocus
    WidgetCanFocusPropertyInfo              ,
    constructWidgetCanFocus                 ,
    getWidgetCanFocus                       ,
    setWidgetCanFocus                       ,


-- ** CompositeChild
    WidgetCompositeChildPropertyInfo        ,
    getWidgetCompositeChild                 ,


-- ** DoubleBuffered
    WidgetDoubleBufferedPropertyInfo        ,
    constructWidgetDoubleBuffered           ,
    getWidgetDoubleBuffered                 ,
    setWidgetDoubleBuffered                 ,


-- ** Events
    WidgetEventsPropertyInfo                ,
    constructWidgetEvents                   ,
    getWidgetEvents                         ,
    setWidgetEvents                         ,


-- ** Expand
    WidgetExpandPropertyInfo                ,
    constructWidgetExpand                   ,
    getWidgetExpand                         ,
    setWidgetExpand                         ,


-- ** Halign
    WidgetHalignPropertyInfo                ,
    constructWidgetHalign                   ,
    getWidgetHalign                         ,
    setWidgetHalign                         ,


-- ** HasDefault
    WidgetHasDefaultPropertyInfo            ,
    constructWidgetHasDefault               ,
    getWidgetHasDefault                     ,
    setWidgetHasDefault                     ,


-- ** HasFocus
    WidgetHasFocusPropertyInfo              ,
    constructWidgetHasFocus                 ,
    getWidgetHasFocus                       ,
    setWidgetHasFocus                       ,


-- ** HasTooltip
    WidgetHasTooltipPropertyInfo            ,
    constructWidgetHasTooltip               ,
    getWidgetHasTooltip                     ,
    setWidgetHasTooltip                     ,


-- ** HeightRequest
    WidgetHeightRequestPropertyInfo         ,
    constructWidgetHeightRequest            ,
    getWidgetHeightRequest                  ,
    setWidgetHeightRequest                  ,


-- ** Hexpand
    WidgetHexpandPropertyInfo               ,
    constructWidgetHexpand                  ,
    getWidgetHexpand                        ,
    setWidgetHexpand                        ,


-- ** HexpandSet
    WidgetHexpandSetPropertyInfo            ,
    constructWidgetHexpandSet               ,
    getWidgetHexpandSet                     ,
    setWidgetHexpandSet                     ,


-- ** IsFocus
    WidgetIsFocusPropertyInfo               ,
    constructWidgetIsFocus                  ,
    getWidgetIsFocus                        ,
    setWidgetIsFocus                        ,


-- ** Margin
    WidgetMarginPropertyInfo                ,
    constructWidgetMargin                   ,
    getWidgetMargin                         ,
    setWidgetMargin                         ,


-- ** MarginBottom
    WidgetMarginBottomPropertyInfo          ,
    constructWidgetMarginBottom             ,
    getWidgetMarginBottom                   ,
    setWidgetMarginBottom                   ,


-- ** MarginEnd
    WidgetMarginEndPropertyInfo             ,
    constructWidgetMarginEnd                ,
    getWidgetMarginEnd                      ,
    setWidgetMarginEnd                      ,


-- ** MarginLeft
    WidgetMarginLeftPropertyInfo            ,
    constructWidgetMarginLeft               ,
    getWidgetMarginLeft                     ,
    setWidgetMarginLeft                     ,


-- ** MarginRight
    WidgetMarginRightPropertyInfo           ,
    constructWidgetMarginRight              ,
    getWidgetMarginRight                    ,
    setWidgetMarginRight                    ,


-- ** MarginStart
    WidgetMarginStartPropertyInfo           ,
    constructWidgetMarginStart              ,
    getWidgetMarginStart                    ,
    setWidgetMarginStart                    ,


-- ** MarginTop
    WidgetMarginTopPropertyInfo             ,
    constructWidgetMarginTop                ,
    getWidgetMarginTop                      ,
    setWidgetMarginTop                      ,


-- ** Name
    WidgetNamePropertyInfo                  ,
    constructWidgetName                     ,
    getWidgetName                           ,
    setWidgetName                           ,


-- ** NoShowAll
    WidgetNoShowAllPropertyInfo             ,
    constructWidgetNoShowAll                ,
    getWidgetNoShowAll                      ,
    setWidgetNoShowAll                      ,


-- ** Opacity
    WidgetOpacityPropertyInfo               ,
    constructWidgetOpacity                  ,
    getWidgetOpacity                        ,
    setWidgetOpacity                        ,


-- ** Parent
    WidgetParentPropertyInfo                ,
    constructWidgetParent                   ,
    getWidgetParent                         ,
    setWidgetParent                         ,


-- ** ReceivesDefault
    WidgetReceivesDefaultPropertyInfo       ,
    constructWidgetReceivesDefault          ,
    getWidgetReceivesDefault                ,
    setWidgetReceivesDefault                ,


-- ** ScaleFactor
    WidgetScaleFactorPropertyInfo           ,
    getWidgetScaleFactor                    ,


-- ** Sensitive
    WidgetSensitivePropertyInfo             ,
    constructWidgetSensitive                ,
    getWidgetSensitive                      ,
    setWidgetSensitive                      ,


-- ** Style
    WidgetStylePropertyInfo                 ,
    constructWidgetStyle                    ,
    getWidgetStyle                          ,
    setWidgetStyle                          ,


-- ** TooltipMarkup
    WidgetTooltipMarkupPropertyInfo         ,
    constructWidgetTooltipMarkup            ,
    getWidgetTooltipMarkup                  ,
    setWidgetTooltipMarkup                  ,


-- ** TooltipText
    WidgetTooltipTextPropertyInfo           ,
    constructWidgetTooltipText              ,
    getWidgetTooltipText                    ,
    setWidgetTooltipText                    ,


-- ** Valign
    WidgetValignPropertyInfo                ,
    constructWidgetValign                   ,
    getWidgetValign                         ,
    setWidgetValign                         ,


-- ** Vexpand
    WidgetVexpandPropertyInfo               ,
    constructWidgetVexpand                  ,
    getWidgetVexpand                        ,
    setWidgetVexpand                        ,


-- ** VexpandSet
    WidgetVexpandSetPropertyInfo            ,
    constructWidgetVexpandSet               ,
    getWidgetVexpandSet                     ,
    setWidgetVexpandSet                     ,


-- ** Visible
    WidgetVisiblePropertyInfo               ,
    constructWidgetVisible                  ,
    getWidgetVisible                        ,
    setWidgetVisible                        ,


-- ** WidthRequest
    WidgetWidthRequestPropertyInfo          ,
    constructWidgetWidthRequest             ,
    getWidgetWidthRequest                   ,
    setWidgetWidthRequest                   ,


-- ** Window
    WidgetWindowPropertyInfo                ,
    getWidgetWindow                         ,




 -- * Signals
-- ** AccelClosuresChanged
    WidgetAccelClosuresChangedCallback      ,
    WidgetAccelClosuresChangedCallbackC     ,
    WidgetAccelClosuresChangedSignalInfo    ,
    afterWidgetAccelClosuresChanged         ,
    mkWidgetAccelClosuresChangedCallback    ,
    noWidgetAccelClosuresChangedCallback    ,
    onWidgetAccelClosuresChanged            ,
    widgetAccelClosuresChangedCallbackWrapper,
    widgetAccelClosuresChangedClosure       ,


-- ** ButtonPressEvent
    WidgetButtonPressEventCallback          ,
    WidgetButtonPressEventCallbackC         ,
    WidgetButtonPressEventSignalInfo        ,
    afterWidgetButtonPressEvent             ,
    mkWidgetButtonPressEventCallback        ,
    noWidgetButtonPressEventCallback        ,
    onWidgetButtonPressEvent                ,
    widgetButtonPressEventCallbackWrapper   ,
    widgetButtonPressEventClosure           ,


-- ** ButtonReleaseEvent
    WidgetButtonReleaseEventCallback        ,
    WidgetButtonReleaseEventCallbackC       ,
    WidgetButtonReleaseEventSignalInfo      ,
    afterWidgetButtonReleaseEvent           ,
    mkWidgetButtonReleaseEventCallback      ,
    noWidgetButtonReleaseEventCallback      ,
    onWidgetButtonReleaseEvent              ,
    widgetButtonReleaseEventCallbackWrapper ,
    widgetButtonReleaseEventClosure         ,


-- ** CanActivateAccel
    WidgetCanActivateAccelCallback          ,
    WidgetCanActivateAccelCallbackC         ,
    WidgetCanActivateAccelSignalInfo        ,
    afterWidgetCanActivateAccel             ,
    mkWidgetCanActivateAccelCallback        ,
    noWidgetCanActivateAccelCallback        ,
    onWidgetCanActivateAccel                ,
    widgetCanActivateAccelCallbackWrapper   ,
    widgetCanActivateAccelClosure           ,


-- ** ChildNotify
    WidgetChildNotifyCallback               ,
    WidgetChildNotifyCallbackC              ,
    WidgetChildNotifySignalInfo             ,
    afterWidgetChildNotify                  ,
    mkWidgetChildNotifyCallback             ,
    noWidgetChildNotifyCallback             ,
    onWidgetChildNotify                     ,
    widgetChildNotifyCallbackWrapper        ,
    widgetChildNotifyClosure                ,


-- ** CompositedChanged
    WidgetCompositedChangedCallback         ,
    WidgetCompositedChangedCallbackC        ,
    WidgetCompositedChangedSignalInfo       ,
    afterWidgetCompositedChanged            ,
    mkWidgetCompositedChangedCallback       ,
    noWidgetCompositedChangedCallback       ,
    onWidgetCompositedChanged               ,
    widgetCompositedChangedCallbackWrapper  ,
    widgetCompositedChangedClosure          ,


-- ** ConfigureEvent
    WidgetConfigureEventCallback            ,
    WidgetConfigureEventCallbackC           ,
    WidgetConfigureEventSignalInfo          ,
    afterWidgetConfigureEvent               ,
    mkWidgetConfigureEventCallback          ,
    noWidgetConfigureEventCallback          ,
    onWidgetConfigureEvent                  ,
    widgetConfigureEventCallbackWrapper     ,
    widgetConfigureEventClosure             ,


-- ** DamageEvent
    WidgetDamageEventCallback               ,
    WidgetDamageEventCallbackC              ,
    WidgetDamageEventSignalInfo             ,
    afterWidgetDamageEvent                  ,
    mkWidgetDamageEventCallback             ,
    noWidgetDamageEventCallback             ,
    onWidgetDamageEvent                     ,
    widgetDamageEventCallbackWrapper        ,
    widgetDamageEventClosure                ,


-- ** DeleteEvent
    WidgetDeleteEventCallback               ,
    WidgetDeleteEventCallbackC              ,
    WidgetDeleteEventSignalInfo             ,
    afterWidgetDeleteEvent                  ,
    mkWidgetDeleteEventCallback             ,
    noWidgetDeleteEventCallback             ,
    onWidgetDeleteEvent                     ,
    widgetDeleteEventCallbackWrapper        ,
    widgetDeleteEventClosure                ,


-- ** Destroy
    WidgetDestroyCallback                   ,
    WidgetDestroyCallbackC                  ,
    WidgetDestroySignalInfo                 ,
    afterWidgetDestroy                      ,
    mkWidgetDestroyCallback                 ,
    noWidgetDestroyCallback                 ,
    onWidgetDestroy                         ,
    widgetDestroyCallbackWrapper            ,
    widgetDestroyClosure                    ,


-- ** DestroyEvent
    WidgetDestroyEventCallback              ,
    WidgetDestroyEventCallbackC             ,
    WidgetDestroyEventSignalInfo            ,
    afterWidgetDestroyEvent                 ,
    mkWidgetDestroyEventCallback            ,
    noWidgetDestroyEventCallback            ,
    onWidgetDestroyEvent                    ,
    widgetDestroyEventCallbackWrapper       ,
    widgetDestroyEventClosure               ,


-- ** DirectionChanged
    WidgetDirectionChangedCallback          ,
    WidgetDirectionChangedCallbackC         ,
    WidgetDirectionChangedSignalInfo        ,
    afterWidgetDirectionChanged             ,
    mkWidgetDirectionChangedCallback        ,
    noWidgetDirectionChangedCallback        ,
    onWidgetDirectionChanged                ,
    widgetDirectionChangedCallbackWrapper   ,
    widgetDirectionChangedClosure           ,


-- ** DragBegin
    WidgetDragBeginCallback                 ,
    WidgetDragBeginCallbackC                ,
    WidgetDragBeginSignalInfo               ,
    afterWidgetDragBegin                    ,
    mkWidgetDragBeginCallback               ,
    noWidgetDragBeginCallback               ,
    onWidgetDragBegin                       ,
    widgetDragBeginCallbackWrapper          ,
    widgetDragBeginClosure                  ,


-- ** DragDataDelete
    WidgetDragDataDeleteCallback            ,
    WidgetDragDataDeleteCallbackC           ,
    WidgetDragDataDeleteSignalInfo          ,
    afterWidgetDragDataDelete               ,
    mkWidgetDragDataDeleteCallback          ,
    noWidgetDragDataDeleteCallback          ,
    onWidgetDragDataDelete                  ,
    widgetDragDataDeleteCallbackWrapper     ,
    widgetDragDataDeleteClosure             ,


-- ** DragDataGet
    WidgetDragDataGetCallback               ,
    WidgetDragDataGetCallbackC              ,
    WidgetDragDataGetSignalInfo             ,
    afterWidgetDragDataGet                  ,
    mkWidgetDragDataGetCallback             ,
    noWidgetDragDataGetCallback             ,
    onWidgetDragDataGet                     ,
    widgetDragDataGetCallbackWrapper        ,
    widgetDragDataGetClosure                ,


-- ** DragDataReceived
    WidgetDragDataReceivedCallback          ,
    WidgetDragDataReceivedCallbackC         ,
    WidgetDragDataReceivedSignalInfo        ,
    afterWidgetDragDataReceived             ,
    mkWidgetDragDataReceivedCallback        ,
    noWidgetDragDataReceivedCallback        ,
    onWidgetDragDataReceived                ,
    widgetDragDataReceivedCallbackWrapper   ,
    widgetDragDataReceivedClosure           ,


-- ** DragDrop
    WidgetDragDropCallback                  ,
    WidgetDragDropCallbackC                 ,
    WidgetDragDropSignalInfo                ,
    afterWidgetDragDrop                     ,
    mkWidgetDragDropCallback                ,
    noWidgetDragDropCallback                ,
    onWidgetDragDrop                        ,
    widgetDragDropCallbackWrapper           ,
    widgetDragDropClosure                   ,


-- ** DragEnd
    WidgetDragEndCallback                   ,
    WidgetDragEndCallbackC                  ,
    WidgetDragEndSignalInfo                 ,
    afterWidgetDragEnd                      ,
    mkWidgetDragEndCallback                 ,
    noWidgetDragEndCallback                 ,
    onWidgetDragEnd                         ,
    widgetDragEndCallbackWrapper            ,
    widgetDragEndClosure                    ,


-- ** DragFailed
    WidgetDragFailedCallback                ,
    WidgetDragFailedCallbackC               ,
    WidgetDragFailedSignalInfo              ,
    afterWidgetDragFailed                   ,
    mkWidgetDragFailedCallback              ,
    noWidgetDragFailedCallback              ,
    onWidgetDragFailed                      ,
    widgetDragFailedCallbackWrapper         ,
    widgetDragFailedClosure                 ,


-- ** DragLeave
    WidgetDragLeaveCallback                 ,
    WidgetDragLeaveCallbackC                ,
    WidgetDragLeaveSignalInfo               ,
    afterWidgetDragLeave                    ,
    mkWidgetDragLeaveCallback               ,
    noWidgetDragLeaveCallback               ,
    onWidgetDragLeave                       ,
    widgetDragLeaveCallbackWrapper          ,
    widgetDragLeaveClosure                  ,


-- ** DragMotion
    WidgetDragMotionCallback                ,
    WidgetDragMotionCallbackC               ,
    WidgetDragMotionSignalInfo              ,
    afterWidgetDragMotion                   ,
    mkWidgetDragMotionCallback              ,
    noWidgetDragMotionCallback              ,
    onWidgetDragMotion                      ,
    widgetDragMotionCallbackWrapper         ,
    widgetDragMotionClosure                 ,


-- ** Draw
    WidgetDrawCallback                      ,
    WidgetDrawCallbackC                     ,
    WidgetDrawSignalInfo                    ,
    afterWidgetDraw                         ,
    mkWidgetDrawCallback                    ,
    noWidgetDrawCallback                    ,
    onWidgetDraw                            ,
    widgetDrawCallbackWrapper               ,
    widgetDrawClosure                       ,


-- ** EnterNotifyEvent
    WidgetEnterNotifyEventCallback          ,
    WidgetEnterNotifyEventCallbackC         ,
    WidgetEnterNotifyEventSignalInfo        ,
    afterWidgetEnterNotifyEvent             ,
    mkWidgetEnterNotifyEventCallback        ,
    noWidgetEnterNotifyEventCallback        ,
    onWidgetEnterNotifyEvent                ,
    widgetEnterNotifyEventCallbackWrapper   ,
    widgetEnterNotifyEventClosure           ,


-- ** Event
    WidgetEventCallback                     ,
    WidgetEventCallbackC                    ,
    WidgetEventSignalInfo                   ,
    afterWidgetEvent                        ,
    mkWidgetEventCallback                   ,
    noWidgetEventCallback                   ,
    onWidgetEvent                           ,
    widgetEventCallbackWrapper              ,
    widgetEventClosure                      ,


-- ** EventAfter
    WidgetEventAfterCallback                ,
    WidgetEventAfterCallbackC               ,
    WidgetEventAfterSignalInfo              ,
    afterWidgetEventAfter                   ,
    mkWidgetEventAfterCallback              ,
    noWidgetEventAfterCallback              ,
    onWidgetEventAfter                      ,
    widgetEventAfterCallbackWrapper         ,
    widgetEventAfterClosure                 ,


-- ** Focus
    WidgetFocusCallback                     ,
    WidgetFocusCallbackC                    ,
    WidgetFocusSignalInfo                   ,
    afterWidgetFocus                        ,
    mkWidgetFocusCallback                   ,
    noWidgetFocusCallback                   ,
    onWidgetFocus                           ,
    widgetFocusCallbackWrapper              ,
    widgetFocusClosure                      ,


-- ** FocusInEvent
    WidgetFocusInEventCallback              ,
    WidgetFocusInEventCallbackC             ,
    WidgetFocusInEventSignalInfo            ,
    afterWidgetFocusInEvent                 ,
    mkWidgetFocusInEventCallback            ,
    noWidgetFocusInEventCallback            ,
    onWidgetFocusInEvent                    ,
    widgetFocusInEventCallbackWrapper       ,
    widgetFocusInEventClosure               ,


-- ** FocusOutEvent
    WidgetFocusOutEventCallback             ,
    WidgetFocusOutEventCallbackC            ,
    WidgetFocusOutEventSignalInfo           ,
    afterWidgetFocusOutEvent                ,
    mkWidgetFocusOutEventCallback           ,
    noWidgetFocusOutEventCallback           ,
    onWidgetFocusOutEvent                   ,
    widgetFocusOutEventCallbackWrapper      ,
    widgetFocusOutEventClosure              ,


-- ** GrabBrokenEvent
    WidgetGrabBrokenEventCallback           ,
    WidgetGrabBrokenEventCallbackC          ,
    WidgetGrabBrokenEventSignalInfo         ,
    afterWidgetGrabBrokenEvent              ,
    mkWidgetGrabBrokenEventCallback         ,
    noWidgetGrabBrokenEventCallback         ,
    onWidgetGrabBrokenEvent                 ,
    widgetGrabBrokenEventCallbackWrapper    ,
    widgetGrabBrokenEventClosure            ,


-- ** GrabFocus
    WidgetGrabFocusCallback                 ,
    WidgetGrabFocusCallbackC                ,
    WidgetGrabFocusSignalInfo               ,
    afterWidgetGrabFocus                    ,
    mkWidgetGrabFocusCallback               ,
    noWidgetGrabFocusCallback               ,
    onWidgetGrabFocus                       ,
    widgetGrabFocusCallbackWrapper          ,
    widgetGrabFocusClosure                  ,


-- ** GrabNotify
    WidgetGrabNotifyCallback                ,
    WidgetGrabNotifyCallbackC               ,
    WidgetGrabNotifySignalInfo              ,
    afterWidgetGrabNotify                   ,
    mkWidgetGrabNotifyCallback              ,
    noWidgetGrabNotifyCallback              ,
    onWidgetGrabNotify                      ,
    widgetGrabNotifyCallbackWrapper         ,
    widgetGrabNotifyClosure                 ,


-- ** Hide
    WidgetHideCallback                      ,
    WidgetHideCallbackC                     ,
    WidgetHideSignalInfo                    ,
    afterWidgetHide                         ,
    mkWidgetHideCallback                    ,
    noWidgetHideCallback                    ,
    onWidgetHide                            ,
    widgetHideCallbackWrapper               ,
    widgetHideClosure                       ,


-- ** HierarchyChanged
    WidgetHierarchyChangedCallback          ,
    WidgetHierarchyChangedCallbackC         ,
    WidgetHierarchyChangedSignalInfo        ,
    afterWidgetHierarchyChanged             ,
    mkWidgetHierarchyChangedCallback        ,
    noWidgetHierarchyChangedCallback        ,
    onWidgetHierarchyChanged                ,
    widgetHierarchyChangedCallbackWrapper   ,
    widgetHierarchyChangedClosure           ,


-- ** KeyPressEvent
    WidgetKeyPressEventCallback             ,
    WidgetKeyPressEventCallbackC            ,
    WidgetKeyPressEventSignalInfo           ,
    afterWidgetKeyPressEvent                ,
    mkWidgetKeyPressEventCallback           ,
    noWidgetKeyPressEventCallback           ,
    onWidgetKeyPressEvent                   ,
    widgetKeyPressEventCallbackWrapper      ,
    widgetKeyPressEventClosure              ,


-- ** KeyReleaseEvent
    WidgetKeyReleaseEventCallback           ,
    WidgetKeyReleaseEventCallbackC          ,
    WidgetKeyReleaseEventSignalInfo         ,
    afterWidgetKeyReleaseEvent              ,
    mkWidgetKeyReleaseEventCallback         ,
    noWidgetKeyReleaseEventCallback         ,
    onWidgetKeyReleaseEvent                 ,
    widgetKeyReleaseEventCallbackWrapper    ,
    widgetKeyReleaseEventClosure            ,


-- ** KeynavFailed
    WidgetKeynavFailedCallback              ,
    WidgetKeynavFailedCallbackC             ,
    WidgetKeynavFailedSignalInfo            ,
    afterWidgetKeynavFailed                 ,
    mkWidgetKeynavFailedCallback            ,
    noWidgetKeynavFailedCallback            ,
    onWidgetKeynavFailed                    ,
    widgetKeynavFailedCallbackWrapper       ,
    widgetKeynavFailedClosure               ,


-- ** LeaveNotifyEvent
    WidgetLeaveNotifyEventCallback          ,
    WidgetLeaveNotifyEventCallbackC         ,
    WidgetLeaveNotifyEventSignalInfo        ,
    afterWidgetLeaveNotifyEvent             ,
    mkWidgetLeaveNotifyEventCallback        ,
    noWidgetLeaveNotifyEventCallback        ,
    onWidgetLeaveNotifyEvent                ,
    widgetLeaveNotifyEventCallbackWrapper   ,
    widgetLeaveNotifyEventClosure           ,


-- ** Map
    WidgetMapCallback                       ,
    WidgetMapCallbackC                      ,
    WidgetMapSignalInfo                     ,
    afterWidgetMap                          ,
    mkWidgetMapCallback                     ,
    noWidgetMapCallback                     ,
    onWidgetMap                             ,
    widgetMapCallbackWrapper                ,
    widgetMapClosure                        ,


-- ** MapEvent
    WidgetMapEventCallback                  ,
    WidgetMapEventCallbackC                 ,
    WidgetMapEventSignalInfo                ,
    afterWidgetMapEvent                     ,
    mkWidgetMapEventCallback                ,
    noWidgetMapEventCallback                ,
    onWidgetMapEvent                        ,
    widgetMapEventCallbackWrapper           ,
    widgetMapEventClosure                   ,


-- ** MnemonicActivate
    WidgetMnemonicActivateCallback          ,
    WidgetMnemonicActivateCallbackC         ,
    WidgetMnemonicActivateSignalInfo        ,
    afterWidgetMnemonicActivate             ,
    mkWidgetMnemonicActivateCallback        ,
    noWidgetMnemonicActivateCallback        ,
    onWidgetMnemonicActivate                ,
    widgetMnemonicActivateCallbackWrapper   ,
    widgetMnemonicActivateClosure           ,


-- ** MotionNotifyEvent
    WidgetMotionNotifyEventCallback         ,
    WidgetMotionNotifyEventCallbackC        ,
    WidgetMotionNotifyEventSignalInfo       ,
    afterWidgetMotionNotifyEvent            ,
    mkWidgetMotionNotifyEventCallback       ,
    noWidgetMotionNotifyEventCallback       ,
    onWidgetMotionNotifyEvent               ,
    widgetMotionNotifyEventCallbackWrapper  ,
    widgetMotionNotifyEventClosure          ,


-- ** MoveFocus
    WidgetMoveFocusCallback                 ,
    WidgetMoveFocusCallbackC                ,
    WidgetMoveFocusSignalInfo               ,
    afterWidgetMoveFocus                    ,
    mkWidgetMoveFocusCallback               ,
    noWidgetMoveFocusCallback               ,
    onWidgetMoveFocus                       ,
    widgetMoveFocusCallbackWrapper          ,
    widgetMoveFocusClosure                  ,


-- ** ParentSet
    WidgetParentSetCallback                 ,
    WidgetParentSetCallbackC                ,
    WidgetParentSetSignalInfo               ,
    afterWidgetParentSet                    ,
    mkWidgetParentSetCallback               ,
    noWidgetParentSetCallback               ,
    onWidgetParentSet                       ,
    widgetParentSetCallbackWrapper          ,
    widgetParentSetClosure                  ,


-- ** PopupMenu
    WidgetPopupMenuCallback                 ,
    WidgetPopupMenuCallbackC                ,
    WidgetPopupMenuSignalInfo               ,
    afterWidgetPopupMenu                    ,
    mkWidgetPopupMenuCallback               ,
    noWidgetPopupMenuCallback               ,
    onWidgetPopupMenu                       ,
    widgetPopupMenuCallbackWrapper          ,
    widgetPopupMenuClosure                  ,


-- ** PropertyNotifyEvent
    WidgetPropertyNotifyEventCallback       ,
    WidgetPropertyNotifyEventCallbackC      ,
    WidgetPropertyNotifyEventSignalInfo     ,
    afterWidgetPropertyNotifyEvent          ,
    mkWidgetPropertyNotifyEventCallback     ,
    noWidgetPropertyNotifyEventCallback     ,
    onWidgetPropertyNotifyEvent             ,
    widgetPropertyNotifyEventCallbackWrapper,
    widgetPropertyNotifyEventClosure        ,


-- ** ProximityInEvent
    WidgetProximityInEventCallback          ,
    WidgetProximityInEventCallbackC         ,
    WidgetProximityInEventSignalInfo        ,
    afterWidgetProximityInEvent             ,
    mkWidgetProximityInEventCallback        ,
    noWidgetProximityInEventCallback        ,
    onWidgetProximityInEvent                ,
    widgetProximityInEventCallbackWrapper   ,
    widgetProximityInEventClosure           ,


-- ** ProximityOutEvent
    WidgetProximityOutEventCallback         ,
    WidgetProximityOutEventCallbackC        ,
    WidgetProximityOutEventSignalInfo       ,
    afterWidgetProximityOutEvent            ,
    mkWidgetProximityOutEventCallback       ,
    noWidgetProximityOutEventCallback       ,
    onWidgetProximityOutEvent               ,
    widgetProximityOutEventCallbackWrapper  ,
    widgetProximityOutEventClosure          ,


-- ** QueryTooltip
    WidgetQueryTooltipCallback              ,
    WidgetQueryTooltipCallbackC             ,
    WidgetQueryTooltipSignalInfo            ,
    afterWidgetQueryTooltip                 ,
    mkWidgetQueryTooltipCallback            ,
    noWidgetQueryTooltipCallback            ,
    onWidgetQueryTooltip                    ,
    widgetQueryTooltipCallbackWrapper       ,
    widgetQueryTooltipClosure               ,


-- ** Realize
    WidgetRealizeCallback                   ,
    WidgetRealizeCallbackC                  ,
    WidgetRealizeSignalInfo                 ,
    afterWidgetRealize                      ,
    mkWidgetRealizeCallback                 ,
    noWidgetRealizeCallback                 ,
    onWidgetRealize                         ,
    widgetRealizeCallbackWrapper            ,
    widgetRealizeClosure                    ,


-- ** ScreenChanged
    WidgetScreenChangedCallback             ,
    WidgetScreenChangedCallbackC            ,
    WidgetScreenChangedSignalInfo           ,
    afterWidgetScreenChanged                ,
    mkWidgetScreenChangedCallback           ,
    noWidgetScreenChangedCallback           ,
    onWidgetScreenChanged                   ,
    widgetScreenChangedCallbackWrapper      ,
    widgetScreenChangedClosure              ,


-- ** ScrollEvent
    WidgetScrollEventCallback               ,
    WidgetScrollEventCallbackC              ,
    WidgetScrollEventSignalInfo             ,
    afterWidgetScrollEvent                  ,
    mkWidgetScrollEventCallback             ,
    noWidgetScrollEventCallback             ,
    onWidgetScrollEvent                     ,
    widgetScrollEventCallbackWrapper        ,
    widgetScrollEventClosure                ,


-- ** SelectionClearEvent
    WidgetSelectionClearEventCallback       ,
    WidgetSelectionClearEventCallbackC      ,
    WidgetSelectionClearEventSignalInfo     ,
    afterWidgetSelectionClearEvent          ,
    mkWidgetSelectionClearEventCallback     ,
    noWidgetSelectionClearEventCallback     ,
    onWidgetSelectionClearEvent             ,
    widgetSelectionClearEventCallbackWrapper,
    widgetSelectionClearEventClosure        ,


-- ** SelectionGet
    WidgetSelectionGetCallback              ,
    WidgetSelectionGetCallbackC             ,
    WidgetSelectionGetSignalInfo            ,
    afterWidgetSelectionGet                 ,
    mkWidgetSelectionGetCallback            ,
    noWidgetSelectionGetCallback            ,
    onWidgetSelectionGet                    ,
    widgetSelectionGetCallbackWrapper       ,
    widgetSelectionGetClosure               ,


-- ** SelectionNotifyEvent
    WidgetSelectionNotifyEventCallback      ,
    WidgetSelectionNotifyEventCallbackC     ,
    WidgetSelectionNotifyEventSignalInfo    ,
    afterWidgetSelectionNotifyEvent         ,
    mkWidgetSelectionNotifyEventCallback    ,
    noWidgetSelectionNotifyEventCallback    ,
    onWidgetSelectionNotifyEvent            ,
    widgetSelectionNotifyEventCallbackWrapper,
    widgetSelectionNotifyEventClosure       ,


-- ** SelectionReceived
    WidgetSelectionReceivedCallback         ,
    WidgetSelectionReceivedCallbackC        ,
    WidgetSelectionReceivedSignalInfo       ,
    afterWidgetSelectionReceived            ,
    mkWidgetSelectionReceivedCallback       ,
    noWidgetSelectionReceivedCallback       ,
    onWidgetSelectionReceived               ,
    widgetSelectionReceivedCallbackWrapper  ,
    widgetSelectionReceivedClosure          ,


-- ** SelectionRequestEvent
    WidgetSelectionRequestEventCallback     ,
    WidgetSelectionRequestEventCallbackC    ,
    WidgetSelectionRequestEventSignalInfo   ,
    afterWidgetSelectionRequestEvent        ,
    mkWidgetSelectionRequestEventCallback   ,
    noWidgetSelectionRequestEventCallback   ,
    onWidgetSelectionRequestEvent           ,
    widgetSelectionRequestEventCallbackWrapper,
    widgetSelectionRequestEventClosure      ,


-- ** Show
    WidgetShowCallback                      ,
    WidgetShowCallbackC                     ,
    WidgetShowSignalInfo                    ,
    afterWidgetShow                         ,
    mkWidgetShowCallback                    ,
    noWidgetShowCallback                    ,
    onWidgetShow                            ,
    widgetShowCallbackWrapper               ,
    widgetShowClosure                       ,


-- ** ShowHelp
    WidgetShowHelpCallback                  ,
    WidgetShowHelpCallbackC                 ,
    WidgetShowHelpSignalInfo                ,
    afterWidgetShowHelp                     ,
    mkWidgetShowHelpCallback                ,
    noWidgetShowHelpCallback                ,
    onWidgetShowHelp                        ,
    widgetShowHelpCallbackWrapper           ,
    widgetShowHelpClosure                   ,


-- ** SizeAllocate
    WidgetSizeAllocateCallback              ,
    WidgetSizeAllocateCallbackC             ,
    WidgetSizeAllocateSignalInfo            ,
    afterWidgetSizeAllocate                 ,
    mkWidgetSizeAllocateCallback            ,
    noWidgetSizeAllocateCallback            ,
    onWidgetSizeAllocate                    ,
    widgetSizeAllocateCallbackWrapper       ,
    widgetSizeAllocateClosure               ,


-- ** StateChanged
    WidgetStateChangedCallback              ,
    WidgetStateChangedCallbackC             ,
    WidgetStateChangedSignalInfo            ,
    afterWidgetStateChanged                 ,
    mkWidgetStateChangedCallback            ,
    noWidgetStateChangedCallback            ,
    onWidgetStateChanged                    ,
    widgetStateChangedCallbackWrapper       ,
    widgetStateChangedClosure               ,


-- ** StateFlagsChanged
    WidgetStateFlagsChangedCallback         ,
    WidgetStateFlagsChangedCallbackC        ,
    WidgetStateFlagsChangedSignalInfo       ,
    afterWidgetStateFlagsChanged            ,
    mkWidgetStateFlagsChangedCallback       ,
    noWidgetStateFlagsChangedCallback       ,
    onWidgetStateFlagsChanged               ,
    widgetStateFlagsChangedCallbackWrapper  ,
    widgetStateFlagsChangedClosure          ,


-- ** StyleSet
    WidgetStyleSetCallback                  ,
    WidgetStyleSetCallbackC                 ,
    WidgetStyleSetSignalInfo                ,
    afterWidgetStyleSet                     ,
    mkWidgetStyleSetCallback                ,
    noWidgetStyleSetCallback                ,
    onWidgetStyleSet                        ,
    widgetStyleSetCallbackWrapper           ,
    widgetStyleSetClosure                   ,


-- ** StyleUpdated
    WidgetStyleUpdatedCallback              ,
    WidgetStyleUpdatedCallbackC             ,
    WidgetStyleUpdatedSignalInfo            ,
    afterWidgetStyleUpdated                 ,
    mkWidgetStyleUpdatedCallback            ,
    noWidgetStyleUpdatedCallback            ,
    onWidgetStyleUpdated                    ,
    widgetStyleUpdatedCallbackWrapper       ,
    widgetStyleUpdatedClosure               ,


-- ** TouchEvent
    WidgetTouchEventCallback                ,
    WidgetTouchEventCallbackC               ,
    WidgetTouchEventSignalInfo              ,
    afterWidgetTouchEvent                   ,
    mkWidgetTouchEventCallback              ,
    noWidgetTouchEventCallback              ,
    onWidgetTouchEvent                      ,
    widgetTouchEventCallbackWrapper         ,
    widgetTouchEventClosure                 ,


-- ** Unmap
    WidgetUnmapCallback                     ,
    WidgetUnmapCallbackC                    ,
    WidgetUnmapSignalInfo                   ,
    afterWidgetUnmap                        ,
    mkWidgetUnmapCallback                   ,
    noWidgetUnmapCallback                   ,
    onWidgetUnmap                           ,
    widgetUnmapCallbackWrapper              ,
    widgetUnmapClosure                      ,


-- ** UnmapEvent
    WidgetUnmapEventCallback                ,
    WidgetUnmapEventCallbackC               ,
    WidgetUnmapEventSignalInfo              ,
    afterWidgetUnmapEvent                   ,
    mkWidgetUnmapEventCallback              ,
    noWidgetUnmapEventCallback              ,
    onWidgetUnmapEvent                      ,
    widgetUnmapEventCallbackWrapper         ,
    widgetUnmapEventClosure                 ,


-- ** Unrealize
    WidgetUnrealizeCallback                 ,
    WidgetUnrealizeCallbackC                ,
    WidgetUnrealizeSignalInfo               ,
    afterWidgetUnrealize                    ,
    mkWidgetUnrealizeCallback               ,
    noWidgetUnrealizeCallback               ,
    onWidgetUnrealize                       ,
    widgetUnrealizeCallbackWrapper          ,
    widgetUnrealizeClosure                  ,


-- ** VisibilityNotifyEvent
    WidgetVisibilityNotifyEventCallback     ,
    WidgetVisibilityNotifyEventCallbackC    ,
    WidgetVisibilityNotifyEventSignalInfo   ,
    afterWidgetVisibilityNotifyEvent        ,
    mkWidgetVisibilityNotifyEventCallback   ,
    noWidgetVisibilityNotifyEventCallback   ,
    onWidgetVisibilityNotifyEvent           ,
    widgetVisibilityNotifyEventCallbackWrapper,
    widgetVisibilityNotifyEventClosure      ,


-- ** WindowStateEvent
    WidgetWindowStateEventCallback          ,
    WidgetWindowStateEventCallbackC         ,
    WidgetWindowStateEventSignalInfo        ,
    afterWidgetWindowStateEvent             ,
    mkWidgetWindowStateEventCallback        ,
    noWidgetWindowStateEventCallback        ,
    onWidgetWindowStateEvent                ,
    widgetWindowStateEventCallbackWrapper   ,
    widgetWindowStateEventClosure           ,




    ) 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.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.Atk as Atk
import qualified GI.GLib as GLib
import qualified GI.GObject as GObject
import qualified GI.Gdk as Gdk
import qualified GI.GdkPixbuf as GdkPixbuf
import qualified GI.Gio as Gio
import qualified GI.Pango as Pango
import qualified GI.Cairo as Cairo

newtype Widget = Widget (ForeignPtr Widget)
foreign import ccall "gtk_widget_get_type"
    c_gtk_widget_get_type :: IO GType

type instance ParentTypes Widget = WidgetParentTypes
type WidgetParentTypes = '[GObject.Object, Atk.ImplementorIface, Buildable]

instance GObject Widget where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_widget_get_type
    

class GObject o => WidgetK o
instance (GObject o, IsDescendantOf Widget o) => WidgetK o

toWidget :: WidgetK o => o -> IO Widget
toWidget = unsafeCastTo Widget

noWidget :: Maybe Widget
noWidget = Nothing

-- signal Widget::accel-closures-changed
type WidgetAccelClosuresChangedCallback =
    IO ()

noWidgetAccelClosuresChangedCallback :: Maybe WidgetAccelClosuresChangedCallback
noWidgetAccelClosuresChangedCallback = Nothing

type WidgetAccelClosuresChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetAccelClosuresChangedCallback :: WidgetAccelClosuresChangedCallbackC -> IO (FunPtr WidgetAccelClosuresChangedCallbackC)

widgetAccelClosuresChangedClosure :: WidgetAccelClosuresChangedCallback -> IO Closure
widgetAccelClosuresChangedClosure cb = newCClosure =<< mkWidgetAccelClosuresChangedCallback wrapped
    where wrapped = widgetAccelClosuresChangedCallbackWrapper cb

widgetAccelClosuresChangedCallbackWrapper ::
    WidgetAccelClosuresChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetAccelClosuresChangedCallbackWrapper _cb _ _ = do
    _cb 

onWidgetAccelClosuresChanged :: (GObject a, MonadIO m) => a -> WidgetAccelClosuresChangedCallback -> m SignalHandlerId
onWidgetAccelClosuresChanged obj cb = liftIO $ connectWidgetAccelClosuresChanged obj cb SignalConnectBefore
afterWidgetAccelClosuresChanged :: (GObject a, MonadIO m) => a -> WidgetAccelClosuresChangedCallback -> m SignalHandlerId
afterWidgetAccelClosuresChanged obj cb = connectWidgetAccelClosuresChanged obj cb SignalConnectAfter

connectWidgetAccelClosuresChanged :: (GObject a, MonadIO m) =>
                                     a -> WidgetAccelClosuresChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetAccelClosuresChanged obj cb after = liftIO $ do
    cb' <- mkWidgetAccelClosuresChangedCallback (widgetAccelClosuresChangedCallbackWrapper cb)
    connectSignalFunPtr obj "accel-closures-changed" cb' after

-- signal Widget::button-press-event
type WidgetButtonPressEventCallback =
    Gdk.EventButton ->
    IO Bool

noWidgetButtonPressEventCallback :: Maybe WidgetButtonPressEventCallback
noWidgetButtonPressEventCallback = Nothing

type WidgetButtonPressEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventButton ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetButtonPressEventCallback :: WidgetButtonPressEventCallbackC -> IO (FunPtr WidgetButtonPressEventCallbackC)

widgetButtonPressEventClosure :: WidgetButtonPressEventCallback -> IO Closure
widgetButtonPressEventClosure cb = newCClosure =<< mkWidgetButtonPressEventCallback wrapped
    where wrapped = widgetButtonPressEventCallbackWrapper cb

widgetButtonPressEventCallbackWrapper ::
    WidgetButtonPressEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton ->
    Ptr () ->
    IO CInt
widgetButtonPressEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 80 Gdk.EventButton) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetButtonPressEvent :: (GObject a, MonadIO m) => a -> WidgetButtonPressEventCallback -> m SignalHandlerId
onWidgetButtonPressEvent obj cb = liftIO $ connectWidgetButtonPressEvent obj cb SignalConnectBefore
afterWidgetButtonPressEvent :: (GObject a, MonadIO m) => a -> WidgetButtonPressEventCallback -> m SignalHandlerId
afterWidgetButtonPressEvent obj cb = connectWidgetButtonPressEvent obj cb SignalConnectAfter

connectWidgetButtonPressEvent :: (GObject a, MonadIO m) =>
                                 a -> WidgetButtonPressEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetButtonPressEvent obj cb after = liftIO $ do
    cb' <- mkWidgetButtonPressEventCallback (widgetButtonPressEventCallbackWrapper cb)
    connectSignalFunPtr obj "button-press-event" cb' after

-- signal Widget::button-release-event
type WidgetButtonReleaseEventCallback =
    Gdk.EventButton ->
    IO Bool

noWidgetButtonReleaseEventCallback :: Maybe WidgetButtonReleaseEventCallback
noWidgetButtonReleaseEventCallback = Nothing

type WidgetButtonReleaseEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventButton ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetButtonReleaseEventCallback :: WidgetButtonReleaseEventCallbackC -> IO (FunPtr WidgetButtonReleaseEventCallbackC)

widgetButtonReleaseEventClosure :: WidgetButtonReleaseEventCallback -> IO Closure
widgetButtonReleaseEventClosure cb = newCClosure =<< mkWidgetButtonReleaseEventCallback wrapped
    where wrapped = widgetButtonReleaseEventCallbackWrapper cb

widgetButtonReleaseEventCallbackWrapper ::
    WidgetButtonReleaseEventCallback ->
    Ptr () ->
    Ptr Gdk.EventButton ->
    Ptr () ->
    IO CInt
widgetButtonReleaseEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 80 Gdk.EventButton) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetButtonReleaseEvent :: (GObject a, MonadIO m) => a -> WidgetButtonReleaseEventCallback -> m SignalHandlerId
onWidgetButtonReleaseEvent obj cb = liftIO $ connectWidgetButtonReleaseEvent obj cb SignalConnectBefore
afterWidgetButtonReleaseEvent :: (GObject a, MonadIO m) => a -> WidgetButtonReleaseEventCallback -> m SignalHandlerId
afterWidgetButtonReleaseEvent obj cb = connectWidgetButtonReleaseEvent obj cb SignalConnectAfter

connectWidgetButtonReleaseEvent :: (GObject a, MonadIO m) =>
                                   a -> WidgetButtonReleaseEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetButtonReleaseEvent obj cb after = liftIO $ do
    cb' <- mkWidgetButtonReleaseEventCallback (widgetButtonReleaseEventCallbackWrapper cb)
    connectSignalFunPtr obj "button-release-event" cb' after

-- signal Widget::can-activate-accel
type WidgetCanActivateAccelCallback =
    Word32 ->
    IO Bool

noWidgetCanActivateAccelCallback :: Maybe WidgetCanActivateAccelCallback
noWidgetCanActivateAccelCallback = Nothing

type WidgetCanActivateAccelCallbackC =
    Ptr () ->                               -- object
    Word32 ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetCanActivateAccelCallback :: WidgetCanActivateAccelCallbackC -> IO (FunPtr WidgetCanActivateAccelCallbackC)

widgetCanActivateAccelClosure :: WidgetCanActivateAccelCallback -> IO Closure
widgetCanActivateAccelClosure cb = newCClosure =<< mkWidgetCanActivateAccelCallback wrapped
    where wrapped = widgetCanActivateAccelCallbackWrapper cb

widgetCanActivateAccelCallbackWrapper ::
    WidgetCanActivateAccelCallback ->
    Ptr () ->
    Word32 ->
    Ptr () ->
    IO CInt
widgetCanActivateAccelCallbackWrapper _cb _ signal_id _ = do
    result <- _cb  signal_id
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetCanActivateAccel :: (GObject a, MonadIO m) => a -> WidgetCanActivateAccelCallback -> m SignalHandlerId
onWidgetCanActivateAccel obj cb = liftIO $ connectWidgetCanActivateAccel obj cb SignalConnectBefore
afterWidgetCanActivateAccel :: (GObject a, MonadIO m) => a -> WidgetCanActivateAccelCallback -> m SignalHandlerId
afterWidgetCanActivateAccel obj cb = connectWidgetCanActivateAccel obj cb SignalConnectAfter

connectWidgetCanActivateAccel :: (GObject a, MonadIO m) =>
                                 a -> WidgetCanActivateAccelCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetCanActivateAccel obj cb after = liftIO $ do
    cb' <- mkWidgetCanActivateAccelCallback (widgetCanActivateAccelCallbackWrapper cb)
    connectSignalFunPtr obj "can-activate-accel" cb' after

-- signal Widget::child-notify
type WidgetChildNotifyCallback =
    GParamSpec ->
    IO ()

noWidgetChildNotifyCallback :: Maybe WidgetChildNotifyCallback
noWidgetChildNotifyCallback = Nothing

type WidgetChildNotifyCallbackC =
    Ptr () ->                               -- object
    Ptr GParamSpec ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetChildNotifyCallback :: WidgetChildNotifyCallbackC -> IO (FunPtr WidgetChildNotifyCallbackC)

widgetChildNotifyClosure :: WidgetChildNotifyCallback -> IO Closure
widgetChildNotifyClosure cb = newCClosure =<< mkWidgetChildNotifyCallback wrapped
    where wrapped = widgetChildNotifyCallbackWrapper cb

widgetChildNotifyCallbackWrapper ::
    WidgetChildNotifyCallback ->
    Ptr () ->
    Ptr GParamSpec ->
    Ptr () ->
    IO ()
widgetChildNotifyCallbackWrapper _cb _ child_property _ = do
    child_property' <- newGParamSpecFromPtr child_property
    _cb  child_property'

onWidgetChildNotify :: (GObject a, MonadIO m) => a -> WidgetChildNotifyCallback -> m SignalHandlerId
onWidgetChildNotify obj cb = liftIO $ connectWidgetChildNotify obj cb SignalConnectBefore
afterWidgetChildNotify :: (GObject a, MonadIO m) => a -> WidgetChildNotifyCallback -> m SignalHandlerId
afterWidgetChildNotify obj cb = connectWidgetChildNotify obj cb SignalConnectAfter

connectWidgetChildNotify :: (GObject a, MonadIO m) =>
                            a -> WidgetChildNotifyCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetChildNotify obj cb after = liftIO $ do
    cb' <- mkWidgetChildNotifyCallback (widgetChildNotifyCallbackWrapper cb)
    connectSignalFunPtr obj "child-notify" cb' after

-- signal Widget::composited-changed
type WidgetCompositedChangedCallback =
    IO ()

noWidgetCompositedChangedCallback :: Maybe WidgetCompositedChangedCallback
noWidgetCompositedChangedCallback = Nothing

type WidgetCompositedChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetCompositedChangedCallback :: WidgetCompositedChangedCallbackC -> IO (FunPtr WidgetCompositedChangedCallbackC)

widgetCompositedChangedClosure :: WidgetCompositedChangedCallback -> IO Closure
widgetCompositedChangedClosure cb = newCClosure =<< mkWidgetCompositedChangedCallback wrapped
    where wrapped = widgetCompositedChangedCallbackWrapper cb

widgetCompositedChangedCallbackWrapper ::
    WidgetCompositedChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetCompositedChangedCallbackWrapper _cb _ _ = do
    _cb 

onWidgetCompositedChanged :: (GObject a, MonadIO m) => a -> WidgetCompositedChangedCallback -> m SignalHandlerId
onWidgetCompositedChanged obj cb = liftIO $ connectWidgetCompositedChanged obj cb SignalConnectBefore
afterWidgetCompositedChanged :: (GObject a, MonadIO m) => a -> WidgetCompositedChangedCallback -> m SignalHandlerId
afterWidgetCompositedChanged obj cb = connectWidgetCompositedChanged obj cb SignalConnectAfter

connectWidgetCompositedChanged :: (GObject a, MonadIO m) =>
                                  a -> WidgetCompositedChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetCompositedChanged obj cb after = liftIO $ do
    cb' <- mkWidgetCompositedChangedCallback (widgetCompositedChangedCallbackWrapper cb)
    connectSignalFunPtr obj "composited-changed" cb' after

-- signal Widget::configure-event
type WidgetConfigureEventCallback =
    Gdk.EventConfigure ->
    IO Bool

noWidgetConfigureEventCallback :: Maybe WidgetConfigureEventCallback
noWidgetConfigureEventCallback = Nothing

type WidgetConfigureEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventConfigure ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetConfigureEventCallback :: WidgetConfigureEventCallbackC -> IO (FunPtr WidgetConfigureEventCallbackC)

widgetConfigureEventClosure :: WidgetConfigureEventCallback -> IO Closure
widgetConfigureEventClosure cb = newCClosure =<< mkWidgetConfigureEventCallback wrapped
    where wrapped = widgetConfigureEventCallbackWrapper cb

widgetConfigureEventCallbackWrapper ::
    WidgetConfigureEventCallback ->
    Ptr () ->
    Ptr Gdk.EventConfigure ->
    Ptr () ->
    IO CInt
widgetConfigureEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 40 Gdk.EventConfigure) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetConfigureEvent :: (GObject a, MonadIO m) => a -> WidgetConfigureEventCallback -> m SignalHandlerId
onWidgetConfigureEvent obj cb = liftIO $ connectWidgetConfigureEvent obj cb SignalConnectBefore
afterWidgetConfigureEvent :: (GObject a, MonadIO m) => a -> WidgetConfigureEventCallback -> m SignalHandlerId
afterWidgetConfigureEvent obj cb = connectWidgetConfigureEvent obj cb SignalConnectAfter

connectWidgetConfigureEvent :: (GObject a, MonadIO m) =>
                               a -> WidgetConfigureEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetConfigureEvent obj cb after = liftIO $ do
    cb' <- mkWidgetConfigureEventCallback (widgetConfigureEventCallbackWrapper cb)
    connectSignalFunPtr obj "configure-event" cb' after

-- signal Widget::damage-event
type WidgetDamageEventCallback =
    Gdk.EventExpose ->
    IO Bool

noWidgetDamageEventCallback :: Maybe WidgetDamageEventCallback
noWidgetDamageEventCallback = Nothing

type WidgetDamageEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventExpose ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDamageEventCallback :: WidgetDamageEventCallbackC -> IO (FunPtr WidgetDamageEventCallbackC)

widgetDamageEventClosure :: WidgetDamageEventCallback -> IO Closure
widgetDamageEventClosure cb = newCClosure =<< mkWidgetDamageEventCallback wrapped
    where wrapped = widgetDamageEventCallbackWrapper cb

widgetDamageEventCallbackWrapper ::
    WidgetDamageEventCallback ->
    Ptr () ->
    Ptr Gdk.EventExpose ->
    Ptr () ->
    IO CInt
widgetDamageEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 56 Gdk.EventExpose) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDamageEvent :: (GObject a, MonadIO m) => a -> WidgetDamageEventCallback -> m SignalHandlerId
onWidgetDamageEvent obj cb = liftIO $ connectWidgetDamageEvent obj cb SignalConnectBefore
afterWidgetDamageEvent :: (GObject a, MonadIO m) => a -> WidgetDamageEventCallback -> m SignalHandlerId
afterWidgetDamageEvent obj cb = connectWidgetDamageEvent obj cb SignalConnectAfter

connectWidgetDamageEvent :: (GObject a, MonadIO m) =>
                            a -> WidgetDamageEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDamageEvent obj cb after = liftIO $ do
    cb' <- mkWidgetDamageEventCallback (widgetDamageEventCallbackWrapper cb)
    connectSignalFunPtr obj "damage-event" cb' after

-- signal Widget::delete-event
type WidgetDeleteEventCallback =
    Gdk.Event ->
    IO Bool

noWidgetDeleteEventCallback :: Maybe WidgetDeleteEventCallback
noWidgetDeleteEventCallback = Nothing

type WidgetDeleteEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Event ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDeleteEventCallback :: WidgetDeleteEventCallbackC -> IO (FunPtr WidgetDeleteEventCallbackC)

widgetDeleteEventClosure :: WidgetDeleteEventCallback -> IO Closure
widgetDeleteEventClosure cb = newCClosure =<< mkWidgetDeleteEventCallback wrapped
    where wrapped = widgetDeleteEventCallbackWrapper cb

widgetDeleteEventCallbackWrapper ::
    WidgetDeleteEventCallback ->
    Ptr () ->
    Ptr Gdk.Event ->
    Ptr () ->
    IO CInt
widgetDeleteEventCallbackWrapper _cb _ event _ = do
    event' <- (newBoxed Gdk.Event) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDeleteEvent :: (GObject a, MonadIO m) => a -> WidgetDeleteEventCallback -> m SignalHandlerId
onWidgetDeleteEvent obj cb = liftIO $ connectWidgetDeleteEvent obj cb SignalConnectBefore
afterWidgetDeleteEvent :: (GObject a, MonadIO m) => a -> WidgetDeleteEventCallback -> m SignalHandlerId
afterWidgetDeleteEvent obj cb = connectWidgetDeleteEvent obj cb SignalConnectAfter

connectWidgetDeleteEvent :: (GObject a, MonadIO m) =>
                            a -> WidgetDeleteEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDeleteEvent obj cb after = liftIO $ do
    cb' <- mkWidgetDeleteEventCallback (widgetDeleteEventCallbackWrapper cb)
    connectSignalFunPtr obj "delete-event" cb' after

-- signal Widget::destroy
type WidgetDestroyCallback =
    IO ()

noWidgetDestroyCallback :: Maybe WidgetDestroyCallback
noWidgetDestroyCallback = Nothing

type WidgetDestroyCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDestroyCallback :: WidgetDestroyCallbackC -> IO (FunPtr WidgetDestroyCallbackC)

widgetDestroyClosure :: WidgetDestroyCallback -> IO Closure
widgetDestroyClosure cb = newCClosure =<< mkWidgetDestroyCallback wrapped
    where wrapped = widgetDestroyCallbackWrapper cb

widgetDestroyCallbackWrapper ::
    WidgetDestroyCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetDestroyCallbackWrapper _cb _ _ = do
    _cb 

onWidgetDestroy :: (GObject a, MonadIO m) => a -> WidgetDestroyCallback -> m SignalHandlerId
onWidgetDestroy obj cb = liftIO $ connectWidgetDestroy obj cb SignalConnectBefore
afterWidgetDestroy :: (GObject a, MonadIO m) => a -> WidgetDestroyCallback -> m SignalHandlerId
afterWidgetDestroy obj cb = connectWidgetDestroy obj cb SignalConnectAfter

connectWidgetDestroy :: (GObject a, MonadIO m) =>
                        a -> WidgetDestroyCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDestroy obj cb after = liftIO $ do
    cb' <- mkWidgetDestroyCallback (widgetDestroyCallbackWrapper cb)
    connectSignalFunPtr obj "destroy" cb' after

-- signal Widget::destroy-event
type WidgetDestroyEventCallback =
    Gdk.Event ->
    IO Bool

noWidgetDestroyEventCallback :: Maybe WidgetDestroyEventCallback
noWidgetDestroyEventCallback = Nothing

type WidgetDestroyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Event ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDestroyEventCallback :: WidgetDestroyEventCallbackC -> IO (FunPtr WidgetDestroyEventCallbackC)

widgetDestroyEventClosure :: WidgetDestroyEventCallback -> IO Closure
widgetDestroyEventClosure cb = newCClosure =<< mkWidgetDestroyEventCallback wrapped
    where wrapped = widgetDestroyEventCallbackWrapper cb

widgetDestroyEventCallbackWrapper ::
    WidgetDestroyEventCallback ->
    Ptr () ->
    Ptr Gdk.Event ->
    Ptr () ->
    IO CInt
widgetDestroyEventCallbackWrapper _cb _ event _ = do
    event' <- (newBoxed Gdk.Event) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDestroyEvent :: (GObject a, MonadIO m) => a -> WidgetDestroyEventCallback -> m SignalHandlerId
onWidgetDestroyEvent obj cb = liftIO $ connectWidgetDestroyEvent obj cb SignalConnectBefore
afterWidgetDestroyEvent :: (GObject a, MonadIO m) => a -> WidgetDestroyEventCallback -> m SignalHandlerId
afterWidgetDestroyEvent obj cb = connectWidgetDestroyEvent obj cb SignalConnectAfter

connectWidgetDestroyEvent :: (GObject a, MonadIO m) =>
                             a -> WidgetDestroyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDestroyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetDestroyEventCallback (widgetDestroyEventCallbackWrapper cb)
    connectSignalFunPtr obj "destroy-event" cb' after

-- signal Widget::direction-changed
type WidgetDirectionChangedCallback =
    TextDirection ->
    IO ()

noWidgetDirectionChangedCallback :: Maybe WidgetDirectionChangedCallback
noWidgetDirectionChangedCallback = Nothing

type WidgetDirectionChangedCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDirectionChangedCallback :: WidgetDirectionChangedCallbackC -> IO (FunPtr WidgetDirectionChangedCallbackC)

widgetDirectionChangedClosure :: WidgetDirectionChangedCallback -> IO Closure
widgetDirectionChangedClosure cb = newCClosure =<< mkWidgetDirectionChangedCallback wrapped
    where wrapped = widgetDirectionChangedCallbackWrapper cb

widgetDirectionChangedCallbackWrapper ::
    WidgetDirectionChangedCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
widgetDirectionChangedCallbackWrapper _cb _ previous_direction _ = do
    let previous_direction' = (toEnum . fromIntegral) previous_direction
    _cb  previous_direction'

onWidgetDirectionChanged :: (GObject a, MonadIO m) => a -> WidgetDirectionChangedCallback -> m SignalHandlerId
onWidgetDirectionChanged obj cb = liftIO $ connectWidgetDirectionChanged obj cb SignalConnectBefore
afterWidgetDirectionChanged :: (GObject a, MonadIO m) => a -> WidgetDirectionChangedCallback -> m SignalHandlerId
afterWidgetDirectionChanged obj cb = connectWidgetDirectionChanged obj cb SignalConnectAfter

connectWidgetDirectionChanged :: (GObject a, MonadIO m) =>
                                 a -> WidgetDirectionChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDirectionChanged obj cb after = liftIO $ do
    cb' <- mkWidgetDirectionChangedCallback (widgetDirectionChangedCallbackWrapper cb)
    connectSignalFunPtr obj "direction-changed" cb' after

-- signal Widget::drag-begin
type WidgetDragBeginCallback =
    Gdk.DragContext ->
    IO ()

noWidgetDragBeginCallback :: Maybe WidgetDragBeginCallback
noWidgetDragBeginCallback = Nothing

type WidgetDragBeginCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragBeginCallback :: WidgetDragBeginCallbackC -> IO (FunPtr WidgetDragBeginCallbackC)

widgetDragBeginClosure :: WidgetDragBeginCallback -> IO Closure
widgetDragBeginClosure cb = newCClosure =<< mkWidgetDragBeginCallback wrapped
    where wrapped = widgetDragBeginCallbackWrapper cb

widgetDragBeginCallbackWrapper ::
    WidgetDragBeginCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Ptr () ->
    IO ()
widgetDragBeginCallbackWrapper _cb _ context _ = do
    context' <- (newObject Gdk.DragContext) context
    _cb  context'

onWidgetDragBegin :: (GObject a, MonadIO m) => a -> WidgetDragBeginCallback -> m SignalHandlerId
onWidgetDragBegin obj cb = liftIO $ connectWidgetDragBegin obj cb SignalConnectBefore
afterWidgetDragBegin :: (GObject a, MonadIO m) => a -> WidgetDragBeginCallback -> m SignalHandlerId
afterWidgetDragBegin obj cb = connectWidgetDragBegin obj cb SignalConnectAfter

connectWidgetDragBegin :: (GObject a, MonadIO m) =>
                          a -> WidgetDragBeginCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragBegin obj cb after = liftIO $ do
    cb' <- mkWidgetDragBeginCallback (widgetDragBeginCallbackWrapper cb)
    connectSignalFunPtr obj "drag-begin" cb' after

-- signal Widget::drag-data-delete
type WidgetDragDataDeleteCallback =
    Gdk.DragContext ->
    IO ()

noWidgetDragDataDeleteCallback :: Maybe WidgetDragDataDeleteCallback
noWidgetDragDataDeleteCallback = Nothing

type WidgetDragDataDeleteCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragDataDeleteCallback :: WidgetDragDataDeleteCallbackC -> IO (FunPtr WidgetDragDataDeleteCallbackC)

widgetDragDataDeleteClosure :: WidgetDragDataDeleteCallback -> IO Closure
widgetDragDataDeleteClosure cb = newCClosure =<< mkWidgetDragDataDeleteCallback wrapped
    where wrapped = widgetDragDataDeleteCallbackWrapper cb

widgetDragDataDeleteCallbackWrapper ::
    WidgetDragDataDeleteCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Ptr () ->
    IO ()
widgetDragDataDeleteCallbackWrapper _cb _ context _ = do
    context' <- (newObject Gdk.DragContext) context
    _cb  context'

onWidgetDragDataDelete :: (GObject a, MonadIO m) => a -> WidgetDragDataDeleteCallback -> m SignalHandlerId
onWidgetDragDataDelete obj cb = liftIO $ connectWidgetDragDataDelete obj cb SignalConnectBefore
afterWidgetDragDataDelete :: (GObject a, MonadIO m) => a -> WidgetDragDataDeleteCallback -> m SignalHandlerId
afterWidgetDragDataDelete obj cb = connectWidgetDragDataDelete obj cb SignalConnectAfter

connectWidgetDragDataDelete :: (GObject a, MonadIO m) =>
                               a -> WidgetDragDataDeleteCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragDataDelete obj cb after = liftIO $ do
    cb' <- mkWidgetDragDataDeleteCallback (widgetDragDataDeleteCallbackWrapper cb)
    connectSignalFunPtr obj "drag-data-delete" cb' after

-- signal Widget::drag-data-get
type WidgetDragDataGetCallback =
    Gdk.DragContext ->
    SelectionData ->
    Word32 ->
    Word32 ->
    IO ()

noWidgetDragDataGetCallback :: Maybe WidgetDragDataGetCallback
noWidgetDragDataGetCallback = Nothing

type WidgetDragDataGetCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragDataGetCallback :: WidgetDragDataGetCallbackC -> IO (FunPtr WidgetDragDataGetCallbackC)

widgetDragDataGetClosure :: WidgetDragDataGetCallback -> IO Closure
widgetDragDataGetClosure cb = newCClosure =<< mkWidgetDragDataGetCallback wrapped
    where wrapped = widgetDragDataGetCallbackWrapper cb

widgetDragDataGetCallbackWrapper ::
    WidgetDragDataGetCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO ()
widgetDragDataGetCallbackWrapper _cb _ context data_ info time _ = do
    context' <- (newObject Gdk.DragContext) context
    data_' <- (newBoxed SelectionData) data_
    _cb  context' data_' info time

onWidgetDragDataGet :: (GObject a, MonadIO m) => a -> WidgetDragDataGetCallback -> m SignalHandlerId
onWidgetDragDataGet obj cb = liftIO $ connectWidgetDragDataGet obj cb SignalConnectBefore
afterWidgetDragDataGet :: (GObject a, MonadIO m) => a -> WidgetDragDataGetCallback -> m SignalHandlerId
afterWidgetDragDataGet obj cb = connectWidgetDragDataGet obj cb SignalConnectAfter

connectWidgetDragDataGet :: (GObject a, MonadIO m) =>
                            a -> WidgetDragDataGetCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragDataGet obj cb after = liftIO $ do
    cb' <- mkWidgetDragDataGetCallback (widgetDragDataGetCallbackWrapper cb)
    connectSignalFunPtr obj "drag-data-get" cb' after

-- signal Widget::drag-data-received
type WidgetDragDataReceivedCallback =
    Gdk.DragContext ->
    Int32 ->
    Int32 ->
    SelectionData ->
    Word32 ->
    Word32 ->
    IO ()

noWidgetDragDataReceivedCallback :: Maybe WidgetDragDataReceivedCallback
noWidgetDragDataReceivedCallback = Nothing

type WidgetDragDataReceivedCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragDataReceivedCallback :: WidgetDragDataReceivedCallbackC -> IO (FunPtr WidgetDragDataReceivedCallbackC)

widgetDragDataReceivedClosure :: WidgetDragDataReceivedCallback -> IO Closure
widgetDragDataReceivedClosure cb = newCClosure =<< mkWidgetDragDataReceivedCallback wrapped
    where wrapped = widgetDragDataReceivedCallbackWrapper cb

widgetDragDataReceivedCallbackWrapper ::
    WidgetDragDataReceivedCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO ()
widgetDragDataReceivedCallbackWrapper _cb _ context x y data_ info time _ = do
    context' <- (newObject Gdk.DragContext) context
    data_' <- (newBoxed SelectionData) data_
    _cb  context' x y data_' info time

onWidgetDragDataReceived :: (GObject a, MonadIO m) => a -> WidgetDragDataReceivedCallback -> m SignalHandlerId
onWidgetDragDataReceived obj cb = liftIO $ connectWidgetDragDataReceived obj cb SignalConnectBefore
afterWidgetDragDataReceived :: (GObject a, MonadIO m) => a -> WidgetDragDataReceivedCallback -> m SignalHandlerId
afterWidgetDragDataReceived obj cb = connectWidgetDragDataReceived obj cb SignalConnectAfter

connectWidgetDragDataReceived :: (GObject a, MonadIO m) =>
                                 a -> WidgetDragDataReceivedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragDataReceived obj cb after = liftIO $ do
    cb' <- mkWidgetDragDataReceivedCallback (widgetDragDataReceivedCallbackWrapper cb)
    connectSignalFunPtr obj "drag-data-received" cb' after

-- signal Widget::drag-drop
type WidgetDragDropCallback =
    Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    IO Bool

noWidgetDragDropCallback :: Maybe WidgetDragDropCallback
noWidgetDragDropCallback = Nothing

type WidgetDragDropCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDragDropCallback :: WidgetDragDropCallbackC -> IO (FunPtr WidgetDragDropCallbackC)

widgetDragDropClosure :: WidgetDragDropCallback -> IO Closure
widgetDragDropClosure cb = newCClosure =<< mkWidgetDragDropCallback wrapped
    where wrapped = widgetDragDropCallbackWrapper cb

widgetDragDropCallbackWrapper ::
    WidgetDragDropCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    Ptr () ->
    IO CInt
widgetDragDropCallbackWrapper _cb _ context x y time _ = do
    context' <- (newObject Gdk.DragContext) context
    result <- _cb  context' x y time
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDragDrop :: (GObject a, MonadIO m) => a -> WidgetDragDropCallback -> m SignalHandlerId
onWidgetDragDrop obj cb = liftIO $ connectWidgetDragDrop obj cb SignalConnectBefore
afterWidgetDragDrop :: (GObject a, MonadIO m) => a -> WidgetDragDropCallback -> m SignalHandlerId
afterWidgetDragDrop obj cb = connectWidgetDragDrop obj cb SignalConnectAfter

connectWidgetDragDrop :: (GObject a, MonadIO m) =>
                         a -> WidgetDragDropCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragDrop obj cb after = liftIO $ do
    cb' <- mkWidgetDragDropCallback (widgetDragDropCallbackWrapper cb)
    connectSignalFunPtr obj "drag-drop" cb' after

-- signal Widget::drag-end
type WidgetDragEndCallback =
    Gdk.DragContext ->
    IO ()

noWidgetDragEndCallback :: Maybe WidgetDragEndCallback
noWidgetDragEndCallback = Nothing

type WidgetDragEndCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragEndCallback :: WidgetDragEndCallbackC -> IO (FunPtr WidgetDragEndCallbackC)

widgetDragEndClosure :: WidgetDragEndCallback -> IO Closure
widgetDragEndClosure cb = newCClosure =<< mkWidgetDragEndCallback wrapped
    where wrapped = widgetDragEndCallbackWrapper cb

widgetDragEndCallbackWrapper ::
    WidgetDragEndCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Ptr () ->
    IO ()
widgetDragEndCallbackWrapper _cb _ context _ = do
    context' <- (newObject Gdk.DragContext) context
    _cb  context'

onWidgetDragEnd :: (GObject a, MonadIO m) => a -> WidgetDragEndCallback -> m SignalHandlerId
onWidgetDragEnd obj cb = liftIO $ connectWidgetDragEnd obj cb SignalConnectBefore
afterWidgetDragEnd :: (GObject a, MonadIO m) => a -> WidgetDragEndCallback -> m SignalHandlerId
afterWidgetDragEnd obj cb = connectWidgetDragEnd obj cb SignalConnectAfter

connectWidgetDragEnd :: (GObject a, MonadIO m) =>
                        a -> WidgetDragEndCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragEnd obj cb after = liftIO $ do
    cb' <- mkWidgetDragEndCallback (widgetDragEndCallbackWrapper cb)
    connectSignalFunPtr obj "drag-end" cb' after

-- signal Widget::drag-failed
type WidgetDragFailedCallback =
    Gdk.DragContext ->
    DragResult ->
    IO Bool

noWidgetDragFailedCallback :: Maybe WidgetDragFailedCallback
noWidgetDragFailedCallback = Nothing

type WidgetDragFailedCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    CUInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDragFailedCallback :: WidgetDragFailedCallbackC -> IO (FunPtr WidgetDragFailedCallbackC)

widgetDragFailedClosure :: WidgetDragFailedCallback -> IO Closure
widgetDragFailedClosure cb = newCClosure =<< mkWidgetDragFailedCallback wrapped
    where wrapped = widgetDragFailedCallbackWrapper cb

widgetDragFailedCallbackWrapper ::
    WidgetDragFailedCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    CUInt ->
    Ptr () ->
    IO CInt
widgetDragFailedCallbackWrapper _cb _ context result_ _ = do
    context' <- (newObject Gdk.DragContext) context
    let result_' = (toEnum . fromIntegral) result_
    result <- _cb  context' result_'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDragFailed :: (GObject a, MonadIO m) => a -> WidgetDragFailedCallback -> m SignalHandlerId
onWidgetDragFailed obj cb = liftIO $ connectWidgetDragFailed obj cb SignalConnectBefore
afterWidgetDragFailed :: (GObject a, MonadIO m) => a -> WidgetDragFailedCallback -> m SignalHandlerId
afterWidgetDragFailed obj cb = connectWidgetDragFailed obj cb SignalConnectAfter

connectWidgetDragFailed :: (GObject a, MonadIO m) =>
                           a -> WidgetDragFailedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragFailed obj cb after = liftIO $ do
    cb' <- mkWidgetDragFailedCallback (widgetDragFailedCallbackWrapper cb)
    connectSignalFunPtr obj "drag-failed" cb' after

-- signal Widget::drag-leave
type WidgetDragLeaveCallback =
    Gdk.DragContext ->
    Word32 ->
    IO ()

noWidgetDragLeaveCallback :: Maybe WidgetDragLeaveCallback
noWidgetDragLeaveCallback = Nothing

type WidgetDragLeaveCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetDragLeaveCallback :: WidgetDragLeaveCallbackC -> IO (FunPtr WidgetDragLeaveCallbackC)

widgetDragLeaveClosure :: WidgetDragLeaveCallback -> IO Closure
widgetDragLeaveClosure cb = newCClosure =<< mkWidgetDragLeaveCallback wrapped
    where wrapped = widgetDragLeaveCallbackWrapper cb

widgetDragLeaveCallbackWrapper ::
    WidgetDragLeaveCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Word32 ->
    Ptr () ->
    IO ()
widgetDragLeaveCallbackWrapper _cb _ context time _ = do
    context' <- (newObject Gdk.DragContext) context
    _cb  context' time

onWidgetDragLeave :: (GObject a, MonadIO m) => a -> WidgetDragLeaveCallback -> m SignalHandlerId
onWidgetDragLeave obj cb = liftIO $ connectWidgetDragLeave obj cb SignalConnectBefore
afterWidgetDragLeave :: (GObject a, MonadIO m) => a -> WidgetDragLeaveCallback -> m SignalHandlerId
afterWidgetDragLeave obj cb = connectWidgetDragLeave obj cb SignalConnectAfter

connectWidgetDragLeave :: (GObject a, MonadIO m) =>
                          a -> WidgetDragLeaveCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragLeave obj cb after = liftIO $ do
    cb' <- mkWidgetDragLeaveCallback (widgetDragLeaveCallbackWrapper cb)
    connectSignalFunPtr obj "drag-leave" cb' after

-- signal Widget::drag-motion
type WidgetDragMotionCallback =
    Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    IO Bool

noWidgetDragMotionCallback :: Maybe WidgetDragMotionCallback
noWidgetDragMotionCallback = Nothing

type WidgetDragMotionCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDragMotionCallback :: WidgetDragMotionCallbackC -> IO (FunPtr WidgetDragMotionCallbackC)

widgetDragMotionClosure :: WidgetDragMotionCallback -> IO Closure
widgetDragMotionClosure cb = newCClosure =<< mkWidgetDragMotionCallback wrapped
    where wrapped = widgetDragMotionCallbackWrapper cb

widgetDragMotionCallbackWrapper ::
    WidgetDragMotionCallback ->
    Ptr () ->
    Ptr Gdk.DragContext ->
    Int32 ->
    Int32 ->
    Word32 ->
    Ptr () ->
    IO CInt
widgetDragMotionCallbackWrapper _cb _ context x y time _ = do
    context' <- (newObject Gdk.DragContext) context
    result <- _cb  context' x y time
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDragMotion :: (GObject a, MonadIO m) => a -> WidgetDragMotionCallback -> m SignalHandlerId
onWidgetDragMotion obj cb = liftIO $ connectWidgetDragMotion obj cb SignalConnectBefore
afterWidgetDragMotion :: (GObject a, MonadIO m) => a -> WidgetDragMotionCallback -> m SignalHandlerId
afterWidgetDragMotion obj cb = connectWidgetDragMotion obj cb SignalConnectAfter

connectWidgetDragMotion :: (GObject a, MonadIO m) =>
                           a -> WidgetDragMotionCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDragMotion obj cb after = liftIO $ do
    cb' <- mkWidgetDragMotionCallback (widgetDragMotionCallbackWrapper cb)
    connectSignalFunPtr obj "drag-motion" cb' after

-- signal Widget::draw
type WidgetDrawCallback =
    Cairo.Context ->
    IO Bool

noWidgetDrawCallback :: Maybe WidgetDrawCallback
noWidgetDrawCallback = Nothing

type WidgetDrawCallbackC =
    Ptr () ->                               -- object
    Ptr Cairo.Context ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetDrawCallback :: WidgetDrawCallbackC -> IO (FunPtr WidgetDrawCallbackC)

widgetDrawClosure :: WidgetDrawCallback -> IO Closure
widgetDrawClosure cb = newCClosure =<< mkWidgetDrawCallback wrapped
    where wrapped = widgetDrawCallbackWrapper cb

widgetDrawCallbackWrapper ::
    WidgetDrawCallback ->
    Ptr () ->
    Ptr Cairo.Context ->
    Ptr () ->
    IO CInt
widgetDrawCallbackWrapper _cb _ cr _ = do
    cr' <- (newBoxed Cairo.Context) cr
    result <- _cb  cr'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetDraw :: (GObject a, MonadIO m) => a -> WidgetDrawCallback -> m SignalHandlerId
onWidgetDraw obj cb = liftIO $ connectWidgetDraw obj cb SignalConnectBefore
afterWidgetDraw :: (GObject a, MonadIO m) => a -> WidgetDrawCallback -> m SignalHandlerId
afterWidgetDraw obj cb = connectWidgetDraw obj cb SignalConnectAfter

connectWidgetDraw :: (GObject a, MonadIO m) =>
                     a -> WidgetDrawCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetDraw obj cb after = liftIO $ do
    cb' <- mkWidgetDrawCallback (widgetDrawCallbackWrapper cb)
    connectSignalFunPtr obj "draw" cb' after

-- signal Widget::enter-notify-event
type WidgetEnterNotifyEventCallback =
    Gdk.EventCrossing ->
    IO Bool

noWidgetEnterNotifyEventCallback :: Maybe WidgetEnterNotifyEventCallback
noWidgetEnterNotifyEventCallback = Nothing

type WidgetEnterNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventCrossing ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetEnterNotifyEventCallback :: WidgetEnterNotifyEventCallbackC -> IO (FunPtr WidgetEnterNotifyEventCallbackC)

widgetEnterNotifyEventClosure :: WidgetEnterNotifyEventCallback -> IO Closure
widgetEnterNotifyEventClosure cb = newCClosure =<< mkWidgetEnterNotifyEventCallback wrapped
    where wrapped = widgetEnterNotifyEventCallbackWrapper cb

widgetEnterNotifyEventCallbackWrapper ::
    WidgetEnterNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventCrossing ->
    Ptr () ->
    IO CInt
widgetEnterNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 88 Gdk.EventCrossing) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetEnterNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetEnterNotifyEventCallback -> m SignalHandlerId
onWidgetEnterNotifyEvent obj cb = liftIO $ connectWidgetEnterNotifyEvent obj cb SignalConnectBefore
afterWidgetEnterNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetEnterNotifyEventCallback -> m SignalHandlerId
afterWidgetEnterNotifyEvent obj cb = connectWidgetEnterNotifyEvent obj cb SignalConnectAfter

connectWidgetEnterNotifyEvent :: (GObject a, MonadIO m) =>
                                 a -> WidgetEnterNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetEnterNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetEnterNotifyEventCallback (widgetEnterNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "enter-notify-event" cb' after

-- signal Widget::event
type WidgetEventCallback =
    Gdk.Event ->
    IO Bool

noWidgetEventCallback :: Maybe WidgetEventCallback
noWidgetEventCallback = Nothing

type WidgetEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Event ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetEventCallback :: WidgetEventCallbackC -> IO (FunPtr WidgetEventCallbackC)

widgetEventClosure :: WidgetEventCallback -> IO Closure
widgetEventClosure cb = newCClosure =<< mkWidgetEventCallback wrapped
    where wrapped = widgetEventCallbackWrapper cb

widgetEventCallbackWrapper ::
    WidgetEventCallback ->
    Ptr () ->
    Ptr Gdk.Event ->
    Ptr () ->
    IO CInt
widgetEventCallbackWrapper _cb _ event _ = do
    event' <- (newBoxed Gdk.Event) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetEvent :: (GObject a, MonadIO m) => a -> WidgetEventCallback -> m SignalHandlerId
onWidgetEvent obj cb = liftIO $ connectWidgetEvent obj cb SignalConnectBefore
afterWidgetEvent :: (GObject a, MonadIO m) => a -> WidgetEventCallback -> m SignalHandlerId
afterWidgetEvent obj cb = connectWidgetEvent obj cb SignalConnectAfter

connectWidgetEvent :: (GObject a, MonadIO m) =>
                      a -> WidgetEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetEvent obj cb after = liftIO $ do
    cb' <- mkWidgetEventCallback (widgetEventCallbackWrapper cb)
    connectSignalFunPtr obj "event" cb' after

-- signal Widget::event-after
type WidgetEventAfterCallback =
    Gdk.Event ->
    IO ()

noWidgetEventAfterCallback :: Maybe WidgetEventAfterCallback
noWidgetEventAfterCallback = Nothing

type WidgetEventAfterCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Event ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetEventAfterCallback :: WidgetEventAfterCallbackC -> IO (FunPtr WidgetEventAfterCallbackC)

widgetEventAfterClosure :: WidgetEventAfterCallback -> IO Closure
widgetEventAfterClosure cb = newCClosure =<< mkWidgetEventAfterCallback wrapped
    where wrapped = widgetEventAfterCallbackWrapper cb

widgetEventAfterCallbackWrapper ::
    WidgetEventAfterCallback ->
    Ptr () ->
    Ptr Gdk.Event ->
    Ptr () ->
    IO ()
widgetEventAfterCallbackWrapper _cb _ event _ = do
    event' <- (newBoxed Gdk.Event) event
    _cb  event'

onWidgetEventAfter :: (GObject a, MonadIO m) => a -> WidgetEventAfterCallback -> m SignalHandlerId
onWidgetEventAfter obj cb = liftIO $ connectWidgetEventAfter obj cb SignalConnectBefore
afterWidgetEventAfter :: (GObject a, MonadIO m) => a -> WidgetEventAfterCallback -> m SignalHandlerId
afterWidgetEventAfter obj cb = connectWidgetEventAfter obj cb SignalConnectAfter

connectWidgetEventAfter :: (GObject a, MonadIO m) =>
                           a -> WidgetEventAfterCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetEventAfter obj cb after = liftIO $ do
    cb' <- mkWidgetEventAfterCallback (widgetEventAfterCallbackWrapper cb)
    connectSignalFunPtr obj "event-after" cb' after

-- signal Widget::focus
type WidgetFocusCallback =
    DirectionType ->
    IO Bool

noWidgetFocusCallback :: Maybe WidgetFocusCallback
noWidgetFocusCallback = Nothing

type WidgetFocusCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetFocusCallback :: WidgetFocusCallbackC -> IO (FunPtr WidgetFocusCallbackC)

widgetFocusClosure :: WidgetFocusCallback -> IO Closure
widgetFocusClosure cb = newCClosure =<< mkWidgetFocusCallback wrapped
    where wrapped = widgetFocusCallbackWrapper cb

widgetFocusCallbackWrapper ::
    WidgetFocusCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO CInt
widgetFocusCallbackWrapper _cb _ direction _ = do
    let direction' = (toEnum . fromIntegral) direction
    result <- _cb  direction'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetFocus :: (GObject a, MonadIO m) => a -> WidgetFocusCallback -> m SignalHandlerId
onWidgetFocus obj cb = liftIO $ connectWidgetFocus obj cb SignalConnectBefore
afterWidgetFocus :: (GObject a, MonadIO m) => a -> WidgetFocusCallback -> m SignalHandlerId
afterWidgetFocus obj cb = connectWidgetFocus obj cb SignalConnectAfter

connectWidgetFocus :: (GObject a, MonadIO m) =>
                      a -> WidgetFocusCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetFocus obj cb after = liftIO $ do
    cb' <- mkWidgetFocusCallback (widgetFocusCallbackWrapper cb)
    connectSignalFunPtr obj "focus" cb' after

-- signal Widget::focus-in-event
type WidgetFocusInEventCallback =
    Gdk.EventFocus ->
    IO Bool

noWidgetFocusInEventCallback :: Maybe WidgetFocusInEventCallback
noWidgetFocusInEventCallback = Nothing

type WidgetFocusInEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventFocus ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetFocusInEventCallback :: WidgetFocusInEventCallbackC -> IO (FunPtr WidgetFocusInEventCallbackC)

widgetFocusInEventClosure :: WidgetFocusInEventCallback -> IO Closure
widgetFocusInEventClosure cb = newCClosure =<< mkWidgetFocusInEventCallback wrapped
    where wrapped = widgetFocusInEventCallbackWrapper cb

widgetFocusInEventCallbackWrapper ::
    WidgetFocusInEventCallback ->
    Ptr () ->
    Ptr Gdk.EventFocus ->
    Ptr () ->
    IO CInt
widgetFocusInEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 24 Gdk.EventFocus) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetFocusInEvent :: (GObject a, MonadIO m) => a -> WidgetFocusInEventCallback -> m SignalHandlerId
onWidgetFocusInEvent obj cb = liftIO $ connectWidgetFocusInEvent obj cb SignalConnectBefore
afterWidgetFocusInEvent :: (GObject a, MonadIO m) => a -> WidgetFocusInEventCallback -> m SignalHandlerId
afterWidgetFocusInEvent obj cb = connectWidgetFocusInEvent obj cb SignalConnectAfter

connectWidgetFocusInEvent :: (GObject a, MonadIO m) =>
                             a -> WidgetFocusInEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetFocusInEvent obj cb after = liftIO $ do
    cb' <- mkWidgetFocusInEventCallback (widgetFocusInEventCallbackWrapper cb)
    connectSignalFunPtr obj "focus-in-event" cb' after

-- signal Widget::focus-out-event
type WidgetFocusOutEventCallback =
    Gdk.EventFocus ->
    IO Bool

noWidgetFocusOutEventCallback :: Maybe WidgetFocusOutEventCallback
noWidgetFocusOutEventCallback = Nothing

type WidgetFocusOutEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventFocus ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetFocusOutEventCallback :: WidgetFocusOutEventCallbackC -> IO (FunPtr WidgetFocusOutEventCallbackC)

widgetFocusOutEventClosure :: WidgetFocusOutEventCallback -> IO Closure
widgetFocusOutEventClosure cb = newCClosure =<< mkWidgetFocusOutEventCallback wrapped
    where wrapped = widgetFocusOutEventCallbackWrapper cb

widgetFocusOutEventCallbackWrapper ::
    WidgetFocusOutEventCallback ->
    Ptr () ->
    Ptr Gdk.EventFocus ->
    Ptr () ->
    IO CInt
widgetFocusOutEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 24 Gdk.EventFocus) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetFocusOutEvent :: (GObject a, MonadIO m) => a -> WidgetFocusOutEventCallback -> m SignalHandlerId
onWidgetFocusOutEvent obj cb = liftIO $ connectWidgetFocusOutEvent obj cb SignalConnectBefore
afterWidgetFocusOutEvent :: (GObject a, MonadIO m) => a -> WidgetFocusOutEventCallback -> m SignalHandlerId
afterWidgetFocusOutEvent obj cb = connectWidgetFocusOutEvent obj cb SignalConnectAfter

connectWidgetFocusOutEvent :: (GObject a, MonadIO m) =>
                              a -> WidgetFocusOutEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetFocusOutEvent obj cb after = liftIO $ do
    cb' <- mkWidgetFocusOutEventCallback (widgetFocusOutEventCallbackWrapper cb)
    connectSignalFunPtr obj "focus-out-event" cb' after

-- signal Widget::grab-broken-event
type WidgetGrabBrokenEventCallback =
    Gdk.EventGrabBroken ->
    IO Bool

noWidgetGrabBrokenEventCallback :: Maybe WidgetGrabBrokenEventCallback
noWidgetGrabBrokenEventCallback = Nothing

type WidgetGrabBrokenEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventGrabBroken ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetGrabBrokenEventCallback :: WidgetGrabBrokenEventCallbackC -> IO (FunPtr WidgetGrabBrokenEventCallbackC)

widgetGrabBrokenEventClosure :: WidgetGrabBrokenEventCallback -> IO Closure
widgetGrabBrokenEventClosure cb = newCClosure =<< mkWidgetGrabBrokenEventCallback wrapped
    where wrapped = widgetGrabBrokenEventCallbackWrapper cb

widgetGrabBrokenEventCallbackWrapper ::
    WidgetGrabBrokenEventCallback ->
    Ptr () ->
    Ptr Gdk.EventGrabBroken ->
    Ptr () ->
    IO CInt
widgetGrabBrokenEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 40 Gdk.EventGrabBroken) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetGrabBrokenEvent :: (GObject a, MonadIO m) => a -> WidgetGrabBrokenEventCallback -> m SignalHandlerId
onWidgetGrabBrokenEvent obj cb = liftIO $ connectWidgetGrabBrokenEvent obj cb SignalConnectBefore
afterWidgetGrabBrokenEvent :: (GObject a, MonadIO m) => a -> WidgetGrabBrokenEventCallback -> m SignalHandlerId
afterWidgetGrabBrokenEvent obj cb = connectWidgetGrabBrokenEvent obj cb SignalConnectAfter

connectWidgetGrabBrokenEvent :: (GObject a, MonadIO m) =>
                                a -> WidgetGrabBrokenEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetGrabBrokenEvent obj cb after = liftIO $ do
    cb' <- mkWidgetGrabBrokenEventCallback (widgetGrabBrokenEventCallbackWrapper cb)
    connectSignalFunPtr obj "grab-broken-event" cb' after

-- signal Widget::grab-focus
type WidgetGrabFocusCallback =
    IO ()

noWidgetGrabFocusCallback :: Maybe WidgetGrabFocusCallback
noWidgetGrabFocusCallback = Nothing

type WidgetGrabFocusCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetGrabFocusCallback :: WidgetGrabFocusCallbackC -> IO (FunPtr WidgetGrabFocusCallbackC)

widgetGrabFocusClosure :: WidgetGrabFocusCallback -> IO Closure
widgetGrabFocusClosure cb = newCClosure =<< mkWidgetGrabFocusCallback wrapped
    where wrapped = widgetGrabFocusCallbackWrapper cb

widgetGrabFocusCallbackWrapper ::
    WidgetGrabFocusCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetGrabFocusCallbackWrapper _cb _ _ = do
    _cb 

onWidgetGrabFocus :: (GObject a, MonadIO m) => a -> WidgetGrabFocusCallback -> m SignalHandlerId
onWidgetGrabFocus obj cb = liftIO $ connectWidgetGrabFocus obj cb SignalConnectBefore
afterWidgetGrabFocus :: (GObject a, MonadIO m) => a -> WidgetGrabFocusCallback -> m SignalHandlerId
afterWidgetGrabFocus obj cb = connectWidgetGrabFocus obj cb SignalConnectAfter

connectWidgetGrabFocus :: (GObject a, MonadIO m) =>
                          a -> WidgetGrabFocusCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetGrabFocus obj cb after = liftIO $ do
    cb' <- mkWidgetGrabFocusCallback (widgetGrabFocusCallbackWrapper cb)
    connectSignalFunPtr obj "grab-focus" cb' after

-- signal Widget::grab-notify
type WidgetGrabNotifyCallback =
    Bool ->
    IO ()

noWidgetGrabNotifyCallback :: Maybe WidgetGrabNotifyCallback
noWidgetGrabNotifyCallback = Nothing

type WidgetGrabNotifyCallbackC =
    Ptr () ->                               -- object
    CInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetGrabNotifyCallback :: WidgetGrabNotifyCallbackC -> IO (FunPtr WidgetGrabNotifyCallbackC)

widgetGrabNotifyClosure :: WidgetGrabNotifyCallback -> IO Closure
widgetGrabNotifyClosure cb = newCClosure =<< mkWidgetGrabNotifyCallback wrapped
    where wrapped = widgetGrabNotifyCallbackWrapper cb

widgetGrabNotifyCallbackWrapper ::
    WidgetGrabNotifyCallback ->
    Ptr () ->
    CInt ->
    Ptr () ->
    IO ()
widgetGrabNotifyCallbackWrapper _cb _ was_grabbed _ = do
    let was_grabbed' = (/= 0) was_grabbed
    _cb  was_grabbed'

onWidgetGrabNotify :: (GObject a, MonadIO m) => a -> WidgetGrabNotifyCallback -> m SignalHandlerId
onWidgetGrabNotify obj cb = liftIO $ connectWidgetGrabNotify obj cb SignalConnectBefore
afterWidgetGrabNotify :: (GObject a, MonadIO m) => a -> WidgetGrabNotifyCallback -> m SignalHandlerId
afterWidgetGrabNotify obj cb = connectWidgetGrabNotify obj cb SignalConnectAfter

connectWidgetGrabNotify :: (GObject a, MonadIO m) =>
                           a -> WidgetGrabNotifyCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetGrabNotify obj cb after = liftIO $ do
    cb' <- mkWidgetGrabNotifyCallback (widgetGrabNotifyCallbackWrapper cb)
    connectSignalFunPtr obj "grab-notify" cb' after

-- signal Widget::hide
type WidgetHideCallback =
    IO ()

noWidgetHideCallback :: Maybe WidgetHideCallback
noWidgetHideCallback = Nothing

type WidgetHideCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetHideCallback :: WidgetHideCallbackC -> IO (FunPtr WidgetHideCallbackC)

widgetHideClosure :: WidgetHideCallback -> IO Closure
widgetHideClosure cb = newCClosure =<< mkWidgetHideCallback wrapped
    where wrapped = widgetHideCallbackWrapper cb

widgetHideCallbackWrapper ::
    WidgetHideCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetHideCallbackWrapper _cb _ _ = do
    _cb 

onWidgetHide :: (GObject a, MonadIO m) => a -> WidgetHideCallback -> m SignalHandlerId
onWidgetHide obj cb = liftIO $ connectWidgetHide obj cb SignalConnectBefore
afterWidgetHide :: (GObject a, MonadIO m) => a -> WidgetHideCallback -> m SignalHandlerId
afterWidgetHide obj cb = connectWidgetHide obj cb SignalConnectAfter

connectWidgetHide :: (GObject a, MonadIO m) =>
                     a -> WidgetHideCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetHide obj cb after = liftIO $ do
    cb' <- mkWidgetHideCallback (widgetHideCallbackWrapper cb)
    connectSignalFunPtr obj "hide" cb' after

-- signal Widget::hierarchy-changed
type WidgetHierarchyChangedCallback =
    Maybe Widget ->
    IO ()

noWidgetHierarchyChangedCallback :: Maybe WidgetHierarchyChangedCallback
noWidgetHierarchyChangedCallback = Nothing

type WidgetHierarchyChangedCallbackC =
    Ptr () ->                               -- object
    Ptr Widget ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetHierarchyChangedCallback :: WidgetHierarchyChangedCallbackC -> IO (FunPtr WidgetHierarchyChangedCallbackC)

widgetHierarchyChangedClosure :: WidgetHierarchyChangedCallback -> IO Closure
widgetHierarchyChangedClosure cb = newCClosure =<< mkWidgetHierarchyChangedCallback wrapped
    where wrapped = widgetHierarchyChangedCallbackWrapper cb

widgetHierarchyChangedCallbackWrapper ::
    WidgetHierarchyChangedCallback ->
    Ptr () ->
    Ptr Widget ->
    Ptr () ->
    IO ()
widgetHierarchyChangedCallbackWrapper _cb _ previous_toplevel _ = do
    maybePrevious_toplevel <-
        if previous_toplevel == nullPtr
        then return Nothing
        else do
            previous_toplevel' <- (newObject Widget) previous_toplevel
            return $ Just previous_toplevel'
    _cb  maybePrevious_toplevel

onWidgetHierarchyChanged :: (GObject a, MonadIO m) => a -> WidgetHierarchyChangedCallback -> m SignalHandlerId
onWidgetHierarchyChanged obj cb = liftIO $ connectWidgetHierarchyChanged obj cb SignalConnectBefore
afterWidgetHierarchyChanged :: (GObject a, MonadIO m) => a -> WidgetHierarchyChangedCallback -> m SignalHandlerId
afterWidgetHierarchyChanged obj cb = connectWidgetHierarchyChanged obj cb SignalConnectAfter

connectWidgetHierarchyChanged :: (GObject a, MonadIO m) =>
                                 a -> WidgetHierarchyChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetHierarchyChanged obj cb after = liftIO $ do
    cb' <- mkWidgetHierarchyChangedCallback (widgetHierarchyChangedCallbackWrapper cb)
    connectSignalFunPtr obj "hierarchy-changed" cb' after

-- signal Widget::key-press-event
type WidgetKeyPressEventCallback =
    Gdk.EventKey ->
    IO Bool

noWidgetKeyPressEventCallback :: Maybe WidgetKeyPressEventCallback
noWidgetKeyPressEventCallback = Nothing

type WidgetKeyPressEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventKey ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetKeyPressEventCallback :: WidgetKeyPressEventCallbackC -> IO (FunPtr WidgetKeyPressEventCallbackC)

widgetKeyPressEventClosure :: WidgetKeyPressEventCallback -> IO Closure
widgetKeyPressEventClosure cb = newCClosure =<< mkWidgetKeyPressEventCallback wrapped
    where wrapped = widgetKeyPressEventCallbackWrapper cb

widgetKeyPressEventCallbackWrapper ::
    WidgetKeyPressEventCallback ->
    Ptr () ->
    Ptr Gdk.EventKey ->
    Ptr () ->
    IO CInt
widgetKeyPressEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 56 Gdk.EventKey) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetKeyPressEvent :: (GObject a, MonadIO m) => a -> WidgetKeyPressEventCallback -> m SignalHandlerId
onWidgetKeyPressEvent obj cb = liftIO $ connectWidgetKeyPressEvent obj cb SignalConnectBefore
afterWidgetKeyPressEvent :: (GObject a, MonadIO m) => a -> WidgetKeyPressEventCallback -> m SignalHandlerId
afterWidgetKeyPressEvent obj cb = connectWidgetKeyPressEvent obj cb SignalConnectAfter

connectWidgetKeyPressEvent :: (GObject a, MonadIO m) =>
                              a -> WidgetKeyPressEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetKeyPressEvent obj cb after = liftIO $ do
    cb' <- mkWidgetKeyPressEventCallback (widgetKeyPressEventCallbackWrapper cb)
    connectSignalFunPtr obj "key-press-event" cb' after

-- signal Widget::key-release-event
type WidgetKeyReleaseEventCallback =
    Gdk.EventKey ->
    IO Bool

noWidgetKeyReleaseEventCallback :: Maybe WidgetKeyReleaseEventCallback
noWidgetKeyReleaseEventCallback = Nothing

type WidgetKeyReleaseEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventKey ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetKeyReleaseEventCallback :: WidgetKeyReleaseEventCallbackC -> IO (FunPtr WidgetKeyReleaseEventCallbackC)

widgetKeyReleaseEventClosure :: WidgetKeyReleaseEventCallback -> IO Closure
widgetKeyReleaseEventClosure cb = newCClosure =<< mkWidgetKeyReleaseEventCallback wrapped
    where wrapped = widgetKeyReleaseEventCallbackWrapper cb

widgetKeyReleaseEventCallbackWrapper ::
    WidgetKeyReleaseEventCallback ->
    Ptr () ->
    Ptr Gdk.EventKey ->
    Ptr () ->
    IO CInt
widgetKeyReleaseEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 56 Gdk.EventKey) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetKeyReleaseEvent :: (GObject a, MonadIO m) => a -> WidgetKeyReleaseEventCallback -> m SignalHandlerId
onWidgetKeyReleaseEvent obj cb = liftIO $ connectWidgetKeyReleaseEvent obj cb SignalConnectBefore
afterWidgetKeyReleaseEvent :: (GObject a, MonadIO m) => a -> WidgetKeyReleaseEventCallback -> m SignalHandlerId
afterWidgetKeyReleaseEvent obj cb = connectWidgetKeyReleaseEvent obj cb SignalConnectAfter

connectWidgetKeyReleaseEvent :: (GObject a, MonadIO m) =>
                                a -> WidgetKeyReleaseEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetKeyReleaseEvent obj cb after = liftIO $ do
    cb' <- mkWidgetKeyReleaseEventCallback (widgetKeyReleaseEventCallbackWrapper cb)
    connectSignalFunPtr obj "key-release-event" cb' after

-- signal Widget::keynav-failed
type WidgetKeynavFailedCallback =
    DirectionType ->
    IO Bool

noWidgetKeynavFailedCallback :: Maybe WidgetKeynavFailedCallback
noWidgetKeynavFailedCallback = Nothing

type WidgetKeynavFailedCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetKeynavFailedCallback :: WidgetKeynavFailedCallbackC -> IO (FunPtr WidgetKeynavFailedCallbackC)

widgetKeynavFailedClosure :: WidgetKeynavFailedCallback -> IO Closure
widgetKeynavFailedClosure cb = newCClosure =<< mkWidgetKeynavFailedCallback wrapped
    where wrapped = widgetKeynavFailedCallbackWrapper cb

widgetKeynavFailedCallbackWrapper ::
    WidgetKeynavFailedCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO CInt
widgetKeynavFailedCallbackWrapper _cb _ direction _ = do
    let direction' = (toEnum . fromIntegral) direction
    result <- _cb  direction'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetKeynavFailed :: (GObject a, MonadIO m) => a -> WidgetKeynavFailedCallback -> m SignalHandlerId
onWidgetKeynavFailed obj cb = liftIO $ connectWidgetKeynavFailed obj cb SignalConnectBefore
afterWidgetKeynavFailed :: (GObject a, MonadIO m) => a -> WidgetKeynavFailedCallback -> m SignalHandlerId
afterWidgetKeynavFailed obj cb = connectWidgetKeynavFailed obj cb SignalConnectAfter

connectWidgetKeynavFailed :: (GObject a, MonadIO m) =>
                             a -> WidgetKeynavFailedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetKeynavFailed obj cb after = liftIO $ do
    cb' <- mkWidgetKeynavFailedCallback (widgetKeynavFailedCallbackWrapper cb)
    connectSignalFunPtr obj "keynav-failed" cb' after

-- signal Widget::leave-notify-event
type WidgetLeaveNotifyEventCallback =
    Gdk.EventCrossing ->
    IO Bool

noWidgetLeaveNotifyEventCallback :: Maybe WidgetLeaveNotifyEventCallback
noWidgetLeaveNotifyEventCallback = Nothing

type WidgetLeaveNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventCrossing ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetLeaveNotifyEventCallback :: WidgetLeaveNotifyEventCallbackC -> IO (FunPtr WidgetLeaveNotifyEventCallbackC)

widgetLeaveNotifyEventClosure :: WidgetLeaveNotifyEventCallback -> IO Closure
widgetLeaveNotifyEventClosure cb = newCClosure =<< mkWidgetLeaveNotifyEventCallback wrapped
    where wrapped = widgetLeaveNotifyEventCallbackWrapper cb

widgetLeaveNotifyEventCallbackWrapper ::
    WidgetLeaveNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventCrossing ->
    Ptr () ->
    IO CInt
widgetLeaveNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 88 Gdk.EventCrossing) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetLeaveNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetLeaveNotifyEventCallback -> m SignalHandlerId
onWidgetLeaveNotifyEvent obj cb = liftIO $ connectWidgetLeaveNotifyEvent obj cb SignalConnectBefore
afterWidgetLeaveNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetLeaveNotifyEventCallback -> m SignalHandlerId
afterWidgetLeaveNotifyEvent obj cb = connectWidgetLeaveNotifyEvent obj cb SignalConnectAfter

connectWidgetLeaveNotifyEvent :: (GObject a, MonadIO m) =>
                                 a -> WidgetLeaveNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetLeaveNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetLeaveNotifyEventCallback (widgetLeaveNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "leave-notify-event" cb' after

-- signal Widget::map
type WidgetMapCallback =
    IO ()

noWidgetMapCallback :: Maybe WidgetMapCallback
noWidgetMapCallback = Nothing

type WidgetMapCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetMapCallback :: WidgetMapCallbackC -> IO (FunPtr WidgetMapCallbackC)

widgetMapClosure :: WidgetMapCallback -> IO Closure
widgetMapClosure cb = newCClosure =<< mkWidgetMapCallback wrapped
    where wrapped = widgetMapCallbackWrapper cb

widgetMapCallbackWrapper ::
    WidgetMapCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetMapCallbackWrapper _cb _ _ = do
    _cb 

onWidgetMap :: (GObject a, MonadIO m) => a -> WidgetMapCallback -> m SignalHandlerId
onWidgetMap obj cb = liftIO $ connectWidgetMap obj cb SignalConnectBefore
afterWidgetMap :: (GObject a, MonadIO m) => a -> WidgetMapCallback -> m SignalHandlerId
afterWidgetMap obj cb = connectWidgetMap obj cb SignalConnectAfter

connectWidgetMap :: (GObject a, MonadIO m) =>
                    a -> WidgetMapCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetMap obj cb after = liftIO $ do
    cb' <- mkWidgetMapCallback (widgetMapCallbackWrapper cb)
    connectSignalFunPtr obj "map" cb' after

-- signal Widget::map-event
type WidgetMapEventCallback =
    Gdk.EventAny ->
    IO Bool

noWidgetMapEventCallback :: Maybe WidgetMapEventCallback
noWidgetMapEventCallback = Nothing

type WidgetMapEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventAny ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetMapEventCallback :: WidgetMapEventCallbackC -> IO (FunPtr WidgetMapEventCallbackC)

widgetMapEventClosure :: WidgetMapEventCallback -> IO Closure
widgetMapEventClosure cb = newCClosure =<< mkWidgetMapEventCallback wrapped
    where wrapped = widgetMapEventCallbackWrapper cb

widgetMapEventCallbackWrapper ::
    WidgetMapEventCallback ->
    Ptr () ->
    Ptr Gdk.EventAny ->
    Ptr () ->
    IO CInt
widgetMapEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 24 Gdk.EventAny) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetMapEvent :: (GObject a, MonadIO m) => a -> WidgetMapEventCallback -> m SignalHandlerId
onWidgetMapEvent obj cb = liftIO $ connectWidgetMapEvent obj cb SignalConnectBefore
afterWidgetMapEvent :: (GObject a, MonadIO m) => a -> WidgetMapEventCallback -> m SignalHandlerId
afterWidgetMapEvent obj cb = connectWidgetMapEvent obj cb SignalConnectAfter

connectWidgetMapEvent :: (GObject a, MonadIO m) =>
                         a -> WidgetMapEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetMapEvent obj cb after = liftIO $ do
    cb' <- mkWidgetMapEventCallback (widgetMapEventCallbackWrapper cb)
    connectSignalFunPtr obj "map-event" cb' after

-- signal Widget::mnemonic-activate
type WidgetMnemonicActivateCallback =
    Bool ->
    IO Bool

noWidgetMnemonicActivateCallback :: Maybe WidgetMnemonicActivateCallback
noWidgetMnemonicActivateCallback = Nothing

type WidgetMnemonicActivateCallbackC =
    Ptr () ->                               -- object
    CInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetMnemonicActivateCallback :: WidgetMnemonicActivateCallbackC -> IO (FunPtr WidgetMnemonicActivateCallbackC)

widgetMnemonicActivateClosure :: WidgetMnemonicActivateCallback -> IO Closure
widgetMnemonicActivateClosure cb = newCClosure =<< mkWidgetMnemonicActivateCallback wrapped
    where wrapped = widgetMnemonicActivateCallbackWrapper cb

widgetMnemonicActivateCallbackWrapper ::
    WidgetMnemonicActivateCallback ->
    Ptr () ->
    CInt ->
    Ptr () ->
    IO CInt
widgetMnemonicActivateCallbackWrapper _cb _ arg1 _ = do
    let arg1' = (/= 0) arg1
    result <- _cb  arg1'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetMnemonicActivate :: (GObject a, MonadIO m) => a -> WidgetMnemonicActivateCallback -> m SignalHandlerId
onWidgetMnemonicActivate obj cb = liftIO $ connectWidgetMnemonicActivate obj cb SignalConnectBefore
afterWidgetMnemonicActivate :: (GObject a, MonadIO m) => a -> WidgetMnemonicActivateCallback -> m SignalHandlerId
afterWidgetMnemonicActivate obj cb = connectWidgetMnemonicActivate obj cb SignalConnectAfter

connectWidgetMnemonicActivate :: (GObject a, MonadIO m) =>
                                 a -> WidgetMnemonicActivateCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetMnemonicActivate obj cb after = liftIO $ do
    cb' <- mkWidgetMnemonicActivateCallback (widgetMnemonicActivateCallbackWrapper cb)
    connectSignalFunPtr obj "mnemonic-activate" cb' after

-- signal Widget::motion-notify-event
type WidgetMotionNotifyEventCallback =
    Gdk.EventMotion ->
    IO Bool

noWidgetMotionNotifyEventCallback :: Maybe WidgetMotionNotifyEventCallback
noWidgetMotionNotifyEventCallback = Nothing

type WidgetMotionNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventMotion ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetMotionNotifyEventCallback :: WidgetMotionNotifyEventCallbackC -> IO (FunPtr WidgetMotionNotifyEventCallbackC)

widgetMotionNotifyEventClosure :: WidgetMotionNotifyEventCallback -> IO Closure
widgetMotionNotifyEventClosure cb = newCClosure =<< mkWidgetMotionNotifyEventCallback wrapped
    where wrapped = widgetMotionNotifyEventCallbackWrapper cb

widgetMotionNotifyEventCallbackWrapper ::
    WidgetMotionNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventMotion ->
    Ptr () ->
    IO CInt
widgetMotionNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 80 Gdk.EventMotion) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetMotionNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetMotionNotifyEventCallback -> m SignalHandlerId
onWidgetMotionNotifyEvent obj cb = liftIO $ connectWidgetMotionNotifyEvent obj cb SignalConnectBefore
afterWidgetMotionNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetMotionNotifyEventCallback -> m SignalHandlerId
afterWidgetMotionNotifyEvent obj cb = connectWidgetMotionNotifyEvent obj cb SignalConnectAfter

connectWidgetMotionNotifyEvent :: (GObject a, MonadIO m) =>
                                  a -> WidgetMotionNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetMotionNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetMotionNotifyEventCallback (widgetMotionNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "motion-notify-event" cb' after

-- signal Widget::move-focus
type WidgetMoveFocusCallback =
    DirectionType ->
    IO ()

noWidgetMoveFocusCallback :: Maybe WidgetMoveFocusCallback
noWidgetMoveFocusCallback = Nothing

type WidgetMoveFocusCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetMoveFocusCallback :: WidgetMoveFocusCallbackC -> IO (FunPtr WidgetMoveFocusCallbackC)

widgetMoveFocusClosure :: WidgetMoveFocusCallback -> IO Closure
widgetMoveFocusClosure cb = newCClosure =<< mkWidgetMoveFocusCallback wrapped
    where wrapped = widgetMoveFocusCallbackWrapper cb

widgetMoveFocusCallbackWrapper ::
    WidgetMoveFocusCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
widgetMoveFocusCallbackWrapper _cb _ direction _ = do
    let direction' = (toEnum . fromIntegral) direction
    _cb  direction'

onWidgetMoveFocus :: (GObject a, MonadIO m) => a -> WidgetMoveFocusCallback -> m SignalHandlerId
onWidgetMoveFocus obj cb = liftIO $ connectWidgetMoveFocus obj cb SignalConnectBefore
afterWidgetMoveFocus :: (GObject a, MonadIO m) => a -> WidgetMoveFocusCallback -> m SignalHandlerId
afterWidgetMoveFocus obj cb = connectWidgetMoveFocus obj cb SignalConnectAfter

connectWidgetMoveFocus :: (GObject a, MonadIO m) =>
                          a -> WidgetMoveFocusCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetMoveFocus obj cb after = liftIO $ do
    cb' <- mkWidgetMoveFocusCallback (widgetMoveFocusCallbackWrapper cb)
    connectSignalFunPtr obj "move-focus" cb' after

-- signal Widget::parent-set
type WidgetParentSetCallback =
    Maybe Widget ->
    IO ()

noWidgetParentSetCallback :: Maybe WidgetParentSetCallback
noWidgetParentSetCallback = Nothing

type WidgetParentSetCallbackC =
    Ptr () ->                               -- object
    Ptr Widget ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetParentSetCallback :: WidgetParentSetCallbackC -> IO (FunPtr WidgetParentSetCallbackC)

widgetParentSetClosure :: WidgetParentSetCallback -> IO Closure
widgetParentSetClosure cb = newCClosure =<< mkWidgetParentSetCallback wrapped
    where wrapped = widgetParentSetCallbackWrapper cb

widgetParentSetCallbackWrapper ::
    WidgetParentSetCallback ->
    Ptr () ->
    Ptr Widget ->
    Ptr () ->
    IO ()
widgetParentSetCallbackWrapper _cb _ old_parent _ = do
    maybeOld_parent <-
        if old_parent == nullPtr
        then return Nothing
        else do
            old_parent' <- (newObject Widget) old_parent
            return $ Just old_parent'
    _cb  maybeOld_parent

onWidgetParentSet :: (GObject a, MonadIO m) => a -> WidgetParentSetCallback -> m SignalHandlerId
onWidgetParentSet obj cb = liftIO $ connectWidgetParentSet obj cb SignalConnectBefore
afterWidgetParentSet :: (GObject a, MonadIO m) => a -> WidgetParentSetCallback -> m SignalHandlerId
afterWidgetParentSet obj cb = connectWidgetParentSet obj cb SignalConnectAfter

connectWidgetParentSet :: (GObject a, MonadIO m) =>
                          a -> WidgetParentSetCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetParentSet obj cb after = liftIO $ do
    cb' <- mkWidgetParentSetCallback (widgetParentSetCallbackWrapper cb)
    connectSignalFunPtr obj "parent-set" cb' after

-- signal Widget::popup-menu
type WidgetPopupMenuCallback =
    IO Bool

noWidgetPopupMenuCallback :: Maybe WidgetPopupMenuCallback
noWidgetPopupMenuCallback = Nothing

type WidgetPopupMenuCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetPopupMenuCallback :: WidgetPopupMenuCallbackC -> IO (FunPtr WidgetPopupMenuCallbackC)

widgetPopupMenuClosure :: WidgetPopupMenuCallback -> IO Closure
widgetPopupMenuClosure cb = newCClosure =<< mkWidgetPopupMenuCallback wrapped
    where wrapped = widgetPopupMenuCallbackWrapper cb

widgetPopupMenuCallbackWrapper ::
    WidgetPopupMenuCallback ->
    Ptr () ->
    Ptr () ->
    IO CInt
widgetPopupMenuCallbackWrapper _cb _ _ = do
    result <- _cb 
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetPopupMenu :: (GObject a, MonadIO m) => a -> WidgetPopupMenuCallback -> m SignalHandlerId
onWidgetPopupMenu obj cb = liftIO $ connectWidgetPopupMenu obj cb SignalConnectBefore
afterWidgetPopupMenu :: (GObject a, MonadIO m) => a -> WidgetPopupMenuCallback -> m SignalHandlerId
afterWidgetPopupMenu obj cb = connectWidgetPopupMenu obj cb SignalConnectAfter

connectWidgetPopupMenu :: (GObject a, MonadIO m) =>
                          a -> WidgetPopupMenuCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetPopupMenu obj cb after = liftIO $ do
    cb' <- mkWidgetPopupMenuCallback (widgetPopupMenuCallbackWrapper cb)
    connectSignalFunPtr obj "popup-menu" cb' after

-- signal Widget::property-notify-event
type WidgetPropertyNotifyEventCallback =
    Gdk.EventProperty ->
    IO Bool

noWidgetPropertyNotifyEventCallback :: Maybe WidgetPropertyNotifyEventCallback
noWidgetPropertyNotifyEventCallback = Nothing

type WidgetPropertyNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventProperty ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetPropertyNotifyEventCallback :: WidgetPropertyNotifyEventCallbackC -> IO (FunPtr WidgetPropertyNotifyEventCallbackC)

widgetPropertyNotifyEventClosure :: WidgetPropertyNotifyEventCallback -> IO Closure
widgetPropertyNotifyEventClosure cb = newCClosure =<< mkWidgetPropertyNotifyEventCallback wrapped
    where wrapped = widgetPropertyNotifyEventCallbackWrapper cb

widgetPropertyNotifyEventCallbackWrapper ::
    WidgetPropertyNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventProperty ->
    Ptr () ->
    IO CInt
widgetPropertyNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 40 Gdk.EventProperty) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetPropertyNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetPropertyNotifyEventCallback -> m SignalHandlerId
onWidgetPropertyNotifyEvent obj cb = liftIO $ connectWidgetPropertyNotifyEvent obj cb SignalConnectBefore
afterWidgetPropertyNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetPropertyNotifyEventCallback -> m SignalHandlerId
afterWidgetPropertyNotifyEvent obj cb = connectWidgetPropertyNotifyEvent obj cb SignalConnectAfter

connectWidgetPropertyNotifyEvent :: (GObject a, MonadIO m) =>
                                    a -> WidgetPropertyNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetPropertyNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetPropertyNotifyEventCallback (widgetPropertyNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "property-notify-event" cb' after

-- signal Widget::proximity-in-event
type WidgetProximityInEventCallback =
    Gdk.EventProximity ->
    IO Bool

noWidgetProximityInEventCallback :: Maybe WidgetProximityInEventCallback
noWidgetProximityInEventCallback = Nothing

type WidgetProximityInEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventProximity ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetProximityInEventCallback :: WidgetProximityInEventCallbackC -> IO (FunPtr WidgetProximityInEventCallbackC)

widgetProximityInEventClosure :: WidgetProximityInEventCallback -> IO Closure
widgetProximityInEventClosure cb = newCClosure =<< mkWidgetProximityInEventCallback wrapped
    where wrapped = widgetProximityInEventCallbackWrapper cb

widgetProximityInEventCallbackWrapper ::
    WidgetProximityInEventCallback ->
    Ptr () ->
    Ptr Gdk.EventProximity ->
    Ptr () ->
    IO CInt
widgetProximityInEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 32 Gdk.EventProximity) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetProximityInEvent :: (GObject a, MonadIO m) => a -> WidgetProximityInEventCallback -> m SignalHandlerId
onWidgetProximityInEvent obj cb = liftIO $ connectWidgetProximityInEvent obj cb SignalConnectBefore
afterWidgetProximityInEvent :: (GObject a, MonadIO m) => a -> WidgetProximityInEventCallback -> m SignalHandlerId
afterWidgetProximityInEvent obj cb = connectWidgetProximityInEvent obj cb SignalConnectAfter

connectWidgetProximityInEvent :: (GObject a, MonadIO m) =>
                                 a -> WidgetProximityInEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetProximityInEvent obj cb after = liftIO $ do
    cb' <- mkWidgetProximityInEventCallback (widgetProximityInEventCallbackWrapper cb)
    connectSignalFunPtr obj "proximity-in-event" cb' after

-- signal Widget::proximity-out-event
type WidgetProximityOutEventCallback =
    Gdk.EventProximity ->
    IO Bool

noWidgetProximityOutEventCallback :: Maybe WidgetProximityOutEventCallback
noWidgetProximityOutEventCallback = Nothing

type WidgetProximityOutEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventProximity ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetProximityOutEventCallback :: WidgetProximityOutEventCallbackC -> IO (FunPtr WidgetProximityOutEventCallbackC)

widgetProximityOutEventClosure :: WidgetProximityOutEventCallback -> IO Closure
widgetProximityOutEventClosure cb = newCClosure =<< mkWidgetProximityOutEventCallback wrapped
    where wrapped = widgetProximityOutEventCallbackWrapper cb

widgetProximityOutEventCallbackWrapper ::
    WidgetProximityOutEventCallback ->
    Ptr () ->
    Ptr Gdk.EventProximity ->
    Ptr () ->
    IO CInt
widgetProximityOutEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 32 Gdk.EventProximity) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetProximityOutEvent :: (GObject a, MonadIO m) => a -> WidgetProximityOutEventCallback -> m SignalHandlerId
onWidgetProximityOutEvent obj cb = liftIO $ connectWidgetProximityOutEvent obj cb SignalConnectBefore
afterWidgetProximityOutEvent :: (GObject a, MonadIO m) => a -> WidgetProximityOutEventCallback -> m SignalHandlerId
afterWidgetProximityOutEvent obj cb = connectWidgetProximityOutEvent obj cb SignalConnectAfter

connectWidgetProximityOutEvent :: (GObject a, MonadIO m) =>
                                  a -> WidgetProximityOutEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetProximityOutEvent obj cb after = liftIO $ do
    cb' <- mkWidgetProximityOutEventCallback (widgetProximityOutEventCallbackWrapper cb)
    connectSignalFunPtr obj "proximity-out-event" cb' after

-- signal Widget::query-tooltip
type WidgetQueryTooltipCallback =
    Int32 ->
    Int32 ->
    Bool ->
    Tooltip ->
    IO Bool

noWidgetQueryTooltipCallback :: Maybe WidgetQueryTooltipCallback
noWidgetQueryTooltipCallback = Nothing

type WidgetQueryTooltipCallbackC =
    Ptr () ->                               -- object
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Tooltip ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetQueryTooltipCallback :: WidgetQueryTooltipCallbackC -> IO (FunPtr WidgetQueryTooltipCallbackC)

widgetQueryTooltipClosure :: WidgetQueryTooltipCallback -> IO Closure
widgetQueryTooltipClosure cb = newCClosure =<< mkWidgetQueryTooltipCallback wrapped
    where wrapped = widgetQueryTooltipCallbackWrapper cb

widgetQueryTooltipCallbackWrapper ::
    WidgetQueryTooltipCallback ->
    Ptr () ->
    Int32 ->
    Int32 ->
    CInt ->
    Ptr Tooltip ->
    Ptr () ->
    IO CInt
widgetQueryTooltipCallbackWrapper _cb _ x y keyboard_mode tooltip _ = do
    let keyboard_mode' = (/= 0) keyboard_mode
    tooltip' <- (newObject Tooltip) tooltip
    result <- _cb  x y keyboard_mode' tooltip'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetQueryTooltip :: (GObject a, MonadIO m) => a -> WidgetQueryTooltipCallback -> m SignalHandlerId
onWidgetQueryTooltip obj cb = liftIO $ connectWidgetQueryTooltip obj cb SignalConnectBefore
afterWidgetQueryTooltip :: (GObject a, MonadIO m) => a -> WidgetQueryTooltipCallback -> m SignalHandlerId
afterWidgetQueryTooltip obj cb = connectWidgetQueryTooltip obj cb SignalConnectAfter

connectWidgetQueryTooltip :: (GObject a, MonadIO m) =>
                             a -> WidgetQueryTooltipCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetQueryTooltip obj cb after = liftIO $ do
    cb' <- mkWidgetQueryTooltipCallback (widgetQueryTooltipCallbackWrapper cb)
    connectSignalFunPtr obj "query-tooltip" cb' after

-- signal Widget::realize
type WidgetRealizeCallback =
    IO ()

noWidgetRealizeCallback :: Maybe WidgetRealizeCallback
noWidgetRealizeCallback = Nothing

type WidgetRealizeCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetRealizeCallback :: WidgetRealizeCallbackC -> IO (FunPtr WidgetRealizeCallbackC)

widgetRealizeClosure :: WidgetRealizeCallback -> IO Closure
widgetRealizeClosure cb = newCClosure =<< mkWidgetRealizeCallback wrapped
    where wrapped = widgetRealizeCallbackWrapper cb

widgetRealizeCallbackWrapper ::
    WidgetRealizeCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetRealizeCallbackWrapper _cb _ _ = do
    _cb 

onWidgetRealize :: (GObject a, MonadIO m) => a -> WidgetRealizeCallback -> m SignalHandlerId
onWidgetRealize obj cb = liftIO $ connectWidgetRealize obj cb SignalConnectBefore
afterWidgetRealize :: (GObject a, MonadIO m) => a -> WidgetRealizeCallback -> m SignalHandlerId
afterWidgetRealize obj cb = connectWidgetRealize obj cb SignalConnectAfter

connectWidgetRealize :: (GObject a, MonadIO m) =>
                        a -> WidgetRealizeCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetRealize obj cb after = liftIO $ do
    cb' <- mkWidgetRealizeCallback (widgetRealizeCallbackWrapper cb)
    connectSignalFunPtr obj "realize" cb' after

-- signal Widget::screen-changed
type WidgetScreenChangedCallback =
    Maybe Gdk.Screen ->
    IO ()

noWidgetScreenChangedCallback :: Maybe WidgetScreenChangedCallback
noWidgetScreenChangedCallback = Nothing

type WidgetScreenChangedCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Screen ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetScreenChangedCallback :: WidgetScreenChangedCallbackC -> IO (FunPtr WidgetScreenChangedCallbackC)

widgetScreenChangedClosure :: WidgetScreenChangedCallback -> IO Closure
widgetScreenChangedClosure cb = newCClosure =<< mkWidgetScreenChangedCallback wrapped
    where wrapped = widgetScreenChangedCallbackWrapper cb

widgetScreenChangedCallbackWrapper ::
    WidgetScreenChangedCallback ->
    Ptr () ->
    Ptr Gdk.Screen ->
    Ptr () ->
    IO ()
widgetScreenChangedCallbackWrapper _cb _ previous_screen _ = do
    maybePrevious_screen <-
        if previous_screen == nullPtr
        then return Nothing
        else do
            previous_screen' <- (newObject Gdk.Screen) previous_screen
            return $ Just previous_screen'
    _cb  maybePrevious_screen

onWidgetScreenChanged :: (GObject a, MonadIO m) => a -> WidgetScreenChangedCallback -> m SignalHandlerId
onWidgetScreenChanged obj cb = liftIO $ connectWidgetScreenChanged obj cb SignalConnectBefore
afterWidgetScreenChanged :: (GObject a, MonadIO m) => a -> WidgetScreenChangedCallback -> m SignalHandlerId
afterWidgetScreenChanged obj cb = connectWidgetScreenChanged obj cb SignalConnectAfter

connectWidgetScreenChanged :: (GObject a, MonadIO m) =>
                              a -> WidgetScreenChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetScreenChanged obj cb after = liftIO $ do
    cb' <- mkWidgetScreenChangedCallback (widgetScreenChangedCallbackWrapper cb)
    connectSignalFunPtr obj "screen-changed" cb' after

-- signal Widget::scroll-event
type WidgetScrollEventCallback =
    Gdk.EventScroll ->
    IO Bool

noWidgetScrollEventCallback :: Maybe WidgetScrollEventCallback
noWidgetScrollEventCallback = Nothing

type WidgetScrollEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventScroll ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetScrollEventCallback :: WidgetScrollEventCallbackC -> IO (FunPtr WidgetScrollEventCallbackC)

widgetScrollEventClosure :: WidgetScrollEventCallback -> IO Closure
widgetScrollEventClosure cb = newCClosure =<< mkWidgetScrollEventCallback wrapped
    where wrapped = widgetScrollEventCallbackWrapper cb

widgetScrollEventCallbackWrapper ::
    WidgetScrollEventCallback ->
    Ptr () ->
    Ptr Gdk.EventScroll ->
    Ptr () ->
    IO CInt
widgetScrollEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 88 Gdk.EventScroll) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetScrollEvent :: (GObject a, MonadIO m) => a -> WidgetScrollEventCallback -> m SignalHandlerId
onWidgetScrollEvent obj cb = liftIO $ connectWidgetScrollEvent obj cb SignalConnectBefore
afterWidgetScrollEvent :: (GObject a, MonadIO m) => a -> WidgetScrollEventCallback -> m SignalHandlerId
afterWidgetScrollEvent obj cb = connectWidgetScrollEvent obj cb SignalConnectAfter

connectWidgetScrollEvent :: (GObject a, MonadIO m) =>
                            a -> WidgetScrollEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetScrollEvent obj cb after = liftIO $ do
    cb' <- mkWidgetScrollEventCallback (widgetScrollEventCallbackWrapper cb)
    connectSignalFunPtr obj "scroll-event" cb' after

-- signal Widget::selection-clear-event
type WidgetSelectionClearEventCallback =
    Gdk.EventSelection ->
    IO Bool

noWidgetSelectionClearEventCallback :: Maybe WidgetSelectionClearEventCallback
noWidgetSelectionClearEventCallback = Nothing

type WidgetSelectionClearEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventSelection ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetSelectionClearEventCallback :: WidgetSelectionClearEventCallbackC -> IO (FunPtr WidgetSelectionClearEventCallbackC)

widgetSelectionClearEventClosure :: WidgetSelectionClearEventCallback -> IO Closure
widgetSelectionClearEventClosure cb = newCClosure =<< mkWidgetSelectionClearEventCallback wrapped
    where wrapped = widgetSelectionClearEventCallbackWrapper cb

widgetSelectionClearEventCallbackWrapper ::
    WidgetSelectionClearEventCallback ->
    Ptr () ->
    Ptr Gdk.EventSelection ->
    Ptr () ->
    IO CInt
widgetSelectionClearEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 64 Gdk.EventSelection) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetSelectionClearEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionClearEventCallback -> m SignalHandlerId
onWidgetSelectionClearEvent obj cb = liftIO $ connectWidgetSelectionClearEvent obj cb SignalConnectBefore
afterWidgetSelectionClearEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionClearEventCallback -> m SignalHandlerId
afterWidgetSelectionClearEvent obj cb = connectWidgetSelectionClearEvent obj cb SignalConnectAfter

connectWidgetSelectionClearEvent :: (GObject a, MonadIO m) =>
                                    a -> WidgetSelectionClearEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSelectionClearEvent obj cb after = liftIO $ do
    cb' <- mkWidgetSelectionClearEventCallback (widgetSelectionClearEventCallbackWrapper cb)
    connectSignalFunPtr obj "selection-clear-event" cb' after

-- signal Widget::selection-get
type WidgetSelectionGetCallback =
    SelectionData ->
    Word32 ->
    Word32 ->
    IO ()

noWidgetSelectionGetCallback :: Maybe WidgetSelectionGetCallback
noWidgetSelectionGetCallback = Nothing

type WidgetSelectionGetCallbackC =
    Ptr () ->                               -- object
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetSelectionGetCallback :: WidgetSelectionGetCallbackC -> IO (FunPtr WidgetSelectionGetCallbackC)

widgetSelectionGetClosure :: WidgetSelectionGetCallback -> IO Closure
widgetSelectionGetClosure cb = newCClosure =<< mkWidgetSelectionGetCallback wrapped
    where wrapped = widgetSelectionGetCallbackWrapper cb

widgetSelectionGetCallbackWrapper ::
    WidgetSelectionGetCallback ->
    Ptr () ->
    Ptr SelectionData ->
    Word32 ->
    Word32 ->
    Ptr () ->
    IO ()
widgetSelectionGetCallbackWrapper _cb _ data_ info time _ = do
    data_' <- (newBoxed SelectionData) data_
    _cb  data_' info time

onWidgetSelectionGet :: (GObject a, MonadIO m) => a -> WidgetSelectionGetCallback -> m SignalHandlerId
onWidgetSelectionGet obj cb = liftIO $ connectWidgetSelectionGet obj cb SignalConnectBefore
afterWidgetSelectionGet :: (GObject a, MonadIO m) => a -> WidgetSelectionGetCallback -> m SignalHandlerId
afterWidgetSelectionGet obj cb = connectWidgetSelectionGet obj cb SignalConnectAfter

connectWidgetSelectionGet :: (GObject a, MonadIO m) =>
                             a -> WidgetSelectionGetCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSelectionGet obj cb after = liftIO $ do
    cb' <- mkWidgetSelectionGetCallback (widgetSelectionGetCallbackWrapper cb)
    connectSignalFunPtr obj "selection-get" cb' after

-- signal Widget::selection-notify-event
type WidgetSelectionNotifyEventCallback =
    Gdk.EventSelection ->
    IO Bool

noWidgetSelectionNotifyEventCallback :: Maybe WidgetSelectionNotifyEventCallback
noWidgetSelectionNotifyEventCallback = Nothing

type WidgetSelectionNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventSelection ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetSelectionNotifyEventCallback :: WidgetSelectionNotifyEventCallbackC -> IO (FunPtr WidgetSelectionNotifyEventCallbackC)

widgetSelectionNotifyEventClosure :: WidgetSelectionNotifyEventCallback -> IO Closure
widgetSelectionNotifyEventClosure cb = newCClosure =<< mkWidgetSelectionNotifyEventCallback wrapped
    where wrapped = widgetSelectionNotifyEventCallbackWrapper cb

widgetSelectionNotifyEventCallbackWrapper ::
    WidgetSelectionNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventSelection ->
    Ptr () ->
    IO CInt
widgetSelectionNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 64 Gdk.EventSelection) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetSelectionNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionNotifyEventCallback -> m SignalHandlerId
onWidgetSelectionNotifyEvent obj cb = liftIO $ connectWidgetSelectionNotifyEvent obj cb SignalConnectBefore
afterWidgetSelectionNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionNotifyEventCallback -> m SignalHandlerId
afterWidgetSelectionNotifyEvent obj cb = connectWidgetSelectionNotifyEvent obj cb SignalConnectAfter

connectWidgetSelectionNotifyEvent :: (GObject a, MonadIO m) =>
                                     a -> WidgetSelectionNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSelectionNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetSelectionNotifyEventCallback (widgetSelectionNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "selection-notify-event" cb' after

-- signal Widget::selection-received
type WidgetSelectionReceivedCallback =
    SelectionData ->
    Word32 ->
    IO ()

noWidgetSelectionReceivedCallback :: Maybe WidgetSelectionReceivedCallback
noWidgetSelectionReceivedCallback = Nothing

type WidgetSelectionReceivedCallbackC =
    Ptr () ->                               -- object
    Ptr SelectionData ->
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetSelectionReceivedCallback :: WidgetSelectionReceivedCallbackC -> IO (FunPtr WidgetSelectionReceivedCallbackC)

widgetSelectionReceivedClosure :: WidgetSelectionReceivedCallback -> IO Closure
widgetSelectionReceivedClosure cb = newCClosure =<< mkWidgetSelectionReceivedCallback wrapped
    where wrapped = widgetSelectionReceivedCallbackWrapper cb

widgetSelectionReceivedCallbackWrapper ::
    WidgetSelectionReceivedCallback ->
    Ptr () ->
    Ptr SelectionData ->
    Word32 ->
    Ptr () ->
    IO ()
widgetSelectionReceivedCallbackWrapper _cb _ data_ time _ = do
    data_' <- (newBoxed SelectionData) data_
    _cb  data_' time

onWidgetSelectionReceived :: (GObject a, MonadIO m) => a -> WidgetSelectionReceivedCallback -> m SignalHandlerId
onWidgetSelectionReceived obj cb = liftIO $ connectWidgetSelectionReceived obj cb SignalConnectBefore
afterWidgetSelectionReceived :: (GObject a, MonadIO m) => a -> WidgetSelectionReceivedCallback -> m SignalHandlerId
afterWidgetSelectionReceived obj cb = connectWidgetSelectionReceived obj cb SignalConnectAfter

connectWidgetSelectionReceived :: (GObject a, MonadIO m) =>
                                  a -> WidgetSelectionReceivedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSelectionReceived obj cb after = liftIO $ do
    cb' <- mkWidgetSelectionReceivedCallback (widgetSelectionReceivedCallbackWrapper cb)
    connectSignalFunPtr obj "selection-received" cb' after

-- signal Widget::selection-request-event
type WidgetSelectionRequestEventCallback =
    Gdk.EventSelection ->
    IO Bool

noWidgetSelectionRequestEventCallback :: Maybe WidgetSelectionRequestEventCallback
noWidgetSelectionRequestEventCallback = Nothing

type WidgetSelectionRequestEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventSelection ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetSelectionRequestEventCallback :: WidgetSelectionRequestEventCallbackC -> IO (FunPtr WidgetSelectionRequestEventCallbackC)

widgetSelectionRequestEventClosure :: WidgetSelectionRequestEventCallback -> IO Closure
widgetSelectionRequestEventClosure cb = newCClosure =<< mkWidgetSelectionRequestEventCallback wrapped
    where wrapped = widgetSelectionRequestEventCallbackWrapper cb

widgetSelectionRequestEventCallbackWrapper ::
    WidgetSelectionRequestEventCallback ->
    Ptr () ->
    Ptr Gdk.EventSelection ->
    Ptr () ->
    IO CInt
widgetSelectionRequestEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 64 Gdk.EventSelection) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetSelectionRequestEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionRequestEventCallback -> m SignalHandlerId
onWidgetSelectionRequestEvent obj cb = liftIO $ connectWidgetSelectionRequestEvent obj cb SignalConnectBefore
afterWidgetSelectionRequestEvent :: (GObject a, MonadIO m) => a -> WidgetSelectionRequestEventCallback -> m SignalHandlerId
afterWidgetSelectionRequestEvent obj cb = connectWidgetSelectionRequestEvent obj cb SignalConnectAfter

connectWidgetSelectionRequestEvent :: (GObject a, MonadIO m) =>
                                      a -> WidgetSelectionRequestEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSelectionRequestEvent obj cb after = liftIO $ do
    cb' <- mkWidgetSelectionRequestEventCallback (widgetSelectionRequestEventCallbackWrapper cb)
    connectSignalFunPtr obj "selection-request-event" cb' after

-- signal Widget::show
type WidgetShowCallback =
    IO ()

noWidgetShowCallback :: Maybe WidgetShowCallback
noWidgetShowCallback = Nothing

type WidgetShowCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetShowCallback :: WidgetShowCallbackC -> IO (FunPtr WidgetShowCallbackC)

widgetShowClosure :: WidgetShowCallback -> IO Closure
widgetShowClosure cb = newCClosure =<< mkWidgetShowCallback wrapped
    where wrapped = widgetShowCallbackWrapper cb

widgetShowCallbackWrapper ::
    WidgetShowCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetShowCallbackWrapper _cb _ _ = do
    _cb 

onWidgetShow :: (GObject a, MonadIO m) => a -> WidgetShowCallback -> m SignalHandlerId
onWidgetShow obj cb = liftIO $ connectWidgetShow obj cb SignalConnectBefore
afterWidgetShow :: (GObject a, MonadIO m) => a -> WidgetShowCallback -> m SignalHandlerId
afterWidgetShow obj cb = connectWidgetShow obj cb SignalConnectAfter

connectWidgetShow :: (GObject a, MonadIO m) =>
                     a -> WidgetShowCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetShow obj cb after = liftIO $ do
    cb' <- mkWidgetShowCallback (widgetShowCallbackWrapper cb)
    connectSignalFunPtr obj "show" cb' after

-- signal Widget::show-help
type WidgetShowHelpCallback =
    WidgetHelpType ->
    IO Bool

noWidgetShowHelpCallback :: Maybe WidgetShowHelpCallback
noWidgetShowHelpCallback = Nothing

type WidgetShowHelpCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetShowHelpCallback :: WidgetShowHelpCallbackC -> IO (FunPtr WidgetShowHelpCallbackC)

widgetShowHelpClosure :: WidgetShowHelpCallback -> IO Closure
widgetShowHelpClosure cb = newCClosure =<< mkWidgetShowHelpCallback wrapped
    where wrapped = widgetShowHelpCallbackWrapper cb

widgetShowHelpCallbackWrapper ::
    WidgetShowHelpCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO CInt
widgetShowHelpCallbackWrapper _cb _ help_type _ = do
    let help_type' = (toEnum . fromIntegral) help_type
    result <- _cb  help_type'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetShowHelp :: (GObject a, MonadIO m) => a -> WidgetShowHelpCallback -> m SignalHandlerId
onWidgetShowHelp obj cb = liftIO $ connectWidgetShowHelp obj cb SignalConnectBefore
afterWidgetShowHelp :: (GObject a, MonadIO m) => a -> WidgetShowHelpCallback -> m SignalHandlerId
afterWidgetShowHelp obj cb = connectWidgetShowHelp obj cb SignalConnectAfter

connectWidgetShowHelp :: (GObject a, MonadIO m) =>
                         a -> WidgetShowHelpCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetShowHelp obj cb after = liftIO $ do
    cb' <- mkWidgetShowHelpCallback (widgetShowHelpCallbackWrapper cb)
    connectSignalFunPtr obj "show-help" cb' after

-- signal Widget::size-allocate
type WidgetSizeAllocateCallback =
    Cairo.RectangleInt ->
    IO ()

noWidgetSizeAllocateCallback :: Maybe WidgetSizeAllocateCallback
noWidgetSizeAllocateCallback = Nothing

type WidgetSizeAllocateCallbackC =
    Ptr () ->                               -- object
    Ptr Cairo.RectangleInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetSizeAllocateCallback :: WidgetSizeAllocateCallbackC -> IO (FunPtr WidgetSizeAllocateCallbackC)

widgetSizeAllocateClosure :: WidgetSizeAllocateCallback -> IO Closure
widgetSizeAllocateClosure cb = newCClosure =<< mkWidgetSizeAllocateCallback wrapped
    where wrapped = widgetSizeAllocateCallbackWrapper cb

widgetSizeAllocateCallbackWrapper ::
    WidgetSizeAllocateCallback ->
    Ptr () ->
    Ptr Cairo.RectangleInt ->
    Ptr () ->
    IO ()
widgetSizeAllocateCallbackWrapper _cb _ allocation _ = do
    allocation' <- (newBoxed Cairo.RectangleInt) allocation
    _cb  allocation'

onWidgetSizeAllocate :: (GObject a, MonadIO m) => a -> WidgetSizeAllocateCallback -> m SignalHandlerId
onWidgetSizeAllocate obj cb = liftIO $ connectWidgetSizeAllocate obj cb SignalConnectBefore
afterWidgetSizeAllocate :: (GObject a, MonadIO m) => a -> WidgetSizeAllocateCallback -> m SignalHandlerId
afterWidgetSizeAllocate obj cb = connectWidgetSizeAllocate obj cb SignalConnectAfter

connectWidgetSizeAllocate :: (GObject a, MonadIO m) =>
                             a -> WidgetSizeAllocateCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetSizeAllocate obj cb after = liftIO $ do
    cb' <- mkWidgetSizeAllocateCallback (widgetSizeAllocateCallbackWrapper cb)
    connectSignalFunPtr obj "size-allocate" cb' after

-- signal Widget::state-changed
type WidgetStateChangedCallback =
    StateType ->
    IO ()

noWidgetStateChangedCallback :: Maybe WidgetStateChangedCallback
noWidgetStateChangedCallback = Nothing

type WidgetStateChangedCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetStateChangedCallback :: WidgetStateChangedCallbackC -> IO (FunPtr WidgetStateChangedCallbackC)

widgetStateChangedClosure :: WidgetStateChangedCallback -> IO Closure
widgetStateChangedClosure cb = newCClosure =<< mkWidgetStateChangedCallback wrapped
    where wrapped = widgetStateChangedCallbackWrapper cb

widgetStateChangedCallbackWrapper ::
    WidgetStateChangedCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
widgetStateChangedCallbackWrapper _cb _ state _ = do
    let state' = (toEnum . fromIntegral) state
    _cb  state'

onWidgetStateChanged :: (GObject a, MonadIO m) => a -> WidgetStateChangedCallback -> m SignalHandlerId
onWidgetStateChanged obj cb = liftIO $ connectWidgetStateChanged obj cb SignalConnectBefore
afterWidgetStateChanged :: (GObject a, MonadIO m) => a -> WidgetStateChangedCallback -> m SignalHandlerId
afterWidgetStateChanged obj cb = connectWidgetStateChanged obj cb SignalConnectAfter

connectWidgetStateChanged :: (GObject a, MonadIO m) =>
                             a -> WidgetStateChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetStateChanged obj cb after = liftIO $ do
    cb' <- mkWidgetStateChangedCallback (widgetStateChangedCallbackWrapper cb)
    connectSignalFunPtr obj "state-changed" cb' after

-- signal Widget::state-flags-changed
type WidgetStateFlagsChangedCallback =
    [StateFlags] ->
    IO ()

noWidgetStateFlagsChangedCallback :: Maybe WidgetStateFlagsChangedCallback
noWidgetStateFlagsChangedCallback = Nothing

type WidgetStateFlagsChangedCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetStateFlagsChangedCallback :: WidgetStateFlagsChangedCallbackC -> IO (FunPtr WidgetStateFlagsChangedCallbackC)

widgetStateFlagsChangedClosure :: WidgetStateFlagsChangedCallback -> IO Closure
widgetStateFlagsChangedClosure cb = newCClosure =<< mkWidgetStateFlagsChangedCallback wrapped
    where wrapped = widgetStateFlagsChangedCallbackWrapper cb

widgetStateFlagsChangedCallbackWrapper ::
    WidgetStateFlagsChangedCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
widgetStateFlagsChangedCallbackWrapper _cb _ flags _ = do
    let flags' = wordToGFlags flags
    _cb  flags'

onWidgetStateFlagsChanged :: (GObject a, MonadIO m) => a -> WidgetStateFlagsChangedCallback -> m SignalHandlerId
onWidgetStateFlagsChanged obj cb = liftIO $ connectWidgetStateFlagsChanged obj cb SignalConnectBefore
afterWidgetStateFlagsChanged :: (GObject a, MonadIO m) => a -> WidgetStateFlagsChangedCallback -> m SignalHandlerId
afterWidgetStateFlagsChanged obj cb = connectWidgetStateFlagsChanged obj cb SignalConnectAfter

connectWidgetStateFlagsChanged :: (GObject a, MonadIO m) =>
                                  a -> WidgetStateFlagsChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetStateFlagsChanged obj cb after = liftIO $ do
    cb' <- mkWidgetStateFlagsChangedCallback (widgetStateFlagsChangedCallbackWrapper cb)
    connectSignalFunPtr obj "state-flags-changed" cb' after

-- signal Widget::style-set
type WidgetStyleSetCallback =
    Maybe Style ->
    IO ()

noWidgetStyleSetCallback :: Maybe WidgetStyleSetCallback
noWidgetStyleSetCallback = Nothing

type WidgetStyleSetCallbackC =
    Ptr () ->                               -- object
    Ptr Style ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetStyleSetCallback :: WidgetStyleSetCallbackC -> IO (FunPtr WidgetStyleSetCallbackC)

widgetStyleSetClosure :: WidgetStyleSetCallback -> IO Closure
widgetStyleSetClosure cb = newCClosure =<< mkWidgetStyleSetCallback wrapped
    where wrapped = widgetStyleSetCallbackWrapper cb

widgetStyleSetCallbackWrapper ::
    WidgetStyleSetCallback ->
    Ptr () ->
    Ptr Style ->
    Ptr () ->
    IO ()
widgetStyleSetCallbackWrapper _cb _ previous_style _ = do
    maybePrevious_style <-
        if previous_style == nullPtr
        then return Nothing
        else do
            previous_style' <- (newObject Style) previous_style
            return $ Just previous_style'
    _cb  maybePrevious_style

onWidgetStyleSet :: (GObject a, MonadIO m) => a -> WidgetStyleSetCallback -> m SignalHandlerId
onWidgetStyleSet obj cb = liftIO $ connectWidgetStyleSet obj cb SignalConnectBefore
afterWidgetStyleSet :: (GObject a, MonadIO m) => a -> WidgetStyleSetCallback -> m SignalHandlerId
afterWidgetStyleSet obj cb = connectWidgetStyleSet obj cb SignalConnectAfter

connectWidgetStyleSet :: (GObject a, MonadIO m) =>
                         a -> WidgetStyleSetCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetStyleSet obj cb after = liftIO $ do
    cb' <- mkWidgetStyleSetCallback (widgetStyleSetCallbackWrapper cb)
    connectSignalFunPtr obj "style-set" cb' after

-- signal Widget::style-updated
type WidgetStyleUpdatedCallback =
    IO ()

noWidgetStyleUpdatedCallback :: Maybe WidgetStyleUpdatedCallback
noWidgetStyleUpdatedCallback = Nothing

type WidgetStyleUpdatedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetStyleUpdatedCallback :: WidgetStyleUpdatedCallbackC -> IO (FunPtr WidgetStyleUpdatedCallbackC)

widgetStyleUpdatedClosure :: WidgetStyleUpdatedCallback -> IO Closure
widgetStyleUpdatedClosure cb = newCClosure =<< mkWidgetStyleUpdatedCallback wrapped
    where wrapped = widgetStyleUpdatedCallbackWrapper cb

widgetStyleUpdatedCallbackWrapper ::
    WidgetStyleUpdatedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetStyleUpdatedCallbackWrapper _cb _ _ = do
    _cb 

onWidgetStyleUpdated :: (GObject a, MonadIO m) => a -> WidgetStyleUpdatedCallback -> m SignalHandlerId
onWidgetStyleUpdated obj cb = liftIO $ connectWidgetStyleUpdated obj cb SignalConnectBefore
afterWidgetStyleUpdated :: (GObject a, MonadIO m) => a -> WidgetStyleUpdatedCallback -> m SignalHandlerId
afterWidgetStyleUpdated obj cb = connectWidgetStyleUpdated obj cb SignalConnectAfter

connectWidgetStyleUpdated :: (GObject a, MonadIO m) =>
                             a -> WidgetStyleUpdatedCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetStyleUpdated obj cb after = liftIO $ do
    cb' <- mkWidgetStyleUpdatedCallback (widgetStyleUpdatedCallbackWrapper cb)
    connectSignalFunPtr obj "style-updated" cb' after

-- signal Widget::touch-event
type WidgetTouchEventCallback =
    Gdk.Event ->
    IO Bool

noWidgetTouchEventCallback :: Maybe WidgetTouchEventCallback
noWidgetTouchEventCallback = Nothing

type WidgetTouchEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.Event ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetTouchEventCallback :: WidgetTouchEventCallbackC -> IO (FunPtr WidgetTouchEventCallbackC)

widgetTouchEventClosure :: WidgetTouchEventCallback -> IO Closure
widgetTouchEventClosure cb = newCClosure =<< mkWidgetTouchEventCallback wrapped
    where wrapped = widgetTouchEventCallbackWrapper cb

widgetTouchEventCallbackWrapper ::
    WidgetTouchEventCallback ->
    Ptr () ->
    Ptr Gdk.Event ->
    Ptr () ->
    IO CInt
widgetTouchEventCallbackWrapper _cb _ object _ = do
    object' <- (newBoxed Gdk.Event) object
    result <- _cb  object'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetTouchEvent :: (GObject a, MonadIO m) => a -> WidgetTouchEventCallback -> m SignalHandlerId
onWidgetTouchEvent obj cb = liftIO $ connectWidgetTouchEvent obj cb SignalConnectBefore
afterWidgetTouchEvent :: (GObject a, MonadIO m) => a -> WidgetTouchEventCallback -> m SignalHandlerId
afterWidgetTouchEvent obj cb = connectWidgetTouchEvent obj cb SignalConnectAfter

connectWidgetTouchEvent :: (GObject a, MonadIO m) =>
                           a -> WidgetTouchEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetTouchEvent obj cb after = liftIO $ do
    cb' <- mkWidgetTouchEventCallback (widgetTouchEventCallbackWrapper cb)
    connectSignalFunPtr obj "touch-event" cb' after

-- signal Widget::unmap
type WidgetUnmapCallback =
    IO ()

noWidgetUnmapCallback :: Maybe WidgetUnmapCallback
noWidgetUnmapCallback = Nothing

type WidgetUnmapCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetUnmapCallback :: WidgetUnmapCallbackC -> IO (FunPtr WidgetUnmapCallbackC)

widgetUnmapClosure :: WidgetUnmapCallback -> IO Closure
widgetUnmapClosure cb = newCClosure =<< mkWidgetUnmapCallback wrapped
    where wrapped = widgetUnmapCallbackWrapper cb

widgetUnmapCallbackWrapper ::
    WidgetUnmapCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetUnmapCallbackWrapper _cb _ _ = do
    _cb 

onWidgetUnmap :: (GObject a, MonadIO m) => a -> WidgetUnmapCallback -> m SignalHandlerId
onWidgetUnmap obj cb = liftIO $ connectWidgetUnmap obj cb SignalConnectBefore
afterWidgetUnmap :: (GObject a, MonadIO m) => a -> WidgetUnmapCallback -> m SignalHandlerId
afterWidgetUnmap obj cb = connectWidgetUnmap obj cb SignalConnectAfter

connectWidgetUnmap :: (GObject a, MonadIO m) =>
                      a -> WidgetUnmapCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetUnmap obj cb after = liftIO $ do
    cb' <- mkWidgetUnmapCallback (widgetUnmapCallbackWrapper cb)
    connectSignalFunPtr obj "unmap" cb' after

-- signal Widget::unmap-event
type WidgetUnmapEventCallback =
    Gdk.EventAny ->
    IO Bool

noWidgetUnmapEventCallback :: Maybe WidgetUnmapEventCallback
noWidgetUnmapEventCallback = Nothing

type WidgetUnmapEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventAny ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetUnmapEventCallback :: WidgetUnmapEventCallbackC -> IO (FunPtr WidgetUnmapEventCallbackC)

widgetUnmapEventClosure :: WidgetUnmapEventCallback -> IO Closure
widgetUnmapEventClosure cb = newCClosure =<< mkWidgetUnmapEventCallback wrapped
    where wrapped = widgetUnmapEventCallbackWrapper cb

widgetUnmapEventCallbackWrapper ::
    WidgetUnmapEventCallback ->
    Ptr () ->
    Ptr Gdk.EventAny ->
    Ptr () ->
    IO CInt
widgetUnmapEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 24 Gdk.EventAny) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetUnmapEvent :: (GObject a, MonadIO m) => a -> WidgetUnmapEventCallback -> m SignalHandlerId
onWidgetUnmapEvent obj cb = liftIO $ connectWidgetUnmapEvent obj cb SignalConnectBefore
afterWidgetUnmapEvent :: (GObject a, MonadIO m) => a -> WidgetUnmapEventCallback -> m SignalHandlerId
afterWidgetUnmapEvent obj cb = connectWidgetUnmapEvent obj cb SignalConnectAfter

connectWidgetUnmapEvent :: (GObject a, MonadIO m) =>
                           a -> WidgetUnmapEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetUnmapEvent obj cb after = liftIO $ do
    cb' <- mkWidgetUnmapEventCallback (widgetUnmapEventCallbackWrapper cb)
    connectSignalFunPtr obj "unmap-event" cb' after

-- signal Widget::unrealize
type WidgetUnrealizeCallback =
    IO ()

noWidgetUnrealizeCallback :: Maybe WidgetUnrealizeCallback
noWidgetUnrealizeCallback = Nothing

type WidgetUnrealizeCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkWidgetUnrealizeCallback :: WidgetUnrealizeCallbackC -> IO (FunPtr WidgetUnrealizeCallbackC)

widgetUnrealizeClosure :: WidgetUnrealizeCallback -> IO Closure
widgetUnrealizeClosure cb = newCClosure =<< mkWidgetUnrealizeCallback wrapped
    where wrapped = widgetUnrealizeCallbackWrapper cb

widgetUnrealizeCallbackWrapper ::
    WidgetUnrealizeCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
widgetUnrealizeCallbackWrapper _cb _ _ = do
    _cb 

onWidgetUnrealize :: (GObject a, MonadIO m) => a -> WidgetUnrealizeCallback -> m SignalHandlerId
onWidgetUnrealize obj cb = liftIO $ connectWidgetUnrealize obj cb SignalConnectBefore
afterWidgetUnrealize :: (GObject a, MonadIO m) => a -> WidgetUnrealizeCallback -> m SignalHandlerId
afterWidgetUnrealize obj cb = connectWidgetUnrealize obj cb SignalConnectAfter

connectWidgetUnrealize :: (GObject a, MonadIO m) =>
                          a -> WidgetUnrealizeCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetUnrealize obj cb after = liftIO $ do
    cb' <- mkWidgetUnrealizeCallback (widgetUnrealizeCallbackWrapper cb)
    connectSignalFunPtr obj "unrealize" cb' after

-- signal Widget::visibility-notify-event
type WidgetVisibilityNotifyEventCallback =
    Gdk.EventVisibility ->
    IO Bool

noWidgetVisibilityNotifyEventCallback :: Maybe WidgetVisibilityNotifyEventCallback
noWidgetVisibilityNotifyEventCallback = Nothing

type WidgetVisibilityNotifyEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventVisibility ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetVisibilityNotifyEventCallback :: WidgetVisibilityNotifyEventCallbackC -> IO (FunPtr WidgetVisibilityNotifyEventCallbackC)

widgetVisibilityNotifyEventClosure :: WidgetVisibilityNotifyEventCallback -> IO Closure
widgetVisibilityNotifyEventClosure cb = newCClosure =<< mkWidgetVisibilityNotifyEventCallback wrapped
    where wrapped = widgetVisibilityNotifyEventCallbackWrapper cb

widgetVisibilityNotifyEventCallbackWrapper ::
    WidgetVisibilityNotifyEventCallback ->
    Ptr () ->
    Ptr Gdk.EventVisibility ->
    Ptr () ->
    IO CInt
widgetVisibilityNotifyEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 24 Gdk.EventVisibility) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetVisibilityNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetVisibilityNotifyEventCallback -> m SignalHandlerId
onWidgetVisibilityNotifyEvent obj cb = liftIO $ connectWidgetVisibilityNotifyEvent obj cb SignalConnectBefore
afterWidgetVisibilityNotifyEvent :: (GObject a, MonadIO m) => a -> WidgetVisibilityNotifyEventCallback -> m SignalHandlerId
afterWidgetVisibilityNotifyEvent obj cb = connectWidgetVisibilityNotifyEvent obj cb SignalConnectAfter

connectWidgetVisibilityNotifyEvent :: (GObject a, MonadIO m) =>
                                      a -> WidgetVisibilityNotifyEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetVisibilityNotifyEvent obj cb after = liftIO $ do
    cb' <- mkWidgetVisibilityNotifyEventCallback (widgetVisibilityNotifyEventCallbackWrapper cb)
    connectSignalFunPtr obj "visibility-notify-event" cb' after

-- signal Widget::window-state-event
type WidgetWindowStateEventCallback =
    Gdk.EventWindowState ->
    IO Bool

noWidgetWindowStateEventCallback :: Maybe WidgetWindowStateEventCallback
noWidgetWindowStateEventCallback = Nothing

type WidgetWindowStateEventCallbackC =
    Ptr () ->                               -- object
    Ptr Gdk.EventWindowState ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkWidgetWindowStateEventCallback :: WidgetWindowStateEventCallbackC -> IO (FunPtr WidgetWindowStateEventCallbackC)

widgetWindowStateEventClosure :: WidgetWindowStateEventCallback -> IO Closure
widgetWindowStateEventClosure cb = newCClosure =<< mkWidgetWindowStateEventCallback wrapped
    where wrapped = widgetWindowStateEventCallbackWrapper cb

widgetWindowStateEventCallbackWrapper ::
    WidgetWindowStateEventCallback ->
    Ptr () ->
    Ptr Gdk.EventWindowState ->
    Ptr () ->
    IO CInt
widgetWindowStateEventCallbackWrapper _cb _ event _ = do
    event' <- (newPtr 32 Gdk.EventWindowState) event
    result <- _cb  event'
    let result' = (fromIntegral . fromEnum) result
    return result'

onWidgetWindowStateEvent :: (GObject a, MonadIO m) => a -> WidgetWindowStateEventCallback -> m SignalHandlerId
onWidgetWindowStateEvent obj cb = liftIO $ connectWidgetWindowStateEvent obj cb SignalConnectBefore
afterWidgetWindowStateEvent :: (GObject a, MonadIO m) => a -> WidgetWindowStateEventCallback -> m SignalHandlerId
afterWidgetWindowStateEvent obj cb = connectWidgetWindowStateEvent obj cb SignalConnectAfter

connectWidgetWindowStateEvent :: (GObject a, MonadIO m) =>
                                 a -> WidgetWindowStateEventCallback -> SignalConnectMode -> m SignalHandlerId
connectWidgetWindowStateEvent obj cb after = liftIO $ do
    cb' <- mkWidgetWindowStateEventCallback (widgetWindowStateEventCallbackWrapper cb)
    connectSignalFunPtr obj "window-state-event" cb' after

-- VVV Prop "app-paintable"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetAppPaintable :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetAppPaintable obj = liftIO $ getObjectPropertyBool obj "app-paintable"

setWidgetAppPaintable :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetAppPaintable obj val = liftIO $ setObjectPropertyBool obj "app-paintable" val

constructWidgetAppPaintable :: Bool -> IO ([Char], GValue)
constructWidgetAppPaintable val = constructObjectPropertyBool "app-paintable" val

data WidgetAppPaintablePropertyInfo
instance AttrInfo WidgetAppPaintablePropertyInfo where
    type AttrAllowedOps WidgetAppPaintablePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetAppPaintablePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetAppPaintablePropertyInfo = WidgetK
    type AttrGetType WidgetAppPaintablePropertyInfo = Bool
    type AttrLabel WidgetAppPaintablePropertyInfo = "Widget::app-paintable"
    attrGet _ = getWidgetAppPaintable
    attrSet _ = setWidgetAppPaintable
    attrConstruct _ = constructWidgetAppPaintable

-- VVV Prop "can-default"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetCanDefault :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetCanDefault obj = liftIO $ getObjectPropertyBool obj "can-default"

setWidgetCanDefault :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetCanDefault obj val = liftIO $ setObjectPropertyBool obj "can-default" val

constructWidgetCanDefault :: Bool -> IO ([Char], GValue)
constructWidgetCanDefault val = constructObjectPropertyBool "can-default" val

data WidgetCanDefaultPropertyInfo
instance AttrInfo WidgetCanDefaultPropertyInfo where
    type AttrAllowedOps WidgetCanDefaultPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetCanDefaultPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetCanDefaultPropertyInfo = WidgetK
    type AttrGetType WidgetCanDefaultPropertyInfo = Bool
    type AttrLabel WidgetCanDefaultPropertyInfo = "Widget::can-default"
    attrGet _ = getWidgetCanDefault
    attrSet _ = setWidgetCanDefault
    attrConstruct _ = constructWidgetCanDefault

-- VVV Prop "can-focus"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetCanFocus :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetCanFocus obj = liftIO $ getObjectPropertyBool obj "can-focus"

setWidgetCanFocus :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetCanFocus obj val = liftIO $ setObjectPropertyBool obj "can-focus" val

constructWidgetCanFocus :: Bool -> IO ([Char], GValue)
constructWidgetCanFocus val = constructObjectPropertyBool "can-focus" val

data WidgetCanFocusPropertyInfo
instance AttrInfo WidgetCanFocusPropertyInfo where
    type AttrAllowedOps WidgetCanFocusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetCanFocusPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetCanFocusPropertyInfo = WidgetK
    type AttrGetType WidgetCanFocusPropertyInfo = Bool
    type AttrLabel WidgetCanFocusPropertyInfo = "Widget::can-focus"
    attrGet _ = getWidgetCanFocus
    attrSet _ = setWidgetCanFocus
    attrConstruct _ = constructWidgetCanFocus

-- VVV Prop "composite-child"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getWidgetCompositeChild :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetCompositeChild obj = liftIO $ getObjectPropertyBool obj "composite-child"

data WidgetCompositeChildPropertyInfo
instance AttrInfo WidgetCompositeChildPropertyInfo where
    type AttrAllowedOps WidgetCompositeChildPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WidgetCompositeChildPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WidgetCompositeChildPropertyInfo = WidgetK
    type AttrGetType WidgetCompositeChildPropertyInfo = Bool
    type AttrLabel WidgetCompositeChildPropertyInfo = "Widget::composite-child"
    attrGet _ = getWidgetCompositeChild
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "double-buffered"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetDoubleBuffered :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetDoubleBuffered obj = liftIO $ getObjectPropertyBool obj "double-buffered"

setWidgetDoubleBuffered :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetDoubleBuffered obj val = liftIO $ setObjectPropertyBool obj "double-buffered" val

constructWidgetDoubleBuffered :: Bool -> IO ([Char], GValue)
constructWidgetDoubleBuffered val = constructObjectPropertyBool "double-buffered" val

data WidgetDoubleBufferedPropertyInfo
instance AttrInfo WidgetDoubleBufferedPropertyInfo where
    type AttrAllowedOps WidgetDoubleBufferedPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetDoubleBufferedPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetDoubleBufferedPropertyInfo = WidgetK
    type AttrGetType WidgetDoubleBufferedPropertyInfo = Bool
    type AttrLabel WidgetDoubleBufferedPropertyInfo = "Widget::double-buffered"
    attrGet _ = getWidgetDoubleBuffered
    attrSet _ = setWidgetDoubleBuffered
    attrConstruct _ = constructWidgetDoubleBuffered

-- VVV Prop "events"
   -- Type: TInterface "Gdk" "EventMask"
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetEvents :: (MonadIO m, WidgetK o) => o -> m [Gdk.EventMask]
getWidgetEvents obj = liftIO $ getObjectPropertyFlags obj "events"

setWidgetEvents :: (MonadIO m, WidgetK o) => o -> [Gdk.EventMask] -> m ()
setWidgetEvents obj val = liftIO $ setObjectPropertyFlags obj "events" val

constructWidgetEvents :: [Gdk.EventMask] -> IO ([Char], GValue)
constructWidgetEvents val = constructObjectPropertyFlags "events" val

data WidgetEventsPropertyInfo
instance AttrInfo WidgetEventsPropertyInfo where
    type AttrAllowedOps WidgetEventsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetEventsPropertyInfo = (~) [Gdk.EventMask]
    type AttrBaseTypeConstraint WidgetEventsPropertyInfo = WidgetK
    type AttrGetType WidgetEventsPropertyInfo = [Gdk.EventMask]
    type AttrLabel WidgetEventsPropertyInfo = "Widget::events"
    attrGet _ = getWidgetEvents
    attrSet _ = setWidgetEvents
    attrConstruct _ = constructWidgetEvents

-- VVV Prop "expand"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetExpand :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetExpand obj = liftIO $ getObjectPropertyBool obj "expand"

setWidgetExpand :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetExpand obj val = liftIO $ setObjectPropertyBool obj "expand" val

constructWidgetExpand :: Bool -> IO ([Char], GValue)
constructWidgetExpand val = constructObjectPropertyBool "expand" val

data WidgetExpandPropertyInfo
instance AttrInfo WidgetExpandPropertyInfo where
    type AttrAllowedOps WidgetExpandPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetExpandPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetExpandPropertyInfo = WidgetK
    type AttrGetType WidgetExpandPropertyInfo = Bool
    type AttrLabel WidgetExpandPropertyInfo = "Widget::expand"
    attrGet _ = getWidgetExpand
    attrSet _ = setWidgetExpand
    attrConstruct _ = constructWidgetExpand

-- VVV Prop "halign"
   -- Type: TInterface "Gtk" "Align"
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHalign :: (MonadIO m, WidgetK o) => o -> m Align
getWidgetHalign obj = liftIO $ getObjectPropertyEnum obj "halign"

setWidgetHalign :: (MonadIO m, WidgetK o) => o -> Align -> m ()
setWidgetHalign obj val = liftIO $ setObjectPropertyEnum obj "halign" val

constructWidgetHalign :: Align -> IO ([Char], GValue)
constructWidgetHalign val = constructObjectPropertyEnum "halign" val

data WidgetHalignPropertyInfo
instance AttrInfo WidgetHalignPropertyInfo where
    type AttrAllowedOps WidgetHalignPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHalignPropertyInfo = (~) Align
    type AttrBaseTypeConstraint WidgetHalignPropertyInfo = WidgetK
    type AttrGetType WidgetHalignPropertyInfo = Align
    type AttrLabel WidgetHalignPropertyInfo = "Widget::halign"
    attrGet _ = getWidgetHalign
    attrSet _ = setWidgetHalign
    attrConstruct _ = constructWidgetHalign

-- VVV Prop "has-default"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHasDefault :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetHasDefault obj = liftIO $ getObjectPropertyBool obj "has-default"

setWidgetHasDefault :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetHasDefault obj val = liftIO $ setObjectPropertyBool obj "has-default" val

constructWidgetHasDefault :: Bool -> IO ([Char], GValue)
constructWidgetHasDefault val = constructObjectPropertyBool "has-default" val

data WidgetHasDefaultPropertyInfo
instance AttrInfo WidgetHasDefaultPropertyInfo where
    type AttrAllowedOps WidgetHasDefaultPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHasDefaultPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetHasDefaultPropertyInfo = WidgetK
    type AttrGetType WidgetHasDefaultPropertyInfo = Bool
    type AttrLabel WidgetHasDefaultPropertyInfo = "Widget::has-default"
    attrGet _ = getWidgetHasDefault
    attrSet _ = setWidgetHasDefault
    attrConstruct _ = constructWidgetHasDefault

-- VVV Prop "has-focus"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHasFocus :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetHasFocus obj = liftIO $ getObjectPropertyBool obj "has-focus"

setWidgetHasFocus :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetHasFocus obj val = liftIO $ setObjectPropertyBool obj "has-focus" val

constructWidgetHasFocus :: Bool -> IO ([Char], GValue)
constructWidgetHasFocus val = constructObjectPropertyBool "has-focus" val

data WidgetHasFocusPropertyInfo
instance AttrInfo WidgetHasFocusPropertyInfo where
    type AttrAllowedOps WidgetHasFocusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHasFocusPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetHasFocusPropertyInfo = WidgetK
    type AttrGetType WidgetHasFocusPropertyInfo = Bool
    type AttrLabel WidgetHasFocusPropertyInfo = "Widget::has-focus"
    attrGet _ = getWidgetHasFocus
    attrSet _ = setWidgetHasFocus
    attrConstruct _ = constructWidgetHasFocus

-- VVV Prop "has-tooltip"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHasTooltip :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetHasTooltip obj = liftIO $ getObjectPropertyBool obj "has-tooltip"

setWidgetHasTooltip :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetHasTooltip obj val = liftIO $ setObjectPropertyBool obj "has-tooltip" val

constructWidgetHasTooltip :: Bool -> IO ([Char], GValue)
constructWidgetHasTooltip val = constructObjectPropertyBool "has-tooltip" val

data WidgetHasTooltipPropertyInfo
instance AttrInfo WidgetHasTooltipPropertyInfo where
    type AttrAllowedOps WidgetHasTooltipPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHasTooltipPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetHasTooltipPropertyInfo = WidgetK
    type AttrGetType WidgetHasTooltipPropertyInfo = Bool
    type AttrLabel WidgetHasTooltipPropertyInfo = "Widget::has-tooltip"
    attrGet _ = getWidgetHasTooltip
    attrSet _ = setWidgetHasTooltip
    attrConstruct _ = constructWidgetHasTooltip

-- VVV Prop "height-request"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHeightRequest :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetHeightRequest obj = liftIO $ getObjectPropertyCInt obj "height-request"

setWidgetHeightRequest :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetHeightRequest obj val = liftIO $ setObjectPropertyCInt obj "height-request" val

constructWidgetHeightRequest :: Int32 -> IO ([Char], GValue)
constructWidgetHeightRequest val = constructObjectPropertyCInt "height-request" val

data WidgetHeightRequestPropertyInfo
instance AttrInfo WidgetHeightRequestPropertyInfo where
    type AttrAllowedOps WidgetHeightRequestPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHeightRequestPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetHeightRequestPropertyInfo = WidgetK
    type AttrGetType WidgetHeightRequestPropertyInfo = Int32
    type AttrLabel WidgetHeightRequestPropertyInfo = "Widget::height-request"
    attrGet _ = getWidgetHeightRequest
    attrSet _ = setWidgetHeightRequest
    attrConstruct _ = constructWidgetHeightRequest

-- VVV Prop "hexpand"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHexpand :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetHexpand obj = liftIO $ getObjectPropertyBool obj "hexpand"

setWidgetHexpand :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetHexpand obj val = liftIO $ setObjectPropertyBool obj "hexpand" val

constructWidgetHexpand :: Bool -> IO ([Char], GValue)
constructWidgetHexpand val = constructObjectPropertyBool "hexpand" val

data WidgetHexpandPropertyInfo
instance AttrInfo WidgetHexpandPropertyInfo where
    type AttrAllowedOps WidgetHexpandPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHexpandPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetHexpandPropertyInfo = WidgetK
    type AttrGetType WidgetHexpandPropertyInfo = Bool
    type AttrLabel WidgetHexpandPropertyInfo = "Widget::hexpand"
    attrGet _ = getWidgetHexpand
    attrSet _ = setWidgetHexpand
    attrConstruct _ = constructWidgetHexpand

-- VVV Prop "hexpand-set"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetHexpandSet :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetHexpandSet obj = liftIO $ getObjectPropertyBool obj "hexpand-set"

setWidgetHexpandSet :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetHexpandSet obj val = liftIO $ setObjectPropertyBool obj "hexpand-set" val

constructWidgetHexpandSet :: Bool -> IO ([Char], GValue)
constructWidgetHexpandSet val = constructObjectPropertyBool "hexpand-set" val

data WidgetHexpandSetPropertyInfo
instance AttrInfo WidgetHexpandSetPropertyInfo where
    type AttrAllowedOps WidgetHexpandSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetHexpandSetPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetHexpandSetPropertyInfo = WidgetK
    type AttrGetType WidgetHexpandSetPropertyInfo = Bool
    type AttrLabel WidgetHexpandSetPropertyInfo = "Widget::hexpand-set"
    attrGet _ = getWidgetHexpandSet
    attrSet _ = setWidgetHexpandSet
    attrConstruct _ = constructWidgetHexpandSet

-- VVV Prop "is-focus"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetIsFocus :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetIsFocus obj = liftIO $ getObjectPropertyBool obj "is-focus"

setWidgetIsFocus :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetIsFocus obj val = liftIO $ setObjectPropertyBool obj "is-focus" val

constructWidgetIsFocus :: Bool -> IO ([Char], GValue)
constructWidgetIsFocus val = constructObjectPropertyBool "is-focus" val

data WidgetIsFocusPropertyInfo
instance AttrInfo WidgetIsFocusPropertyInfo where
    type AttrAllowedOps WidgetIsFocusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetIsFocusPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetIsFocusPropertyInfo = WidgetK
    type AttrGetType WidgetIsFocusPropertyInfo = Bool
    type AttrLabel WidgetIsFocusPropertyInfo = "Widget::is-focus"
    attrGet _ = getWidgetIsFocus
    attrSet _ = setWidgetIsFocus
    attrConstruct _ = constructWidgetIsFocus

-- VVV Prop "margin"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMargin :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMargin obj = liftIO $ getObjectPropertyCInt obj "margin"

setWidgetMargin :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMargin obj val = liftIO $ setObjectPropertyCInt obj "margin" val

constructWidgetMargin :: Int32 -> IO ([Char], GValue)
constructWidgetMargin val = constructObjectPropertyCInt "margin" val

data WidgetMarginPropertyInfo
instance AttrInfo WidgetMarginPropertyInfo where
    type AttrAllowedOps WidgetMarginPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginPropertyInfo = WidgetK
    type AttrGetType WidgetMarginPropertyInfo = Int32
    type AttrLabel WidgetMarginPropertyInfo = "Widget::margin"
    attrGet _ = getWidgetMargin
    attrSet _ = setWidgetMargin
    attrConstruct _ = constructWidgetMargin

-- VVV Prop "margin-bottom"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginBottom :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginBottom obj = liftIO $ getObjectPropertyCInt obj "margin-bottom"

setWidgetMarginBottom :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginBottom obj val = liftIO $ setObjectPropertyCInt obj "margin-bottom" val

constructWidgetMarginBottom :: Int32 -> IO ([Char], GValue)
constructWidgetMarginBottom val = constructObjectPropertyCInt "margin-bottom" val

data WidgetMarginBottomPropertyInfo
instance AttrInfo WidgetMarginBottomPropertyInfo where
    type AttrAllowedOps WidgetMarginBottomPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginBottomPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginBottomPropertyInfo = WidgetK
    type AttrGetType WidgetMarginBottomPropertyInfo = Int32
    type AttrLabel WidgetMarginBottomPropertyInfo = "Widget::margin-bottom"
    attrGet _ = getWidgetMarginBottom
    attrSet _ = setWidgetMarginBottom
    attrConstruct _ = constructWidgetMarginBottom

-- VVV Prop "margin-end"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginEnd :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginEnd obj = liftIO $ getObjectPropertyCInt obj "margin-end"

setWidgetMarginEnd :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginEnd obj val = liftIO $ setObjectPropertyCInt obj "margin-end" val

constructWidgetMarginEnd :: Int32 -> IO ([Char], GValue)
constructWidgetMarginEnd val = constructObjectPropertyCInt "margin-end" val

data WidgetMarginEndPropertyInfo
instance AttrInfo WidgetMarginEndPropertyInfo where
    type AttrAllowedOps WidgetMarginEndPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginEndPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginEndPropertyInfo = WidgetK
    type AttrGetType WidgetMarginEndPropertyInfo = Int32
    type AttrLabel WidgetMarginEndPropertyInfo = "Widget::margin-end"
    attrGet _ = getWidgetMarginEnd
    attrSet _ = setWidgetMarginEnd
    attrConstruct _ = constructWidgetMarginEnd

-- VVV Prop "margin-left"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginLeft :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginLeft obj = liftIO $ getObjectPropertyCInt obj "margin-left"

setWidgetMarginLeft :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginLeft obj val = liftIO $ setObjectPropertyCInt obj "margin-left" val

constructWidgetMarginLeft :: Int32 -> IO ([Char], GValue)
constructWidgetMarginLeft val = constructObjectPropertyCInt "margin-left" val

data WidgetMarginLeftPropertyInfo
instance AttrInfo WidgetMarginLeftPropertyInfo where
    type AttrAllowedOps WidgetMarginLeftPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginLeftPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginLeftPropertyInfo = WidgetK
    type AttrGetType WidgetMarginLeftPropertyInfo = Int32
    type AttrLabel WidgetMarginLeftPropertyInfo = "Widget::margin-left"
    attrGet _ = getWidgetMarginLeft
    attrSet _ = setWidgetMarginLeft
    attrConstruct _ = constructWidgetMarginLeft

-- VVV Prop "margin-right"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginRight :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginRight obj = liftIO $ getObjectPropertyCInt obj "margin-right"

setWidgetMarginRight :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginRight obj val = liftIO $ setObjectPropertyCInt obj "margin-right" val

constructWidgetMarginRight :: Int32 -> IO ([Char], GValue)
constructWidgetMarginRight val = constructObjectPropertyCInt "margin-right" val

data WidgetMarginRightPropertyInfo
instance AttrInfo WidgetMarginRightPropertyInfo where
    type AttrAllowedOps WidgetMarginRightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginRightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginRightPropertyInfo = WidgetK
    type AttrGetType WidgetMarginRightPropertyInfo = Int32
    type AttrLabel WidgetMarginRightPropertyInfo = "Widget::margin-right"
    attrGet _ = getWidgetMarginRight
    attrSet _ = setWidgetMarginRight
    attrConstruct _ = constructWidgetMarginRight

-- VVV Prop "margin-start"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginStart :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginStart obj = liftIO $ getObjectPropertyCInt obj "margin-start"

setWidgetMarginStart :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginStart obj val = liftIO $ setObjectPropertyCInt obj "margin-start" val

constructWidgetMarginStart :: Int32 -> IO ([Char], GValue)
constructWidgetMarginStart val = constructObjectPropertyCInt "margin-start" val

data WidgetMarginStartPropertyInfo
instance AttrInfo WidgetMarginStartPropertyInfo where
    type AttrAllowedOps WidgetMarginStartPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginStartPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginStartPropertyInfo = WidgetK
    type AttrGetType WidgetMarginStartPropertyInfo = Int32
    type AttrLabel WidgetMarginStartPropertyInfo = "Widget::margin-start"
    attrGet _ = getWidgetMarginStart
    attrSet _ = setWidgetMarginStart
    attrConstruct _ = constructWidgetMarginStart

-- VVV Prop "margin-top"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetMarginTop :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetMarginTop obj = liftIO $ getObjectPropertyCInt obj "margin-top"

setWidgetMarginTop :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetMarginTop obj val = liftIO $ setObjectPropertyCInt obj "margin-top" val

constructWidgetMarginTop :: Int32 -> IO ([Char], GValue)
constructWidgetMarginTop val = constructObjectPropertyCInt "margin-top" val

data WidgetMarginTopPropertyInfo
instance AttrInfo WidgetMarginTopPropertyInfo where
    type AttrAllowedOps WidgetMarginTopPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetMarginTopPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetMarginTopPropertyInfo = WidgetK
    type AttrGetType WidgetMarginTopPropertyInfo = Int32
    type AttrLabel WidgetMarginTopPropertyInfo = "Widget::margin-top"
    attrGet _ = getWidgetMarginTop
    attrSet _ = setWidgetMarginTop
    attrConstruct _ = constructWidgetMarginTop

-- VVV Prop "name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetName :: (MonadIO m, WidgetK o) => o -> m T.Text
getWidgetName obj = liftIO $ getObjectPropertyString obj "name"

setWidgetName :: (MonadIO m, WidgetK o) => o -> T.Text -> m ()
setWidgetName obj val = liftIO $ setObjectPropertyString obj "name" val

constructWidgetName :: T.Text -> IO ([Char], GValue)
constructWidgetName val = constructObjectPropertyString "name" val

data WidgetNamePropertyInfo
instance AttrInfo WidgetNamePropertyInfo where
    type AttrAllowedOps WidgetNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WidgetNamePropertyInfo = WidgetK
    type AttrGetType WidgetNamePropertyInfo = T.Text
    type AttrLabel WidgetNamePropertyInfo = "Widget::name"
    attrGet _ = getWidgetName
    attrSet _ = setWidgetName
    attrConstruct _ = constructWidgetName

-- VVV Prop "no-show-all"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetNoShowAll :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetNoShowAll obj = liftIO $ getObjectPropertyBool obj "no-show-all"

setWidgetNoShowAll :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetNoShowAll obj val = liftIO $ setObjectPropertyBool obj "no-show-all" val

constructWidgetNoShowAll :: Bool -> IO ([Char], GValue)
constructWidgetNoShowAll val = constructObjectPropertyBool "no-show-all" val

data WidgetNoShowAllPropertyInfo
instance AttrInfo WidgetNoShowAllPropertyInfo where
    type AttrAllowedOps WidgetNoShowAllPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetNoShowAllPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetNoShowAllPropertyInfo = WidgetK
    type AttrGetType WidgetNoShowAllPropertyInfo = Bool
    type AttrLabel WidgetNoShowAllPropertyInfo = "Widget::no-show-all"
    attrGet _ = getWidgetNoShowAll
    attrSet _ = setWidgetNoShowAll
    attrConstruct _ = constructWidgetNoShowAll

-- VVV Prop "opacity"
   -- Type: TBasicType TDouble
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetOpacity :: (MonadIO m, WidgetK o) => o -> m Double
getWidgetOpacity obj = liftIO $ getObjectPropertyDouble obj "opacity"

setWidgetOpacity :: (MonadIO m, WidgetK o) => o -> Double -> m ()
setWidgetOpacity obj val = liftIO $ setObjectPropertyDouble obj "opacity" val

constructWidgetOpacity :: Double -> IO ([Char], GValue)
constructWidgetOpacity val = constructObjectPropertyDouble "opacity" val

data WidgetOpacityPropertyInfo
instance AttrInfo WidgetOpacityPropertyInfo where
    type AttrAllowedOps WidgetOpacityPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetOpacityPropertyInfo = (~) Double
    type AttrBaseTypeConstraint WidgetOpacityPropertyInfo = WidgetK
    type AttrGetType WidgetOpacityPropertyInfo = Double
    type AttrLabel WidgetOpacityPropertyInfo = "Widget::opacity"
    attrGet _ = getWidgetOpacity
    attrSet _ = setWidgetOpacity
    attrConstruct _ = constructWidgetOpacity

-- VVV Prop "parent"
   -- Type: TInterface "Gtk" "Container"
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetParent :: (MonadIO m, WidgetK o) => o -> m Container
getWidgetParent obj = liftIO $ getObjectPropertyObject obj "parent" Container

setWidgetParent :: (MonadIO m, WidgetK o, ContainerK a) => o -> a -> m ()
setWidgetParent obj val = liftIO $ setObjectPropertyObject obj "parent" val

constructWidgetParent :: (ContainerK a) => a -> IO ([Char], GValue)
constructWidgetParent val = constructObjectPropertyObject "parent" val

data WidgetParentPropertyInfo
instance AttrInfo WidgetParentPropertyInfo where
    type AttrAllowedOps WidgetParentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetParentPropertyInfo = ContainerK
    type AttrBaseTypeConstraint WidgetParentPropertyInfo = WidgetK
    type AttrGetType WidgetParentPropertyInfo = Container
    type AttrLabel WidgetParentPropertyInfo = "Widget::parent"
    attrGet _ = getWidgetParent
    attrSet _ = setWidgetParent
    attrConstruct _ = constructWidgetParent

-- VVV Prop "receives-default"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetReceivesDefault :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetReceivesDefault obj = liftIO $ getObjectPropertyBool obj "receives-default"

setWidgetReceivesDefault :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetReceivesDefault obj val = liftIO $ setObjectPropertyBool obj "receives-default" val

constructWidgetReceivesDefault :: Bool -> IO ([Char], GValue)
constructWidgetReceivesDefault val = constructObjectPropertyBool "receives-default" val

data WidgetReceivesDefaultPropertyInfo
instance AttrInfo WidgetReceivesDefaultPropertyInfo where
    type AttrAllowedOps WidgetReceivesDefaultPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetReceivesDefaultPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetReceivesDefaultPropertyInfo = WidgetK
    type AttrGetType WidgetReceivesDefaultPropertyInfo = Bool
    type AttrLabel WidgetReceivesDefaultPropertyInfo = "Widget::receives-default"
    attrGet _ = getWidgetReceivesDefault
    attrSet _ = setWidgetReceivesDefault
    attrConstruct _ = constructWidgetReceivesDefault

-- VVV Prop "scale-factor"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getWidgetScaleFactor :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetScaleFactor obj = liftIO $ getObjectPropertyCInt obj "scale-factor"

data WidgetScaleFactorPropertyInfo
instance AttrInfo WidgetScaleFactorPropertyInfo where
    type AttrAllowedOps WidgetScaleFactorPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WidgetScaleFactorPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WidgetScaleFactorPropertyInfo = WidgetK
    type AttrGetType WidgetScaleFactorPropertyInfo = Int32
    type AttrLabel WidgetScaleFactorPropertyInfo = "Widget::scale-factor"
    attrGet _ = getWidgetScaleFactor
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "sensitive"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetSensitive :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetSensitive obj = liftIO $ getObjectPropertyBool obj "sensitive"

setWidgetSensitive :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetSensitive obj val = liftIO $ setObjectPropertyBool obj "sensitive" val

constructWidgetSensitive :: Bool -> IO ([Char], GValue)
constructWidgetSensitive val = constructObjectPropertyBool "sensitive" val

data WidgetSensitivePropertyInfo
instance AttrInfo WidgetSensitivePropertyInfo where
    type AttrAllowedOps WidgetSensitivePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetSensitivePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetSensitivePropertyInfo = WidgetK
    type AttrGetType WidgetSensitivePropertyInfo = Bool
    type AttrLabel WidgetSensitivePropertyInfo = "Widget::sensitive"
    attrGet _ = getWidgetSensitive
    attrSet _ = setWidgetSensitive
    attrConstruct _ = constructWidgetSensitive

-- VVV Prop "style"
   -- Type: TInterface "Gtk" "Style"
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetStyle :: (MonadIO m, WidgetK o) => o -> m Style
getWidgetStyle obj = liftIO $ getObjectPropertyObject obj "style" Style

setWidgetStyle :: (MonadIO m, WidgetK o, StyleK a) => o -> a -> m ()
setWidgetStyle obj val = liftIO $ setObjectPropertyObject obj "style" val

constructWidgetStyle :: (StyleK a) => a -> IO ([Char], GValue)
constructWidgetStyle val = constructObjectPropertyObject "style" val

data WidgetStylePropertyInfo
instance AttrInfo WidgetStylePropertyInfo where
    type AttrAllowedOps WidgetStylePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetStylePropertyInfo = StyleK
    type AttrBaseTypeConstraint WidgetStylePropertyInfo = WidgetK
    type AttrGetType WidgetStylePropertyInfo = Style
    type AttrLabel WidgetStylePropertyInfo = "Widget::style"
    attrGet _ = getWidgetStyle
    attrSet _ = setWidgetStyle
    attrConstruct _ = constructWidgetStyle

-- VVV Prop "tooltip-markup"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetTooltipMarkup :: (MonadIO m, WidgetK o) => o -> m T.Text
getWidgetTooltipMarkup obj = liftIO $ getObjectPropertyString obj "tooltip-markup"

setWidgetTooltipMarkup :: (MonadIO m, WidgetK o) => o -> T.Text -> m ()
setWidgetTooltipMarkup obj val = liftIO $ setObjectPropertyString obj "tooltip-markup" val

constructWidgetTooltipMarkup :: T.Text -> IO ([Char], GValue)
constructWidgetTooltipMarkup val = constructObjectPropertyString "tooltip-markup" val

data WidgetTooltipMarkupPropertyInfo
instance AttrInfo WidgetTooltipMarkupPropertyInfo where
    type AttrAllowedOps WidgetTooltipMarkupPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetTooltipMarkupPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WidgetTooltipMarkupPropertyInfo = WidgetK
    type AttrGetType WidgetTooltipMarkupPropertyInfo = T.Text
    type AttrLabel WidgetTooltipMarkupPropertyInfo = "Widget::tooltip-markup"
    attrGet _ = getWidgetTooltipMarkup
    attrSet _ = setWidgetTooltipMarkup
    attrConstruct _ = constructWidgetTooltipMarkup

-- VVV Prop "tooltip-text"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetTooltipText :: (MonadIO m, WidgetK o) => o -> m T.Text
getWidgetTooltipText obj = liftIO $ getObjectPropertyString obj "tooltip-text"

setWidgetTooltipText :: (MonadIO m, WidgetK o) => o -> T.Text -> m ()
setWidgetTooltipText obj val = liftIO $ setObjectPropertyString obj "tooltip-text" val

constructWidgetTooltipText :: T.Text -> IO ([Char], GValue)
constructWidgetTooltipText val = constructObjectPropertyString "tooltip-text" val

data WidgetTooltipTextPropertyInfo
instance AttrInfo WidgetTooltipTextPropertyInfo where
    type AttrAllowedOps WidgetTooltipTextPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetTooltipTextPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WidgetTooltipTextPropertyInfo = WidgetK
    type AttrGetType WidgetTooltipTextPropertyInfo = T.Text
    type AttrLabel WidgetTooltipTextPropertyInfo = "Widget::tooltip-text"
    attrGet _ = getWidgetTooltipText
    attrSet _ = setWidgetTooltipText
    attrConstruct _ = constructWidgetTooltipText

-- VVV Prop "valign"
   -- Type: TInterface "Gtk" "Align"
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetValign :: (MonadIO m, WidgetK o) => o -> m Align
getWidgetValign obj = liftIO $ getObjectPropertyEnum obj "valign"

setWidgetValign :: (MonadIO m, WidgetK o) => o -> Align -> m ()
setWidgetValign obj val = liftIO $ setObjectPropertyEnum obj "valign" val

constructWidgetValign :: Align -> IO ([Char], GValue)
constructWidgetValign val = constructObjectPropertyEnum "valign" val

data WidgetValignPropertyInfo
instance AttrInfo WidgetValignPropertyInfo where
    type AttrAllowedOps WidgetValignPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetValignPropertyInfo = (~) Align
    type AttrBaseTypeConstraint WidgetValignPropertyInfo = WidgetK
    type AttrGetType WidgetValignPropertyInfo = Align
    type AttrLabel WidgetValignPropertyInfo = "Widget::valign"
    attrGet _ = getWidgetValign
    attrSet _ = setWidgetValign
    attrConstruct _ = constructWidgetValign

-- VVV Prop "vexpand"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetVexpand :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetVexpand obj = liftIO $ getObjectPropertyBool obj "vexpand"

setWidgetVexpand :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetVexpand obj val = liftIO $ setObjectPropertyBool obj "vexpand" val

constructWidgetVexpand :: Bool -> IO ([Char], GValue)
constructWidgetVexpand val = constructObjectPropertyBool "vexpand" val

data WidgetVexpandPropertyInfo
instance AttrInfo WidgetVexpandPropertyInfo where
    type AttrAllowedOps WidgetVexpandPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetVexpandPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetVexpandPropertyInfo = WidgetK
    type AttrGetType WidgetVexpandPropertyInfo = Bool
    type AttrLabel WidgetVexpandPropertyInfo = "Widget::vexpand"
    attrGet _ = getWidgetVexpand
    attrSet _ = setWidgetVexpand
    attrConstruct _ = constructWidgetVexpand

-- VVV Prop "vexpand-set"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetVexpandSet :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetVexpandSet obj = liftIO $ getObjectPropertyBool obj "vexpand-set"

setWidgetVexpandSet :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetVexpandSet obj val = liftIO $ setObjectPropertyBool obj "vexpand-set" val

constructWidgetVexpandSet :: Bool -> IO ([Char], GValue)
constructWidgetVexpandSet val = constructObjectPropertyBool "vexpand-set" val

data WidgetVexpandSetPropertyInfo
instance AttrInfo WidgetVexpandSetPropertyInfo where
    type AttrAllowedOps WidgetVexpandSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetVexpandSetPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetVexpandSetPropertyInfo = WidgetK
    type AttrGetType WidgetVexpandSetPropertyInfo = Bool
    type AttrLabel WidgetVexpandSetPropertyInfo = "Widget::vexpand-set"
    attrGet _ = getWidgetVexpandSet
    attrSet _ = setWidgetVexpandSet
    attrConstruct _ = constructWidgetVexpandSet

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetVisible :: (MonadIO m, WidgetK o) => o -> m Bool
getWidgetVisible obj = liftIO $ getObjectPropertyBool obj "visible"

setWidgetVisible :: (MonadIO m, WidgetK o) => o -> Bool -> m ()
setWidgetVisible obj val = liftIO $ setObjectPropertyBool obj "visible" val

constructWidgetVisible :: Bool -> IO ([Char], GValue)
constructWidgetVisible val = constructObjectPropertyBool "visible" val

data WidgetVisiblePropertyInfo
instance AttrInfo WidgetVisiblePropertyInfo where
    type AttrAllowedOps WidgetVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WidgetVisiblePropertyInfo = WidgetK
    type AttrGetType WidgetVisiblePropertyInfo = Bool
    type AttrLabel WidgetVisiblePropertyInfo = "Widget::visible"
    attrGet _ = getWidgetVisible
    attrSet _ = setWidgetVisible
    attrConstruct _ = constructWidgetVisible

-- VVV Prop "width-request"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getWidgetWidthRequest :: (MonadIO m, WidgetK o) => o -> m Int32
getWidgetWidthRequest obj = liftIO $ getObjectPropertyCInt obj "width-request"

setWidgetWidthRequest :: (MonadIO m, WidgetK o) => o -> Int32 -> m ()
setWidgetWidthRequest obj val = liftIO $ setObjectPropertyCInt obj "width-request" val

constructWidgetWidthRequest :: Int32 -> IO ([Char], GValue)
constructWidgetWidthRequest val = constructObjectPropertyCInt "width-request" val

data WidgetWidthRequestPropertyInfo
instance AttrInfo WidgetWidthRequestPropertyInfo where
    type AttrAllowedOps WidgetWidthRequestPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WidgetWidthRequestPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WidgetWidthRequestPropertyInfo = WidgetK
    type AttrGetType WidgetWidthRequestPropertyInfo = Int32
    type AttrLabel WidgetWidthRequestPropertyInfo = "Widget::width-request"
    attrGet _ = getWidgetWidthRequest
    attrSet _ = setWidgetWidthRequest
    attrConstruct _ = constructWidgetWidthRequest

-- VVV Prop "window"
   -- Type: TInterface "Gdk" "Window"
   -- Flags: [PropertyReadable]

getWidgetWindow :: (MonadIO m, WidgetK o) => o -> m Gdk.Window
getWidgetWindow obj = liftIO $ getObjectPropertyObject obj "window" Gdk.Window

data WidgetWindowPropertyInfo
instance AttrInfo WidgetWindowPropertyInfo where
    type AttrAllowedOps WidgetWindowPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint WidgetWindowPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WidgetWindowPropertyInfo = WidgetK
    type AttrGetType WidgetWindowPropertyInfo = Gdk.Window
    type AttrLabel WidgetWindowPropertyInfo = "Widget::window"
    attrGet _ = getWidgetWindow
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList Widget = WidgetAttributeList
type WidgetAttributeList = ('[ '("app-paintable", WidgetAppPaintablePropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("parent", WidgetParentPropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("style", WidgetStylePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo)] :: [(Symbol, *)])

data WidgetAccelClosuresChangedSignalInfo
instance SignalInfo WidgetAccelClosuresChangedSignalInfo where
    type HaskellCallbackType WidgetAccelClosuresChangedSignalInfo = WidgetAccelClosuresChangedCallback
    connectSignal _ = connectWidgetAccelClosuresChanged

data WidgetButtonPressEventSignalInfo
instance SignalInfo WidgetButtonPressEventSignalInfo where
    type HaskellCallbackType WidgetButtonPressEventSignalInfo = WidgetButtonPressEventCallback
    connectSignal _ = connectWidgetButtonPressEvent

data WidgetButtonReleaseEventSignalInfo
instance SignalInfo WidgetButtonReleaseEventSignalInfo where
    type HaskellCallbackType WidgetButtonReleaseEventSignalInfo = WidgetButtonReleaseEventCallback
    connectSignal _ = connectWidgetButtonReleaseEvent

data WidgetCanActivateAccelSignalInfo
instance SignalInfo WidgetCanActivateAccelSignalInfo where
    type HaskellCallbackType WidgetCanActivateAccelSignalInfo = WidgetCanActivateAccelCallback
    connectSignal _ = connectWidgetCanActivateAccel

data WidgetChildNotifySignalInfo
instance SignalInfo WidgetChildNotifySignalInfo where
    type HaskellCallbackType WidgetChildNotifySignalInfo = WidgetChildNotifyCallback
    connectSignal _ = connectWidgetChildNotify

data WidgetCompositedChangedSignalInfo
instance SignalInfo WidgetCompositedChangedSignalInfo where
    type HaskellCallbackType WidgetCompositedChangedSignalInfo = WidgetCompositedChangedCallback
    connectSignal _ = connectWidgetCompositedChanged

data WidgetConfigureEventSignalInfo
instance SignalInfo WidgetConfigureEventSignalInfo where
    type HaskellCallbackType WidgetConfigureEventSignalInfo = WidgetConfigureEventCallback
    connectSignal _ = connectWidgetConfigureEvent

data WidgetDamageEventSignalInfo
instance SignalInfo WidgetDamageEventSignalInfo where
    type HaskellCallbackType WidgetDamageEventSignalInfo = WidgetDamageEventCallback
    connectSignal _ = connectWidgetDamageEvent

data WidgetDeleteEventSignalInfo
instance SignalInfo WidgetDeleteEventSignalInfo where
    type HaskellCallbackType WidgetDeleteEventSignalInfo = WidgetDeleteEventCallback
    connectSignal _ = connectWidgetDeleteEvent

data WidgetDestroySignalInfo
instance SignalInfo WidgetDestroySignalInfo where
    type HaskellCallbackType WidgetDestroySignalInfo = WidgetDestroyCallback
    connectSignal _ = connectWidgetDestroy

data WidgetDestroyEventSignalInfo
instance SignalInfo WidgetDestroyEventSignalInfo where
    type HaskellCallbackType WidgetDestroyEventSignalInfo = WidgetDestroyEventCallback
    connectSignal _ = connectWidgetDestroyEvent

data WidgetDirectionChangedSignalInfo
instance SignalInfo WidgetDirectionChangedSignalInfo where
    type HaskellCallbackType WidgetDirectionChangedSignalInfo = WidgetDirectionChangedCallback
    connectSignal _ = connectWidgetDirectionChanged

data WidgetDragBeginSignalInfo
instance SignalInfo WidgetDragBeginSignalInfo where
    type HaskellCallbackType WidgetDragBeginSignalInfo = WidgetDragBeginCallback
    connectSignal _ = connectWidgetDragBegin

data WidgetDragDataDeleteSignalInfo
instance SignalInfo WidgetDragDataDeleteSignalInfo where
    type HaskellCallbackType WidgetDragDataDeleteSignalInfo = WidgetDragDataDeleteCallback
    connectSignal _ = connectWidgetDragDataDelete

data WidgetDragDataGetSignalInfo
instance SignalInfo WidgetDragDataGetSignalInfo where
    type HaskellCallbackType WidgetDragDataGetSignalInfo = WidgetDragDataGetCallback
    connectSignal _ = connectWidgetDragDataGet

data WidgetDragDataReceivedSignalInfo
instance SignalInfo WidgetDragDataReceivedSignalInfo where
    type HaskellCallbackType WidgetDragDataReceivedSignalInfo = WidgetDragDataReceivedCallback
    connectSignal _ = connectWidgetDragDataReceived

data WidgetDragDropSignalInfo
instance SignalInfo WidgetDragDropSignalInfo where
    type HaskellCallbackType WidgetDragDropSignalInfo = WidgetDragDropCallback
    connectSignal _ = connectWidgetDragDrop

data WidgetDragEndSignalInfo
instance SignalInfo WidgetDragEndSignalInfo where
    type HaskellCallbackType WidgetDragEndSignalInfo = WidgetDragEndCallback
    connectSignal _ = connectWidgetDragEnd

data WidgetDragFailedSignalInfo
instance SignalInfo WidgetDragFailedSignalInfo where
    type HaskellCallbackType WidgetDragFailedSignalInfo = WidgetDragFailedCallback
    connectSignal _ = connectWidgetDragFailed

data WidgetDragLeaveSignalInfo
instance SignalInfo WidgetDragLeaveSignalInfo where
    type HaskellCallbackType WidgetDragLeaveSignalInfo = WidgetDragLeaveCallback
    connectSignal _ = connectWidgetDragLeave

data WidgetDragMotionSignalInfo
instance SignalInfo WidgetDragMotionSignalInfo where
    type HaskellCallbackType WidgetDragMotionSignalInfo = WidgetDragMotionCallback
    connectSignal _ = connectWidgetDragMotion

data WidgetDrawSignalInfo
instance SignalInfo WidgetDrawSignalInfo where
    type HaskellCallbackType WidgetDrawSignalInfo = WidgetDrawCallback
    connectSignal _ = connectWidgetDraw

data WidgetEnterNotifyEventSignalInfo
instance SignalInfo WidgetEnterNotifyEventSignalInfo where
    type HaskellCallbackType WidgetEnterNotifyEventSignalInfo = WidgetEnterNotifyEventCallback
    connectSignal _ = connectWidgetEnterNotifyEvent

data WidgetEventSignalInfo
instance SignalInfo WidgetEventSignalInfo where
    type HaskellCallbackType WidgetEventSignalInfo = WidgetEventCallback
    connectSignal _ = connectWidgetEvent

data WidgetEventAfterSignalInfo
instance SignalInfo WidgetEventAfterSignalInfo where
    type HaskellCallbackType WidgetEventAfterSignalInfo = WidgetEventAfterCallback
    connectSignal _ = connectWidgetEventAfter

data WidgetFocusSignalInfo
instance SignalInfo WidgetFocusSignalInfo where
    type HaskellCallbackType WidgetFocusSignalInfo = WidgetFocusCallback
    connectSignal _ = connectWidgetFocus

data WidgetFocusInEventSignalInfo
instance SignalInfo WidgetFocusInEventSignalInfo where
    type HaskellCallbackType WidgetFocusInEventSignalInfo = WidgetFocusInEventCallback
    connectSignal _ = connectWidgetFocusInEvent

data WidgetFocusOutEventSignalInfo
instance SignalInfo WidgetFocusOutEventSignalInfo where
    type HaskellCallbackType WidgetFocusOutEventSignalInfo = WidgetFocusOutEventCallback
    connectSignal _ = connectWidgetFocusOutEvent

data WidgetGrabBrokenEventSignalInfo
instance SignalInfo WidgetGrabBrokenEventSignalInfo where
    type HaskellCallbackType WidgetGrabBrokenEventSignalInfo = WidgetGrabBrokenEventCallback
    connectSignal _ = connectWidgetGrabBrokenEvent

data WidgetGrabFocusSignalInfo
instance SignalInfo WidgetGrabFocusSignalInfo where
    type HaskellCallbackType WidgetGrabFocusSignalInfo = WidgetGrabFocusCallback
    connectSignal _ = connectWidgetGrabFocus

data WidgetGrabNotifySignalInfo
instance SignalInfo WidgetGrabNotifySignalInfo where
    type HaskellCallbackType WidgetGrabNotifySignalInfo = WidgetGrabNotifyCallback
    connectSignal _ = connectWidgetGrabNotify

data WidgetHideSignalInfo
instance SignalInfo WidgetHideSignalInfo where
    type HaskellCallbackType WidgetHideSignalInfo = WidgetHideCallback
    connectSignal _ = connectWidgetHide

data WidgetHierarchyChangedSignalInfo
instance SignalInfo WidgetHierarchyChangedSignalInfo where
    type HaskellCallbackType WidgetHierarchyChangedSignalInfo = WidgetHierarchyChangedCallback
    connectSignal _ = connectWidgetHierarchyChanged

data WidgetKeyPressEventSignalInfo
instance SignalInfo WidgetKeyPressEventSignalInfo where
    type HaskellCallbackType WidgetKeyPressEventSignalInfo = WidgetKeyPressEventCallback
    connectSignal _ = connectWidgetKeyPressEvent

data WidgetKeyReleaseEventSignalInfo
instance SignalInfo WidgetKeyReleaseEventSignalInfo where
    type HaskellCallbackType WidgetKeyReleaseEventSignalInfo = WidgetKeyReleaseEventCallback
    connectSignal _ = connectWidgetKeyReleaseEvent

data WidgetKeynavFailedSignalInfo
instance SignalInfo WidgetKeynavFailedSignalInfo where
    type HaskellCallbackType WidgetKeynavFailedSignalInfo = WidgetKeynavFailedCallback
    connectSignal _ = connectWidgetKeynavFailed

data WidgetLeaveNotifyEventSignalInfo
instance SignalInfo WidgetLeaveNotifyEventSignalInfo where
    type HaskellCallbackType WidgetLeaveNotifyEventSignalInfo = WidgetLeaveNotifyEventCallback
    connectSignal _ = connectWidgetLeaveNotifyEvent

data WidgetMapSignalInfo
instance SignalInfo WidgetMapSignalInfo where
    type HaskellCallbackType WidgetMapSignalInfo = WidgetMapCallback
    connectSignal _ = connectWidgetMap

data WidgetMapEventSignalInfo
instance SignalInfo WidgetMapEventSignalInfo where
    type HaskellCallbackType WidgetMapEventSignalInfo = WidgetMapEventCallback
    connectSignal _ = connectWidgetMapEvent

data WidgetMnemonicActivateSignalInfo
instance SignalInfo WidgetMnemonicActivateSignalInfo where
    type HaskellCallbackType WidgetMnemonicActivateSignalInfo = WidgetMnemonicActivateCallback
    connectSignal _ = connectWidgetMnemonicActivate

data WidgetMotionNotifyEventSignalInfo
instance SignalInfo WidgetMotionNotifyEventSignalInfo where
    type HaskellCallbackType WidgetMotionNotifyEventSignalInfo = WidgetMotionNotifyEventCallback
    connectSignal _ = connectWidgetMotionNotifyEvent

data WidgetMoveFocusSignalInfo
instance SignalInfo WidgetMoveFocusSignalInfo where
    type HaskellCallbackType WidgetMoveFocusSignalInfo = WidgetMoveFocusCallback
    connectSignal _ = connectWidgetMoveFocus

data WidgetParentSetSignalInfo
instance SignalInfo WidgetParentSetSignalInfo where
    type HaskellCallbackType WidgetParentSetSignalInfo = WidgetParentSetCallback
    connectSignal _ = connectWidgetParentSet

data WidgetPopupMenuSignalInfo
instance SignalInfo WidgetPopupMenuSignalInfo where
    type HaskellCallbackType WidgetPopupMenuSignalInfo = WidgetPopupMenuCallback
    connectSignal _ = connectWidgetPopupMenu

data WidgetPropertyNotifyEventSignalInfo
instance SignalInfo WidgetPropertyNotifyEventSignalInfo where
    type HaskellCallbackType WidgetPropertyNotifyEventSignalInfo = WidgetPropertyNotifyEventCallback
    connectSignal _ = connectWidgetPropertyNotifyEvent

data WidgetProximityInEventSignalInfo
instance SignalInfo WidgetProximityInEventSignalInfo where
    type HaskellCallbackType WidgetProximityInEventSignalInfo = WidgetProximityInEventCallback
    connectSignal _ = connectWidgetProximityInEvent

data WidgetProximityOutEventSignalInfo
instance SignalInfo WidgetProximityOutEventSignalInfo where
    type HaskellCallbackType WidgetProximityOutEventSignalInfo = WidgetProximityOutEventCallback
    connectSignal _ = connectWidgetProximityOutEvent

data WidgetQueryTooltipSignalInfo
instance SignalInfo WidgetQueryTooltipSignalInfo where
    type HaskellCallbackType WidgetQueryTooltipSignalInfo = WidgetQueryTooltipCallback
    connectSignal _ = connectWidgetQueryTooltip

data WidgetRealizeSignalInfo
instance SignalInfo WidgetRealizeSignalInfo where
    type HaskellCallbackType WidgetRealizeSignalInfo = WidgetRealizeCallback
    connectSignal _ = connectWidgetRealize

data WidgetScreenChangedSignalInfo
instance SignalInfo WidgetScreenChangedSignalInfo where
    type HaskellCallbackType WidgetScreenChangedSignalInfo = WidgetScreenChangedCallback
    connectSignal _ = connectWidgetScreenChanged

data WidgetScrollEventSignalInfo
instance SignalInfo WidgetScrollEventSignalInfo where
    type HaskellCallbackType WidgetScrollEventSignalInfo = WidgetScrollEventCallback
    connectSignal _ = connectWidgetScrollEvent

data WidgetSelectionClearEventSignalInfo
instance SignalInfo WidgetSelectionClearEventSignalInfo where
    type HaskellCallbackType WidgetSelectionClearEventSignalInfo = WidgetSelectionClearEventCallback
    connectSignal _ = connectWidgetSelectionClearEvent

data WidgetSelectionGetSignalInfo
instance SignalInfo WidgetSelectionGetSignalInfo where
    type HaskellCallbackType WidgetSelectionGetSignalInfo = WidgetSelectionGetCallback
    connectSignal _ = connectWidgetSelectionGet

data WidgetSelectionNotifyEventSignalInfo
instance SignalInfo WidgetSelectionNotifyEventSignalInfo where
    type HaskellCallbackType WidgetSelectionNotifyEventSignalInfo = WidgetSelectionNotifyEventCallback
    connectSignal _ = connectWidgetSelectionNotifyEvent

data WidgetSelectionReceivedSignalInfo
instance SignalInfo WidgetSelectionReceivedSignalInfo where
    type HaskellCallbackType WidgetSelectionReceivedSignalInfo = WidgetSelectionReceivedCallback
    connectSignal _ = connectWidgetSelectionReceived

data WidgetSelectionRequestEventSignalInfo
instance SignalInfo WidgetSelectionRequestEventSignalInfo where
    type HaskellCallbackType WidgetSelectionRequestEventSignalInfo = WidgetSelectionRequestEventCallback
    connectSignal _ = connectWidgetSelectionRequestEvent

data WidgetShowSignalInfo
instance SignalInfo WidgetShowSignalInfo where
    type HaskellCallbackType WidgetShowSignalInfo = WidgetShowCallback
    connectSignal _ = connectWidgetShow

data WidgetShowHelpSignalInfo
instance SignalInfo WidgetShowHelpSignalInfo where
    type HaskellCallbackType WidgetShowHelpSignalInfo = WidgetShowHelpCallback
    connectSignal _ = connectWidgetShowHelp

data WidgetSizeAllocateSignalInfo
instance SignalInfo WidgetSizeAllocateSignalInfo where
    type HaskellCallbackType WidgetSizeAllocateSignalInfo = WidgetSizeAllocateCallback
    connectSignal _ = connectWidgetSizeAllocate

data WidgetStateChangedSignalInfo
instance SignalInfo WidgetStateChangedSignalInfo where
    type HaskellCallbackType WidgetStateChangedSignalInfo = WidgetStateChangedCallback
    connectSignal _ = connectWidgetStateChanged

data WidgetStateFlagsChangedSignalInfo
instance SignalInfo WidgetStateFlagsChangedSignalInfo where
    type HaskellCallbackType WidgetStateFlagsChangedSignalInfo = WidgetStateFlagsChangedCallback
    connectSignal _ = connectWidgetStateFlagsChanged

data WidgetStyleSetSignalInfo
instance SignalInfo WidgetStyleSetSignalInfo where
    type HaskellCallbackType WidgetStyleSetSignalInfo = WidgetStyleSetCallback
    connectSignal _ = connectWidgetStyleSet

data WidgetStyleUpdatedSignalInfo
instance SignalInfo WidgetStyleUpdatedSignalInfo where
    type HaskellCallbackType WidgetStyleUpdatedSignalInfo = WidgetStyleUpdatedCallback
    connectSignal _ = connectWidgetStyleUpdated

data WidgetTouchEventSignalInfo
instance SignalInfo WidgetTouchEventSignalInfo where
    type HaskellCallbackType WidgetTouchEventSignalInfo = WidgetTouchEventCallback
    connectSignal _ = connectWidgetTouchEvent

data WidgetUnmapSignalInfo
instance SignalInfo WidgetUnmapSignalInfo where
    type HaskellCallbackType WidgetUnmapSignalInfo = WidgetUnmapCallback
    connectSignal _ = connectWidgetUnmap

data WidgetUnmapEventSignalInfo
instance SignalInfo WidgetUnmapEventSignalInfo where
    type HaskellCallbackType WidgetUnmapEventSignalInfo = WidgetUnmapEventCallback
    connectSignal _ = connectWidgetUnmapEvent

data WidgetUnrealizeSignalInfo
instance SignalInfo WidgetUnrealizeSignalInfo where
    type HaskellCallbackType WidgetUnrealizeSignalInfo = WidgetUnrealizeCallback
    connectSignal _ = connectWidgetUnrealize

data WidgetVisibilityNotifyEventSignalInfo
instance SignalInfo WidgetVisibilityNotifyEventSignalInfo where
    type HaskellCallbackType WidgetVisibilityNotifyEventSignalInfo = WidgetVisibilityNotifyEventCallback
    connectSignal _ = connectWidgetVisibilityNotifyEvent

data WidgetWindowStateEventSignalInfo
instance SignalInfo WidgetWindowStateEventSignalInfo where
    type HaskellCallbackType WidgetWindowStateEventSignalInfo = WidgetWindowStateEventCallback
    connectSignal _ = connectWidgetWindowStateEvent

type instance SignalList Widget = WidgetSignalList
type WidgetSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("child-notify", WidgetChildNotifySignalInfo), '("composited-changed", WidgetCompositedChangedSignalInfo), '("configure-event", WidgetConfigureEventSignalInfo), '("damage-event", WidgetDamageEventSignalInfo), '("delete-event", WidgetDeleteEventSignalInfo), '("destroy", WidgetDestroySignalInfo), '("destroy-event", WidgetDestroyEventSignalInfo), '("direction-changed", WidgetDirectionChangedSignalInfo), '("drag-begin", WidgetDragBeginSignalInfo), '("drag-data-delete", WidgetDragDataDeleteSignalInfo), '("drag-data-get", WidgetDragDataGetSignalInfo), '("drag-data-received", WidgetDragDataReceivedSignalInfo), '("drag-drop", WidgetDragDropSignalInfo), '("drag-end", WidgetDragEndSignalInfo), '("drag-failed", WidgetDragFailedSignalInfo), '("drag-leave", WidgetDragLeaveSignalInfo), '("drag-motion", WidgetDragMotionSignalInfo), '("draw", WidgetDrawSignalInfo), '("enter-notify-event", WidgetEnterNotifyEventSignalInfo), '("event", WidgetEventSignalInfo), '("event-after", WidgetEventAfterSignalInfo), '("focus", WidgetFocusSignalInfo), '("focus-in-event", WidgetFocusInEventSignalInfo), '("focus-out-event", WidgetFocusOutEventSignalInfo), '("grab-broken-event", WidgetGrabBrokenEventSignalInfo), '("grab-focus", WidgetGrabFocusSignalInfo), '("grab-notify", WidgetGrabNotifySignalInfo), '("hide", WidgetHideSignalInfo), '("hierarchy-changed", WidgetHierarchyChangedSignalInfo), '("key-press-event", WidgetKeyPressEventSignalInfo), '("key-release-event", WidgetKeyReleaseEventSignalInfo), '("keynav-failed", WidgetKeynavFailedSignalInfo), '("leave-notify-event", WidgetLeaveNotifyEventSignalInfo), '("map", WidgetMapSignalInfo), '("map-event", WidgetMapEventSignalInfo), '("mnemonic-activate", WidgetMnemonicActivateSignalInfo), '("motion-notify-event", WidgetMotionNotifyEventSignalInfo), '("move-focus", WidgetMoveFocusSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", WidgetParentSetSignalInfo), '("popup-menu", WidgetPopupMenuSignalInfo), '("property-notify-event", WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", WidgetProximityInEventSignalInfo), '("proximity-out-event", WidgetProximityOutEventSignalInfo), '("query-tooltip", WidgetQueryTooltipSignalInfo), '("realize", WidgetRealizeSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("show", WidgetShowSignalInfo), '("show-help", WidgetShowHelpSignalInfo), '("size-allocate", WidgetSizeAllocateSignalInfo), '("state-changed", WidgetStateChangedSignalInfo), '("state-flags-changed", WidgetStateFlagsChangedSignalInfo), '("style-set", WidgetStyleSetSignalInfo), '("style-updated", WidgetStyleUpdatedSignalInfo), '("touch-event", WidgetTouchEventSignalInfo), '("unmap", WidgetUnmapSignalInfo), '("unmap-event", WidgetUnmapEventSignalInfo), '("unrealize", WidgetUnrealizeSignalInfo), '("visibility-notify-event", WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", WidgetWindowStateEventSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Widget::activate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_activate" gtk_widget_activate :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetActivate ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetActivate _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_activate _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::add_accelerator
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_signal", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_flags", argType = TInterface "Gtk" "AccelFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_signal", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_flags", argType = TInterface "Gtk" "AccelFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_add_accelerator" gtk_widget_add_accelerator :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- accel_signal : TBasicType TUTF8
    Ptr AccelGroup ->                       -- accel_group : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    CUInt ->                                -- accel_flags : TInterface "Gtk" "AccelFlags"
    IO ()


widgetAddAccelerator ::
    (MonadIO m, WidgetK a, AccelGroupK b) =>
    a ->                                    -- _obj
    T.Text ->                               -- accel_signal
    b ->                                    -- accel_group
    Word32 ->                               -- accel_key
    [Gdk.ModifierType] ->                   -- accel_mods
    [AccelFlags] ->                         -- accel_flags
    m ()
widgetAddAccelerator _obj accel_signal accel_group accel_key accel_mods accel_flags = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    accel_signal' <- textToCString accel_signal
    let accel_group' = unsafeManagedPtrCastPtr accel_group
    let accel_mods' = gflagsToWord accel_mods
    let accel_flags' = gflagsToWord accel_flags
    gtk_widget_add_accelerator _obj' accel_signal' accel_group' accel_key accel_mods' accel_flags'
    touchManagedPtr _obj
    touchManagedPtr accel_group
    freeMem accel_signal'
    return ()

-- method Widget::add_device_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_add_device_events" gtk_widget_add_device_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    CUInt ->                                -- events : TInterface "Gdk" "EventMask"
    IO ()


widgetAddDeviceEvents ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    [Gdk.EventMask] ->                      -- events
    m ()
widgetAddDeviceEvents _obj device events = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    let events' = gflagsToWord events
    gtk_widget_add_device_events _obj' device' events'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Widget::add_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_add_events" gtk_widget_add_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- events : TBasicType TInt32
    IO ()


widgetAddEvents ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- events
    m ()
widgetAddEvents _obj events = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_add_events _obj' events
    touchManagedPtr _obj
    return ()

-- method Widget::add_mnemonic_label
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_add_mnemonic_label" gtk_widget_add_mnemonic_label :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- label : TInterface "Gtk" "Widget"
    IO ()


widgetAddMnemonicLabel ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- label
    m ()
widgetAddMnemonicLabel _obj label = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let label' = unsafeManagedPtrCastPtr label
    gtk_widget_add_mnemonic_label _obj' label'
    touchManagedPtr _obj
    touchManagedPtr label
    return ()

-- method Widget::add_tick_callback
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Gtk" "TickCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing},Arg {argName = "user_data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "notify", argType = TInterface "GLib" "DestroyNotify", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "callback", argType = TInterface "Gtk" "TickCallback", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_add_tick_callback" gtk_widget_add_tick_callback :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    FunPtr TickCallbackC ->                 -- callback : TInterface "Gtk" "TickCallback"
    Ptr () ->                               -- user_data : TBasicType TVoid
    FunPtr GLib.DestroyNotifyC ->           -- notify : TInterface "GLib" "DestroyNotify"
    IO Word32


widgetAddTickCallback ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    TickCallback ->                         -- callback
    m Word32
widgetAddTickCallback _obj callback = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    callback' <- mkTickCallback (tickCallbackWrapper Nothing callback)
    let user_data = castFunPtrToPtr callback'
    let notify = safeFreeFunPtrPtr
    result <- gtk_widget_add_tick_callback _obj' callback' user_data notify
    touchManagedPtr _obj
    return result

-- method Widget::can_activate_accel
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "signal_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "signal_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_can_activate_accel" gtk_widget_can_activate_accel :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Word32 ->                               -- signal_id : TBasicType TUInt32
    IO CInt


widgetCanActivateAccel ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- signal_id
    m Bool
widgetCanActivateAccel _obj signal_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_can_activate_accel _obj' signal_id
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::child_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Gtk" "DirectionType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Gtk" "DirectionType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_child_focus" gtk_widget_child_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- direction : TInterface "Gtk" "DirectionType"
    IO CInt


widgetChildFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    DirectionType ->                        -- direction
    m Bool
widgetChildFocus _obj direction = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let direction' = (fromIntegral . fromEnum) direction
    result <- gtk_widget_child_focus _obj' direction'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::child_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child_property", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_child_notify" gtk_widget_child_notify :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- child_property : TBasicType TUTF8
    IO ()


widgetChildNotify ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- child_property
    m ()
widgetChildNotify _obj child_property = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    child_property' <- textToCString child_property
    gtk_widget_child_notify _obj' child_property'
    touchManagedPtr _obj
    freeMem child_property'
    return ()

-- method Widget::class_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "path_length", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "path", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "path_reversed", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_class_path" gtk_widget_class_path :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Word32 ->                           -- path_length : TBasicType TUInt32
    Ptr CString ->                          -- path : TBasicType TUTF8
    Ptr CString ->                          -- path_reversed : TBasicType TUTF8
    IO ()

{-# DEPRECATED widgetClassPath ["(Since version 3.0)","Use gtk_widget_get_path() instead"]#-}
widgetClassPath ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Word32,T.Text,T.Text)
widgetClassPath _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    path_length <- allocMem :: IO (Ptr Word32)
    path <- allocMem :: IO (Ptr CString)
    path_reversed <- allocMem :: IO (Ptr CString)
    gtk_widget_class_path _obj' path_length path path_reversed
    path_length' <- peek path_length
    path' <- peek path
    path'' <- cstringToText path'
    freeMem path'
    path_reversed' <- peek path_reversed
    path_reversed'' <- cstringToText path_reversed'
    freeMem path_reversed'
    touchManagedPtr _obj
    freeMem path_length
    freeMem path
    freeMem path_reversed
    return (path_length', path'', path_reversed'')

-- method Widget::compute_expand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "orientation", argType = TInterface "Gtk" "Orientation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "orientation", argType = TInterface "Gtk" "Orientation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_compute_expand" gtk_widget_compute_expand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- orientation : TInterface "Gtk" "Orientation"
    IO CInt


widgetComputeExpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Orientation ->                          -- orientation
    m Bool
widgetComputeExpand _obj orientation = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let orientation' = (fromIntegral . fromEnum) orientation
    result <- gtk_widget_compute_expand _obj' orientation'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::create_pango_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Context"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_create_pango_context" gtk_widget_create_pango_context :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Pango.Context)


widgetCreatePangoContext ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Pango.Context
widgetCreatePangoContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_create_pango_context _obj'
    checkUnexpectedReturnNULL "gtk_widget_create_pango_context" result
    result' <- (wrapObject Pango.Context) result
    touchManagedPtr _obj
    return result'

-- method Widget::create_pango_layout
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Layout"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_create_pango_layout" gtk_widget_create_pango_layout :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- text : TBasicType TUTF8
    IO (Ptr Pango.Layout)


widgetCreatePangoLayout ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- text
    m Pango.Layout
widgetCreatePangoLayout _obj text = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeText <- case text of
        Nothing -> return nullPtr
        Just jText -> do
            jText' <- textToCString jText
            return jText'
    result <- gtk_widget_create_pango_layout _obj' maybeText
    checkUnexpectedReturnNULL "gtk_widget_create_pango_layout" result
    result' <- (wrapObject Pango.Layout) result
    touchManagedPtr _obj
    freeMem maybeText
    return result'

-- method Widget::destroy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_destroy" gtk_widget_destroy :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDestroy ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDestroy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_destroy _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::destroyed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_pointer", argType = TInterface "Gtk" "Widget", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_pointer", argType = TInterface "Gtk" "Widget", direction = DirectionInout, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_destroyed" gtk_widget_destroyed :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr (Ptr Widget) ->                     -- widget_pointer : TInterface "Gtk" "Widget"
    IO ()


widgetDestroyed ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- widget_pointer
    m (Widget)
widgetDestroyed _obj widget_pointer = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let widget_pointer' = unsafeManagedPtrCastPtr widget_pointer
    widget_pointer'' <- allocMem :: IO (Ptr (Ptr Widget))
    poke widget_pointer'' widget_pointer'
    gtk_widget_destroyed _obj' widget_pointer''
    widget_pointer''' <- peek widget_pointer''
    widget_pointer'''' <- (newObject Widget) widget_pointer'''
    touchManagedPtr _obj
    touchManagedPtr widget_pointer
    freeMem widget_pointer''
    return widget_pointer''''

-- method Widget::device_is_shadowed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_device_is_shadowed" gtk_widget_device_is_shadowed :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    IO CInt


widgetDeviceIsShadowed ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m Bool
widgetDeviceIsShadowed _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gtk_widget_device_is_shadowed _obj' device'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Widget::drag_begin
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragContext"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_begin" gtk_drag_begin :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr TargetList ->                       -- targets : TInterface "Gtk" "TargetList"
    CUInt ->                                -- actions : TInterface "Gdk" "DragAction"
    Int32 ->                                -- button : TBasicType TInt32
    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
    IO (Ptr Gdk.DragContext)

{-# DEPRECATED widgetDragBegin ["(Since version 3.10)","Use gtk_drag_begin_with_coordinates() instead"]#-}
widgetDragBegin ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    TargetList ->                           -- targets
    [Gdk.DragAction] ->                     -- actions
    Int32 ->                                -- button
    Maybe (Gdk.Event) ->                    -- event
    m Gdk.DragContext
widgetDragBegin _obj targets actions button event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let targets' = unsafeManagedPtrGetPtr targets
    let actions' = gflagsToWord actions
    maybeEvent <- case event of
        Nothing -> return nullPtr
        Just jEvent -> do
            let jEvent' = unsafeManagedPtrGetPtr jEvent
            return jEvent'
    result <- gtk_drag_begin _obj' targets' actions' button maybeEvent
    checkUnexpectedReturnNULL "gtk_drag_begin" result
    result' <- (newObject Gdk.DragContext) result
    touchManagedPtr _obj
    touchManagedPtr targets
    whenJust event touchManagedPtr
    return result'

-- method Widget::drag_begin_with_coordinates
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "button", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "DragContext"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_begin_with_coordinates" gtk_drag_begin_with_coordinates :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr TargetList ->                       -- targets : TInterface "Gtk" "TargetList"
    CUInt ->                                -- actions : TInterface "Gdk" "DragAction"
    Int32 ->                                -- button : TBasicType TInt32
    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    IO (Ptr Gdk.DragContext)


widgetDragBeginWithCoordinates ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    TargetList ->                           -- targets
    [Gdk.DragAction] ->                     -- actions
    Int32 ->                                -- button
    Maybe (Gdk.Event) ->                    -- event
    Int32 ->                                -- x
    Int32 ->                                -- y
    m Gdk.DragContext
widgetDragBeginWithCoordinates _obj targets actions button event x y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let targets' = unsafeManagedPtrGetPtr targets
    let actions' = gflagsToWord actions
    maybeEvent <- case event of
        Nothing -> return nullPtr
        Just jEvent -> do
            let jEvent' = unsafeManagedPtrGetPtr jEvent
            return jEvent'
    result <- gtk_drag_begin_with_coordinates _obj' targets' actions' button maybeEvent x y
    checkUnexpectedReturnNULL "gtk_drag_begin_with_coordinates" result
    result' <- (newObject Gdk.DragContext) result
    touchManagedPtr _obj
    touchManagedPtr targets
    whenJust event touchManagedPtr
    return result'

-- method Widget::drag_check_threshold
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "current_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "current_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "current_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "current_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_check_threshold" gtk_drag_check_threshold :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- start_x : TBasicType TInt32
    Int32 ->                                -- start_y : TBasicType TInt32
    Int32 ->                                -- current_x : TBasicType TInt32
    Int32 ->                                -- current_y : TBasicType TInt32
    IO CInt


widgetDragCheckThreshold ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- start_x
    Int32 ->                                -- start_y
    Int32 ->                                -- current_x
    Int32 ->                                -- current_y
    m Bool
widgetDragCheckThreshold _obj start_x start_y current_x current_y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_drag_check_threshold _obj' start_x start_y current_x current_y
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::drag_dest_add_image_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_add_image_targets" gtk_drag_dest_add_image_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragDestAddImageTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragDestAddImageTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_dest_add_image_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_dest_add_text_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_add_text_targets" gtk_drag_dest_add_text_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragDestAddTextTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragDestAddTextTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_dest_add_text_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_dest_add_uri_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_add_uri_targets" gtk_drag_dest_add_uri_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragDestAddUriTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragDestAddUriTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_dest_add_uri_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_dest_find_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Atom"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_find_target" gtk_drag_dest_find_target :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.DragContext ->                  -- context : TInterface "Gdk" "DragContext"
    Ptr TargetList ->                       -- target_list : TInterface "Gtk" "TargetList"
    IO (Ptr Gdk.Atom)


widgetDragDestFindTarget ::
    (MonadIO m, WidgetK a, Gdk.DragContextK b) =>
    a ->                                    -- _obj
    b ->                                    -- context
    Maybe (TargetList) ->                   -- target_list
    m Gdk.Atom
widgetDragDestFindTarget _obj context target_list = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let context' = unsafeManagedPtrCastPtr context
    maybeTarget_list <- case target_list of
        Nothing -> return nullPtr
        Just jTarget_list -> do
            let jTarget_list' = unsafeManagedPtrGetPtr jTarget_list
            return jTarget_list'
    result <- gtk_drag_dest_find_target _obj' context' maybeTarget_list
    checkUnexpectedReturnNULL "gtk_drag_dest_find_target" result
    -- XXX Wrapping a foreign struct/union with no known destructor, leak?
    result' <- (\x -> Gdk.Atom <$> newForeignPtr_ x) result
    touchManagedPtr _obj
    touchManagedPtr context
    whenJust target_list touchManagedPtr
    return result'

-- method Widget::drag_dest_get_target_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "TargetList"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_get_target_list" gtk_drag_dest_get_target_list :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr TargetList)


widgetDragDestGetTargetList ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m TargetList
widgetDragDestGetTargetList _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_drag_dest_get_target_list _obj'
    checkUnexpectedReturnNULL "gtk_drag_dest_get_target_list" result
    result' <- (newBoxed TargetList) result
    touchManagedPtr _obj
    return result'

-- method Widget::drag_dest_get_track_motion
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_get_track_motion" gtk_drag_dest_get_track_motion :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetDragDestGetTrackMotion ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetDragDestGetTrackMotion _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_drag_dest_get_track_motion _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::drag_dest_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "DestDefaults", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : [Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "DestDefaults", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_set" gtk_drag_dest_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- flags : TInterface "Gtk" "DestDefaults"
    Ptr TargetEntry ->                      -- targets : TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry")
    Int32 ->                                -- n_targets : TBasicType TInt32
    CUInt ->                                -- actions : TInterface "Gdk" "DragAction"
    IO ()


widgetDragDestSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [DestDefaults] ->                       -- flags
    Maybe ([TargetEntry]) ->                -- targets
    [Gdk.DragAction] ->                     -- actions
    m ()
widgetDragDestSet _obj flags targets actions = liftIO $ do
    let n_targets = case targets of
            Nothing -> 0
            Just jTargets -> fromIntegral $ length jTargets
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flags' = gflagsToWord flags
    maybeTargets <- case targets of
        Nothing -> return nullPtr
        Just jTargets -> do
            let jTargets' = map unsafeManagedPtrGetPtr jTargets
            jTargets'' <- packBlockArray 16 jTargets'
            return jTargets''
    let actions' = gflagsToWord actions
    gtk_drag_dest_set _obj' flags' maybeTargets n_targets actions'
    touchManagedPtr _obj
    whenJust targets (mapM_ touchManagedPtr)
    freeMem maybeTargets
    return ()

-- method Widget::drag_dest_set_proxy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "proxy_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use_coordinates", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "proxy_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "protocol", argType = TInterface "Gdk" "DragProtocol", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "use_coordinates", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_set_proxy" gtk_drag_dest_set_proxy :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Window ->                       -- proxy_window : TInterface "Gdk" "Window"
    CUInt ->                                -- protocol : TInterface "Gdk" "DragProtocol"
    CInt ->                                 -- use_coordinates : TBasicType TBoolean
    IO ()


widgetDragDestSetProxy ::
    (MonadIO m, WidgetK a, Gdk.WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- proxy_window
    Gdk.DragProtocol ->                     -- protocol
    Bool ->                                 -- use_coordinates
    m ()
widgetDragDestSetProxy _obj proxy_window protocol use_coordinates = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let proxy_window' = unsafeManagedPtrCastPtr proxy_window
    let protocol' = (fromIntegral . fromEnum) protocol
    let use_coordinates' = (fromIntegral . fromEnum) use_coordinates
    gtk_drag_dest_set_proxy _obj' proxy_window' protocol' use_coordinates'
    touchManagedPtr _obj
    touchManagedPtr proxy_window
    return ()

-- method Widget::drag_dest_set_target_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_set_target_list" gtk_drag_dest_set_target_list :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr TargetList ->                       -- target_list : TInterface "Gtk" "TargetList"
    IO ()


widgetDragDestSetTargetList ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (TargetList) ->                   -- target_list
    m ()
widgetDragDestSetTargetList _obj target_list = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeTarget_list <- case target_list of
        Nothing -> return nullPtr
        Just jTarget_list -> do
            let jTarget_list' = unsafeManagedPtrGetPtr jTarget_list
            return jTarget_list'
    gtk_drag_dest_set_target_list _obj' maybeTarget_list
    touchManagedPtr _obj
    whenJust target_list touchManagedPtr
    return ()

-- method Widget::drag_dest_set_track_motion
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "track_motion", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "track_motion", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_set_track_motion" gtk_drag_dest_set_track_motion :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- track_motion : TBasicType TBoolean
    IO ()


widgetDragDestSetTrackMotion ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- track_motion
    m ()
widgetDragDestSetTrackMotion _obj track_motion = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let track_motion' = (fromIntegral . fromEnum) track_motion
    gtk_drag_dest_set_track_motion _obj' track_motion'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_dest_unset
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_dest_unset" gtk_drag_dest_unset :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragDestUnset ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragDestUnset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_dest_unset _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_get_data
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "context", argType = TInterface "Gdk" "DragContext", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "time_", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_get_data" gtk_drag_get_data :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.DragContext ->                  -- context : TInterface "Gdk" "DragContext"
    Ptr Gdk.Atom ->                         -- target : TInterface "Gdk" "Atom"
    Word32 ->                               -- time_ : TBasicType TUInt32
    IO ()


widgetDragGetData ::
    (MonadIO m, WidgetK a, Gdk.DragContextK b) =>
    a ->                                    -- _obj
    b ->                                    -- context
    Gdk.Atom ->                             -- target
    Word32 ->                               -- time_
    m ()
widgetDragGetData _obj context target time_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let context' = unsafeManagedPtrCastPtr context
    let target' = unsafeManagedPtrGetPtr target
    gtk_drag_get_data _obj' context' target' time_
    touchManagedPtr _obj
    touchManagedPtr context
    touchManagedPtr target
    return ()

-- method Widget::drag_highlight
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_highlight" gtk_drag_highlight :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragHighlight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragHighlight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_highlight _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_source_add_image_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_add_image_targets" gtk_drag_source_add_image_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragSourceAddImageTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragSourceAddImageTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_source_add_image_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_source_add_text_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_add_text_targets" gtk_drag_source_add_text_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragSourceAddTextTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragSourceAddTextTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_source_add_text_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_source_add_uri_targets
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_add_uri_targets" gtk_drag_source_add_uri_targets :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragSourceAddUriTargets ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragSourceAddUriTargets _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_source_add_uri_targets _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_source_get_target_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "TargetList"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_get_target_list" gtk_drag_source_get_target_list :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr TargetList)


widgetDragSourceGetTargetList ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m TargetList
widgetDragSourceGetTargetList _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_drag_source_get_target_list _obj'
    checkUnexpectedReturnNULL "gtk_drag_source_get_target_list" result
    result' <- (newBoxed TargetList) result
    touchManagedPtr _obj
    return result'

-- method Widget::drag_source_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_button_mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : [Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "start_button_mask", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "targets", argType = TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry"), direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "actions", argType = TInterface "Gdk" "DragAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set" gtk_drag_source_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- start_button_mask : TInterface "Gdk" "ModifierType"
    Ptr TargetEntry ->                      -- targets : TCArray False (-1) 3 (TInterface "Gtk" "TargetEntry")
    Int32 ->                                -- n_targets : TBasicType TInt32
    CUInt ->                                -- actions : TInterface "Gdk" "DragAction"
    IO ()


widgetDragSourceSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [Gdk.ModifierType] ->                   -- start_button_mask
    Maybe ([TargetEntry]) ->                -- targets
    [Gdk.DragAction] ->                     -- actions
    m ()
widgetDragSourceSet _obj start_button_mask targets actions = liftIO $ do
    let n_targets = case targets of
            Nothing -> 0
            Just jTargets -> fromIntegral $ length jTargets
    let _obj' = unsafeManagedPtrCastPtr _obj
    let start_button_mask' = gflagsToWord start_button_mask
    maybeTargets <- case targets of
        Nothing -> return nullPtr
        Just jTargets -> do
            let jTargets' = map unsafeManagedPtrGetPtr jTargets
            jTargets'' <- packBlockArray 16 jTargets'
            return jTargets''
    let actions' = gflagsToWord actions
    gtk_drag_source_set _obj' start_button_mask' maybeTargets n_targets actions'
    touchManagedPtr _obj
    whenJust targets (mapM_ touchManagedPtr)
    freeMem maybeTargets
    return ()

-- method Widget::drag_source_set_icon_gicon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon", argType = TInterface "Gio" "Icon", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set_icon_gicon" gtk_drag_source_set_icon_gicon :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gio.Icon ->                         -- icon : TInterface "Gio" "Icon"
    IO ()


widgetDragSourceSetIconGicon ::
    (MonadIO m, WidgetK a, Gio.IconK b) =>
    a ->                                    -- _obj
    b ->                                    -- icon
    m ()
widgetDragSourceSetIconGicon _obj icon = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let icon' = unsafeManagedPtrCastPtr icon
    gtk_drag_source_set_icon_gicon _obj' icon'
    touchManagedPtr _obj
    touchManagedPtr icon
    return ()

-- method Widget::drag_source_set_icon_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "icon_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set_icon_name" gtk_drag_source_set_icon_name :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- icon_name : TBasicType TUTF8
    IO ()


widgetDragSourceSetIconName ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- icon_name
    m ()
widgetDragSourceSetIconName _obj icon_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    icon_name' <- textToCString icon_name
    gtk_drag_source_set_icon_name _obj' icon_name'
    touchManagedPtr _obj
    freeMem icon_name'
    return ()

-- method Widget::drag_source_set_icon_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "pixbuf", argType = TInterface "GdkPixbuf" "Pixbuf", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set_icon_pixbuf" gtk_drag_source_set_icon_pixbuf :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr GdkPixbuf.Pixbuf ->                 -- pixbuf : TInterface "GdkPixbuf" "Pixbuf"
    IO ()


widgetDragSourceSetIconPixbuf ::
    (MonadIO m, WidgetK a, GdkPixbuf.PixbufK b) =>
    a ->                                    -- _obj
    b ->                                    -- pixbuf
    m ()
widgetDragSourceSetIconPixbuf _obj pixbuf = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let pixbuf' = unsafeManagedPtrCastPtr pixbuf
    gtk_drag_source_set_icon_pixbuf _obj' pixbuf'
    touchManagedPtr _obj
    touchManagedPtr pixbuf
    return ()

-- method Widget::drag_source_set_icon_stock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set_icon_stock" gtk_drag_source_set_icon_stock :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- stock_id : TBasicType TUTF8
    IO ()

{-# DEPRECATED widgetDragSourceSetIconStock ["(Since version 3.10)","Use gtk_drag_source_set_icon_name() instead."]#-}
widgetDragSourceSetIconStock ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- stock_id
    m ()
widgetDragSourceSetIconStock _obj stock_id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id' <- textToCString stock_id
    gtk_drag_source_set_icon_stock _obj' stock_id'
    touchManagedPtr _obj
    freeMem stock_id'
    return ()

-- method Widget::drag_source_set_target_list
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target_list", argType = TInterface "Gtk" "TargetList", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_set_target_list" gtk_drag_source_set_target_list :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr TargetList ->                       -- target_list : TInterface "Gtk" "TargetList"
    IO ()


widgetDragSourceSetTargetList ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (TargetList) ->                   -- target_list
    m ()
widgetDragSourceSetTargetList _obj target_list = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeTarget_list <- case target_list of
        Nothing -> return nullPtr
        Just jTarget_list -> do
            let jTarget_list' = unsafeManagedPtrGetPtr jTarget_list
            return jTarget_list'
    gtk_drag_source_set_target_list _obj' maybeTarget_list
    touchManagedPtr _obj
    whenJust target_list touchManagedPtr
    return ()

-- method Widget::drag_source_unset
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_source_unset" gtk_drag_source_unset :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragSourceUnset ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragSourceUnset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_source_unset _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::drag_unhighlight
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_drag_unhighlight" gtk_drag_unhighlight :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetDragUnhighlight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetDragUnhighlight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_drag_unhighlight _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::draw
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cr", argType = TInterface "cairo" "Context", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_draw" gtk_widget_draw :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.Context ->                    -- cr : TInterface "cairo" "Context"
    IO ()


widgetDraw ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.Context ->                        -- cr
    m ()
widgetDraw _obj cr = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let cr' = unsafeManagedPtrGetPtr cr
    gtk_widget_draw _obj' cr'
    touchManagedPtr _obj
    touchManagedPtr cr
    return ()

-- method Widget::ensure_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_ensure_style" gtk_widget_ensure_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()

{-# DEPRECATED widgetEnsureStyle ["(Since version 3.0)","Use #GtkStyleContext instead"]#-}
widgetEnsureStyle ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetEnsureStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_ensure_style _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::error_bell
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_error_bell" gtk_widget_error_bell :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetErrorBell ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetErrorBell _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_error_bell _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::event
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_event" gtk_widget_event :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
    IO CInt


widgetEvent ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Gdk.Event ->                            -- event
    m Bool
widgetEvent _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gtk_widget_event _obj' event'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr event
    return result'

-- method Widget::freeze_child_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_freeze_child_notify" gtk_widget_freeze_child_notify :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetFreezeChildNotify ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetFreezeChildNotify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_freeze_child_notify _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::get_accessible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_accessible" gtk_widget_get_accessible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Atk.Object)


widgetGetAccessible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Atk.Object
widgetGetAccessible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_accessible _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_accessible" result
    result' <- (newObject Atk.Object) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_action_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "prefix", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "prefix", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gio" "ActionGroup"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_action_group" gtk_widget_get_action_group :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- prefix : TBasicType TUTF8
    IO (Ptr Gio.ActionGroup)


widgetGetActionGroup ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- prefix
    m Gio.ActionGroup
widgetGetActionGroup _obj prefix = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    prefix' <- textToCString prefix
    result <- gtk_widget_get_action_group _obj' prefix'
    checkUnexpectedReturnNULL "gtk_widget_get_action_group" result
    result' <- (newObject Gio.ActionGroup) result
    touchManagedPtr _obj
    freeMem prefix'
    return result'

-- method Widget::get_allocated_baseline
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_allocated_baseline" gtk_widget_get_allocated_baseline :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetAllocatedBaseline ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetAllocatedBaseline _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_allocated_baseline _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_allocated_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_allocated_height" gtk_widget_get_allocated_height :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetAllocatedHeight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetAllocatedHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_allocated_height _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_allocated_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_allocated_width" gtk_widget_get_allocated_width :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetAllocatedWidth ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetAllocatedWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_allocated_width _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_allocation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_allocation" gtk_widget_get_allocation :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- allocation : TInterface "cairo" "RectangleInt"
    IO ()


widgetGetAllocation ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Cairo.RectangleInt)
widgetGetAllocation _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    allocation <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gtk_widget_get_allocation _obj' allocation
    allocation' <- (wrapBoxed Cairo.RectangleInt) allocation
    touchManagedPtr _obj
    return allocation'

-- method Widget::get_ancestor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_ancestor" gtk_widget_get_ancestor :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CGType ->                               -- widget_type : TBasicType TGType
    IO (Ptr Widget)


widgetGetAncestor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    GType ->                                -- widget_type
    m Widget
widgetGetAncestor _obj widget_type = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let widget_type' = gtypeToCGType widget_type
    result <- gtk_widget_get_ancestor _obj' widget_type'
    checkUnexpectedReturnNULL "gtk_widget_get_ancestor" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_app_paintable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_app_paintable" gtk_widget_get_app_paintable :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetAppPaintable ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetAppPaintable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_app_paintable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_can_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_can_default" gtk_widget_get_can_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetCanDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetCanDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_can_default _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_can_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_can_focus" gtk_widget_get_can_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetCanFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetCanFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_can_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_child_requisition
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "requisition", argType = TInterface "Gtk" "Requisition", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_child_requisition" gtk_widget_get_child_requisition :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Requisition ->                      -- requisition : TInterface "Gtk" "Requisition"
    IO ()

{-# DEPRECATED widgetGetChildRequisition ["(Since version 3.0)","Use gtk_widget_get_preferred_size() instead."]#-}
widgetGetChildRequisition ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Requisition)
widgetGetChildRequisition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    requisition <- callocBoxedBytes 8 :: IO (Ptr Requisition)
    gtk_widget_get_child_requisition _obj' requisition
    requisition' <- (wrapBoxed Requisition) requisition
    touchManagedPtr _obj
    return requisition'

-- method Widget::get_child_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_child_visible" gtk_widget_get_child_visible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetChildVisible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetChildVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_child_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_clip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clip", argType = TInterface "cairo" "RectangleInt", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_clip" gtk_widget_get_clip :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- clip : TInterface "cairo" "RectangleInt"
    IO ()


widgetGetClip ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Cairo.RectangleInt)
widgetGetClip _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    clip <- callocBoxedBytes 16 :: IO (Ptr Cairo.RectangleInt)
    gtk_widget_get_clip _obj' clip
    clip' <- (wrapBoxed Cairo.RectangleInt) clip
    touchManagedPtr _obj
    return clip'

-- method Widget::get_clipboard
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "selection", argType = TInterface "Gdk" "Atom", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Clipboard"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_clipboard" gtk_widget_get_clipboard :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Atom ->                         -- selection : TInterface "Gdk" "Atom"
    IO (Ptr Clipboard)


widgetGetClipboard ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Gdk.Atom ->                             -- selection
    m Clipboard
widgetGetClipboard _obj selection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let selection' = unsafeManagedPtrGetPtr selection
    result <- gtk_widget_get_clipboard _obj' selection'
    checkUnexpectedReturnNULL "gtk_widget_get_clipboard" result
    result' <- (newObject Clipboard) result
    touchManagedPtr _obj
    touchManagedPtr selection
    return result'

-- method Widget::get_composite_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_composite_name" gtk_widget_get_composite_name :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CString

{-# DEPRECATED widgetGetCompositeName ["(Since version 3.10)","Use gtk_widget_class_set_template(), or don\8217t use this API at all."]#-}
widgetGetCompositeName ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m T.Text
widgetGetCompositeName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_composite_name _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_composite_name" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Widget::get_device_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_device_enabled" gtk_widget_get_device_enabled :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    IO CInt


widgetGetDeviceEnabled ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m Bool
widgetGetDeviceEnabled _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gtk_widget_get_device_enabled _obj' device'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Widget::get_device_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "EventMask"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_device_events" gtk_widget_get_device_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    IO CUInt


widgetGetDeviceEvents ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    m [Gdk.EventMask]
widgetGetDeviceEvents _obj device = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    result <- gtk_widget_get_device_events _obj' device'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    touchManagedPtr device
    return result'

-- method Widget::get_direction
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "TextDirection"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_direction" gtk_widget_get_direction :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetDirection ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m TextDirection
widgetGetDirection _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_direction _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_display
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Display"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_display" gtk_widget_get_display :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Display)


widgetGetDisplay ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Display
widgetGetDisplay _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_display _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_display" result
    result' <- (newObject Gdk.Display) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_double_buffered
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_double_buffered" gtk_widget_get_double_buffered :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetDoubleBuffered ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetDoubleBuffered _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_double_buffered _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_events" gtk_widget_get_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetEvents ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetEvents _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_events _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_frame_clock
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "FrameClock"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_frame_clock" gtk_widget_get_frame_clock :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.FrameClock)


widgetGetFrameClock ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.FrameClock
widgetGetFrameClock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_frame_clock _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_frame_clock" result
    result' <- (newObject Gdk.FrameClock) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_halign
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Align"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_halign" gtk_widget_get_halign :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetHalign ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Align
widgetGetHalign _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_halign _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_has_tooltip" gtk_widget_get_has_tooltip :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetHasTooltip ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetHasTooltip _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_has_tooltip _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_has_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_has_window" gtk_widget_get_has_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetHasWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetHasWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_has_window _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_hexpand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_hexpand" gtk_widget_get_hexpand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetHexpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetHexpand _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_hexpand _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_hexpand_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_hexpand_set" gtk_widget_get_hexpand_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetHexpandSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetHexpandSet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_hexpand_set _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_mapped
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_mapped" gtk_widget_get_mapped :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetMapped ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetMapped _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_mapped _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_margin_bottom
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_bottom" gtk_widget_get_margin_bottom :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetMarginBottom ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginBottom _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_bottom _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_margin_end
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_end" gtk_widget_get_margin_end :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetMarginEnd ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginEnd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_end _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_margin_left
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_left" gtk_widget_get_margin_left :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32

{-# DEPRECATED widgetGetMarginLeft ["(Since version 3.12)","Use gtk_widget_get_margin_start() instead."]#-}
widgetGetMarginLeft ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginLeft _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_left _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_margin_right
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_right" gtk_widget_get_margin_right :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32

{-# DEPRECATED widgetGetMarginRight ["(Since version 3.12)","Use gtk_widget_get_margin_end() instead."]#-}
widgetGetMarginRight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginRight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_right _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_margin_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_start" gtk_widget_get_margin_start :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetMarginStart ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginStart _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_start _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_margin_top
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_margin_top" gtk_widget_get_margin_top :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetMarginTop ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetMarginTop _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_margin_top _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_modifier_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intent", argType = TInterface "Gdk" "ModifierIntent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intent", argType = TInterface "Gdk" "ModifierIntent", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "ModifierType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_modifier_mask" gtk_widget_get_modifier_mask :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- intent : TInterface "Gdk" "ModifierIntent"
    IO CUInt


widgetGetModifierMask ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Gdk.ModifierIntent ->                   -- intent
    m [Gdk.ModifierType]
widgetGetModifierMask _obj intent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let intent' = (fromIntegral . fromEnum) intent
    result <- gtk_widget_get_modifier_mask _obj' intent'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Widget::get_modifier_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "RcStyle"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_modifier_style" gtk_widget_get_modifier_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr RcStyle)

{-# DEPRECATED widgetGetModifierStyle ["(Since version 3.0)","Use #GtkStyleContext with a custom #GtkStyleProvider instead"]#-}
widgetGetModifierStyle ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m RcStyle
widgetGetModifierStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_modifier_style _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_modifier_style" result
    result' <- (newObject RcStyle) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_name" gtk_widget_get_name :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CString


widgetGetName ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m T.Text
widgetGetName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_name _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method Widget::get_no_show_all
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_no_show_all" gtk_widget_get_no_show_all :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetNoShowAll ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetNoShowAll _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_no_show_all _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_opacity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_opacity" gtk_widget_get_opacity :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CDouble


widgetGetOpacity ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Double
widgetGetOpacity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_opacity _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method Widget::get_pango_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Pango" "Context"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_pango_context" gtk_widget_get_pango_context :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Pango.Context)


widgetGetPangoContext ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Pango.Context
widgetGetPangoContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_pango_context _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_pango_context" result
    result' <- (newObject Pango.Context) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_parent" gtk_widget_get_parent :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Widget)


widgetGetParent ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Widget
widgetGetParent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_parent _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_parent" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_parent_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_parent_window" gtk_widget_get_parent_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Window)


widgetGetParentWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Window
widgetGetParentWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_parent_window _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_parent_window" result
    result' <- (newObject Gdk.Window) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "WidgetPath"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_path" gtk_widget_get_path :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr WidgetPath)


widgetGetPath ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m WidgetPath
widgetGetPath _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_path _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_path" result
    result' <- (newBoxed WidgetPath) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_pointer
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_pointer" gtk_widget_get_pointer :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Int32 ->                            -- x : TBasicType TInt32
    Ptr Int32 ->                            -- y : TBasicType TInt32
    IO ()

{-# DEPRECATED widgetGetPointer ["(Since version 3.4)","Use gdk_window_get_device_position() instead."]#-}
widgetGetPointer ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
widgetGetPointer _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    x <- allocMem :: IO (Ptr Int32)
    y <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_pointer _obj' x y
    x' <- peek x
    y' <- peek y
    touchManagedPtr _obj
    freeMem x
    freeMem y
    return (x', y')

-- method Widget::get_preferred_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_height" gtk_widget_get_preferred_height :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Int32 ->                            -- minimum_height : TBasicType TInt32
    Ptr Int32 ->                            -- natural_height : TBasicType TInt32
    IO ()


widgetGetPreferredHeight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
widgetGetPreferredHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_height <- allocMem :: IO (Ptr Int32)
    natural_height <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_preferred_height _obj' minimum_height natural_height
    minimum_height' <- peek minimum_height
    natural_height' <- peek natural_height
    touchManagedPtr _obj
    freeMem minimum_height
    freeMem natural_height
    return (minimum_height', natural_height')

-- method Widget::get_preferred_height_and_baseline_for_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "minimum_baseline", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_baseline", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_height_and_baseline_for_width" gtk_widget_get_preferred_height_and_baseline_for_width :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- width : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_height : TBasicType TInt32
    Ptr Int32 ->                            -- natural_height : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_baseline : TBasicType TInt32
    Ptr Int32 ->                            -- natural_baseline : TBasicType TInt32
    IO ()


widgetGetPreferredHeightAndBaselineForWidth ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    m (Int32,Int32,Int32,Int32)
widgetGetPreferredHeightAndBaselineForWidth _obj width = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_height <- allocMem :: IO (Ptr Int32)
    natural_height <- allocMem :: IO (Ptr Int32)
    minimum_baseline <- allocMem :: IO (Ptr Int32)
    natural_baseline <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_preferred_height_and_baseline_for_width _obj' width minimum_height natural_height minimum_baseline natural_baseline
    minimum_height' <- peek minimum_height
    natural_height' <- peek natural_height
    minimum_baseline' <- peek minimum_baseline
    natural_baseline' <- peek natural_baseline
    touchManagedPtr _obj
    freeMem minimum_height
    freeMem natural_height
    freeMem minimum_baseline
    freeMem natural_baseline
    return (minimum_height', natural_height', minimum_baseline', natural_baseline')

-- method Widget::get_preferred_height_for_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_height_for_width" gtk_widget_get_preferred_height_for_width :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- width : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_height : TBasicType TInt32
    Ptr Int32 ->                            -- natural_height : TBasicType TInt32
    IO ()


widgetGetPreferredHeightForWidth ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    m (Int32,Int32)
widgetGetPreferredHeightForWidth _obj width = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_height <- allocMem :: IO (Ptr Int32)
    natural_height <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_preferred_height_for_width _obj' width minimum_height natural_height
    minimum_height' <- peek minimum_height
    natural_height' <- peek natural_height
    touchManagedPtr _obj
    freeMem minimum_height
    freeMem natural_height
    return (minimum_height', natural_height')

-- method Widget::get_preferred_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_size", argType = TInterface "Gtk" "Requisition", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "natural_size", argType = TInterface "Gtk" "Requisition", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_size" gtk_widget_get_preferred_size :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Requisition ->                      -- minimum_size : TInterface "Gtk" "Requisition"
    Ptr Requisition ->                      -- natural_size : TInterface "Gtk" "Requisition"
    IO ()


widgetGetPreferredSize ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Requisition,Requisition)
widgetGetPreferredSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_size <- callocBoxedBytes 8 :: IO (Ptr Requisition)
    natural_size <- callocBoxedBytes 8 :: IO (Ptr Requisition)
    gtk_widget_get_preferred_size _obj' minimum_size natural_size
    minimum_size' <- (wrapBoxed Requisition) minimum_size
    natural_size' <- (wrapBoxed Requisition) natural_size
    touchManagedPtr _obj
    return (minimum_size', natural_size')

-- method Widget::get_preferred_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_width" gtk_widget_get_preferred_width :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Int32 ->                            -- minimum_width : TBasicType TInt32
    Ptr Int32 ->                            -- natural_width : TBasicType TInt32
    IO ()


widgetGetPreferredWidth ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
widgetGetPreferredWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_width <- allocMem :: IO (Ptr Int32)
    natural_width <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_preferred_width _obj' minimum_width natural_width
    minimum_width' <- peek minimum_width
    natural_width' <- peek natural_width
    touchManagedPtr _obj
    freeMem minimum_width
    freeMem natural_width
    return (minimum_width', natural_width')

-- method Widget::get_preferred_width_for_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "minimum_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "natural_width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_preferred_width_for_height" gtk_widget_get_preferred_width_for_height :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- height : TBasicType TInt32
    Ptr Int32 ->                            -- minimum_width : TBasicType TInt32
    Ptr Int32 ->                            -- natural_width : TBasicType TInt32
    IO ()


widgetGetPreferredWidthForHeight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- height
    m (Int32,Int32)
widgetGetPreferredWidthForHeight _obj height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    minimum_width <- allocMem :: IO (Ptr Int32)
    natural_width <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_preferred_width_for_height _obj' height minimum_width natural_width
    minimum_width' <- peek minimum_width
    natural_width' <- peek natural_width
    touchManagedPtr _obj
    freeMem minimum_width
    freeMem natural_width
    return (minimum_width', natural_width')

-- method Widget::get_realized
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_realized" gtk_widget_get_realized :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetRealized ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetRealized _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_realized _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_receives_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_receives_default" gtk_widget_get_receives_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetReceivesDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetReceivesDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_receives_default _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_request_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "SizeRequestMode"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_request_mode" gtk_widget_get_request_mode :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetRequestMode ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m SizeRequestMode
widgetGetRequestMode _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_request_mode _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_requisition
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "requisition", argType = TInterface "Gtk" "Requisition", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_requisition" gtk_widget_get_requisition :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Requisition ->                      -- requisition : TInterface "Gtk" "Requisition"
    IO ()

{-# DEPRECATED widgetGetRequisition ["(Since version 3.0)","The #GtkRequisition cache on the widget was","removed, If you need to cache sizes across requests and allocations,","add an explicit cache to the widget in question instead."]#-}
widgetGetRequisition ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Requisition)
widgetGetRequisition _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    requisition <- callocBoxedBytes 8 :: IO (Ptr Requisition)
    gtk_widget_get_requisition _obj' requisition
    requisition' <- (wrapBoxed Requisition) requisition
    touchManagedPtr _obj
    return requisition'

-- method Widget::get_root_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_root_window" gtk_widget_get_root_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Window)

{-# DEPRECATED widgetGetRootWindow ["(Since version 3.12)","Use gdk_screen_get_root_window() instead"]#-}
widgetGetRootWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Window
widgetGetRootWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_root_window _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_root_window" result
    result' <- (newObject Gdk.Window) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_scale_factor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_scale_factor" gtk_widget_get_scale_factor :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO Int32


widgetGetScaleFactor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Int32
widgetGetScaleFactor _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_scale_factor _obj'
    touchManagedPtr _obj
    return result

-- method Widget::get_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Screen"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_screen" gtk_widget_get_screen :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Screen)


widgetGetScreen ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Screen
widgetGetScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_screen _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_screen" result
    result' <- (newObject Gdk.Screen) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_sensitive
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_sensitive" gtk_widget_get_sensitive :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetSensitive ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetSensitive _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_sensitive _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_settings
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Settings"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_settings" gtk_widget_get_settings :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Settings)


widgetGetSettings ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Settings
widgetGetSettings _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_settings _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_settings" result
    result' <- (newObject Settings) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_size_request
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_size_request" gtk_widget_get_size_request :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Int32 ->                            -- width : TBasicType TInt32
    Ptr Int32 ->                            -- height : TBasicType TInt32
    IO ()


widgetGetSizeRequest ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
widgetGetSizeRequest _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    width <- allocMem :: IO (Ptr Int32)
    height <- allocMem :: IO (Ptr Int32)
    gtk_widget_get_size_request _obj' width height
    width' <- peek width
    height' <- peek height
    touchManagedPtr _obj
    freeMem width
    freeMem height
    return (width', height')

-- method Widget::get_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StateType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_state" gtk_widget_get_state :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt

{-# DEPRECATED widgetGetState ["(Since version 3.0)","Use gtk_widget_get_state_flags() instead."]#-}
widgetGetState ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m StateType
widgetGetState _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_state _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_state_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StateFlags"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_state_flags" gtk_widget_get_state_flags :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetStateFlags ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m [StateFlags]
widgetGetStateFlags _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_state_flags _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

-- method Widget::get_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Style"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_style" gtk_widget_get_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Style)

{-# DEPRECATED widgetGetStyle ["(Since version 3.0)","Use #GtkStyleContext instead"]#-}
widgetGetStyle ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Style
widgetGetStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_style _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_style" result
    result' <- (newObject Style) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_style_context
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "StyleContext"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_style_context" gtk_widget_get_style_context :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr StyleContext)


widgetGetStyleContext ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m StyleContext
widgetGetStyleContext _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_style_context _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_style_context" result
    result' <- (newObject StyleContext) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_support_multidevice
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_support_multidevice" gtk_widget_get_support_multidevice :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetSupportMultidevice ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetSupportMultidevice _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_support_multidevice _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_template_child
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "widget_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GObject" "Object"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_template_child" gtk_widget_get_template_child :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CGType ->                               -- widget_type : TBasicType TGType
    CString ->                              -- name : TBasicType TUTF8
    IO (Ptr GObject.Object)


widgetGetTemplateChild ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    GType ->                                -- widget_type
    T.Text ->                               -- name
    m GObject.Object
widgetGetTemplateChild _obj widget_type name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let widget_type' = gtypeToCGType widget_type
    name' <- textToCString name
    result <- gtk_widget_get_template_child _obj' widget_type' name'
    checkUnexpectedReturnNULL "gtk_widget_get_template_child" result
    result' <- (newObject GObject.Object) result
    touchManagedPtr _obj
    freeMem name'
    return result'

-- method Widget::get_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_tooltip_markup" gtk_widget_get_tooltip_markup :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CString


widgetGetTooltipMarkup ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m T.Text
widgetGetTooltipMarkup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_tooltip_markup _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_tooltip_markup" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Widget::get_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_tooltip_text" gtk_widget_get_tooltip_text :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CString


widgetGetTooltipText ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m T.Text
widgetGetTooltipText _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_tooltip_text _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_tooltip_text" result
    result' <- cstringToText result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Widget::get_tooltip_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_tooltip_window" gtk_widget_get_tooltip_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Window)


widgetGetTooltipWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Window
widgetGetTooltipWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_tooltip_window _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_tooltip_window" result
    result' <- (newObject Window) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_toplevel
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Widget"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_toplevel" gtk_widget_get_toplevel :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Widget)


widgetGetToplevel ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Widget
widgetGetToplevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_toplevel _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_toplevel" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_valign
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Align"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_valign" gtk_widget_get_valign :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetValign ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Align
widgetGetValign _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_valign _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_valign_with_baseline
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Align"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_valign_with_baseline" gtk_widget_get_valign_with_baseline :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CUInt


widgetGetValignWithBaseline ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Align
widgetGetValignWithBaseline _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_valign_with_baseline _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_vexpand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_vexpand" gtk_widget_get_vexpand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetVexpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetVexpand _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_vexpand _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_vexpand_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_vexpand_set" gtk_widget_get_vexpand_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetVexpandSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetVexpandSet _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_vexpand_set _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_visible" gtk_widget_get_visible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetGetVisible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetGetVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_visual
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Visual"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_visual" gtk_widget_get_visual :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Visual)


widgetGetVisual ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Visual
widgetGetVisual _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_visual _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_visual" result
    result' <- (newObject Gdk.Visual) result
    touchManagedPtr _obj
    return result'

-- method Widget::get_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gdk" "Window"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_window" gtk_widget_get_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr Gdk.Window)


widgetGetWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Gdk.Window
widgetGetWindow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_get_window _obj'
    checkUnexpectedReturnNULL "gtk_widget_get_window" result
    result' <- (newObject Gdk.Window) result
    touchManagedPtr _obj
    return result'

-- method Widget::grab_add
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_grab_add" gtk_grab_add :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetGrabAdd ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetGrabAdd _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_grab_add _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::grab_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_grab_default" gtk_widget_grab_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetGrabDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetGrabDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_grab_default _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::grab_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_grab_focus" gtk_widget_grab_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetGrabFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetGrabFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_grab_focus _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::grab_remove
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_grab_remove" gtk_grab_remove :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetGrabRemove ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetGrabRemove _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_grab_remove _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::has_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_default" gtk_widget_has_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHasDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasDefault _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_default _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::has_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_focus" gtk_widget_has_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHasFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::has_grab
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_grab" gtk_widget_has_grab :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHasGrab ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasGrab _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_grab _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::has_rc_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_rc_style" gtk_widget_has_rc_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt

{-# DEPRECATED widgetHasRcStyle ["(Since version 3.0)","Use #GtkStyleContext instead"]#-}
widgetHasRcStyle ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasRcStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_rc_style _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::has_screen
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_screen" gtk_widget_has_screen :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHasScreen ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasScreen _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_screen _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::has_visible_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_has_visible_focus" gtk_widget_has_visible_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHasVisibleFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHasVisibleFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_has_visible_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::hide
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_hide" gtk_widget_hide :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetHide ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetHide _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_hide _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::hide_on_delete
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_hide_on_delete" gtk_widget_hide_on_delete :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetHideOnDelete ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetHideOnDelete _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_hide_on_delete _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::in_destruction
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_in_destruction" gtk_widget_in_destruction :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetInDestruction ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetInDestruction _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_in_destruction _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::init_template
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_init_template" gtk_widget_init_template :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetInitTemplate ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetInitTemplate _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_init_template _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::input_shape_combine_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_input_shape_combine_region" gtk_widget_input_shape_combine_region :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


widgetInputShapeCombineRegion ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.Region) ->                 -- region
    m ()
widgetInputShapeCombineRegion _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeRegion <- case region of
        Nothing -> return nullPtr
        Just jRegion -> do
            let jRegion' = unsafeManagedPtrGetPtr jRegion
            return jRegion'
    gtk_widget_input_shape_combine_region _obj' maybeRegion
    touchManagedPtr _obj
    whenJust region touchManagedPtr
    return ()

-- method Widget::insert_action_group
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group", argType = TInterface "Gio" "ActionGroup", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group", argType = TInterface "Gio" "ActionGroup", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_insert_action_group" gtk_widget_insert_action_group :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- name : TBasicType TUTF8
    Ptr Gio.ActionGroup ->                  -- group : TInterface "Gio" "ActionGroup"
    IO ()


widgetInsertActionGroup ::
    (MonadIO m, WidgetK a, Gio.ActionGroupK b) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    Maybe (b) ->                            -- group
    m ()
widgetInsertActionGroup _obj name group = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    maybeGroup <- case group of
        Nothing -> return nullPtr
        Just jGroup -> do
            let jGroup' = unsafeManagedPtrCastPtr jGroup
            return jGroup'
    gtk_widget_insert_action_group _obj' name' maybeGroup
    touchManagedPtr _obj
    whenJust group touchManagedPtr
    freeMem name'
    return ()

-- method Widget::intersect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "area", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intersection", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "area", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "intersection", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_intersect" gtk_widget_intersect :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- area : TInterface "cairo" "RectangleInt"
    Ptr Cairo.RectangleInt ->               -- intersection : TInterface "cairo" "RectangleInt"
    IO CInt


widgetIntersect ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- area
    Maybe (Cairo.RectangleInt) ->           -- intersection
    m Bool
widgetIntersect _obj area intersection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let area' = unsafeManagedPtrGetPtr area
    maybeIntersection <- case intersection of
        Nothing -> return nullPtr
        Just jIntersection -> do
            let jIntersection' = unsafeManagedPtrGetPtr jIntersection
            return jIntersection'
    result <- gtk_widget_intersect _obj' area' maybeIntersection
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr area
    whenJust intersection touchManagedPtr
    return result'

-- method Widget::is_ancestor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ancestor", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "ancestor", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_ancestor" gtk_widget_is_ancestor :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- ancestor : TInterface "Gtk" "Widget"
    IO CInt


widgetIsAncestor ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- ancestor
    m Bool
widgetIsAncestor _obj ancestor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let ancestor' = unsafeManagedPtrCastPtr ancestor
    result <- gtk_widget_is_ancestor _obj' ancestor'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr ancestor
    return result'

-- method Widget::is_composited
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_composited" gtk_widget_is_composited :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsComposited ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsComposited _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_composited _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::is_drawable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_drawable" gtk_widget_is_drawable :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsDrawable ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsDrawable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_drawable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::is_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_focus" gtk_widget_is_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsFocus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_focus _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::is_sensitive
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_sensitive" gtk_widget_is_sensitive :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsSensitive ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsSensitive _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_sensitive _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::is_toplevel
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_toplevel" gtk_widget_is_toplevel :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsToplevel ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsToplevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_toplevel _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::is_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_is_visible" gtk_widget_is_visible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO CInt


widgetIsVisible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m Bool
widgetIsVisible _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_is_visible _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::keynav_failed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Gtk" "DirectionType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "direction", argType = TInterface "Gtk" "DirectionType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_keynav_failed" gtk_widget_keynav_failed :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- direction : TInterface "Gtk" "DirectionType"
    IO CInt


widgetKeynavFailed ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    DirectionType ->                        -- direction
    m Bool
widgetKeynavFailed _obj direction = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let direction' = (fromIntegral . fromEnum) direction
    result <- gtk_widget_keynav_failed _obj' direction'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::list_accel_closures
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "GObject" "Closure")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_list_accel_closures" gtk_widget_list_accel_closures :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr (GList (Ptr Closure)))


widgetListAccelClosures ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m [Closure]
widgetListAccelClosures _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_list_accel_closures _obj'
    checkUnexpectedReturnNULL "gtk_widget_list_accel_closures" result
    result' <- unpackGList result
    result'' <- mapM (newBoxed Closure) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Widget::list_action_prefixes
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TCArray True (-1) (-1) (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_list_action_prefixes" gtk_widget_list_action_prefixes :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr CString)


widgetListActionPrefixes ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m [T.Text]
widgetListActionPrefixes _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_list_action_prefixes _obj'
    checkUnexpectedReturnNULL "gtk_widget_list_action_prefixes" result
    result' <- unpackZeroTerminatedUTF8CArray result
    freeMem result
    touchManagedPtr _obj
    return result'

-- method Widget::list_mnemonic_labels
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TGList (TInterface "Gtk" "Widget")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_list_mnemonic_labels" gtk_widget_list_mnemonic_labels :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO (Ptr (GList (Ptr Widget)))


widgetListMnemonicLabels ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m [Widget]
widgetListMnemonicLabels _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_widget_list_mnemonic_labels _obj'
    checkUnexpectedReturnNULL "gtk_widget_list_mnemonic_labels" result
    result' <- unpackGList result
    result'' <- mapM (newObject Widget) result'
    g_list_free result
    touchManagedPtr _obj
    return result''

-- method Widget::map
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_map" gtk_widget_map :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetMap ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetMap _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_map _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::mnemonic_activate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group_cycling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "group_cycling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_mnemonic_activate" gtk_widget_mnemonic_activate :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- group_cycling : TBasicType TBoolean
    IO CInt


widgetMnemonicActivate ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- group_cycling
    m Bool
widgetMnemonicActivate _obj group_cycling = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let group_cycling' = (fromIntegral . fromEnum) group_cycling
    result <- gtk_widget_mnemonic_activate _obj' group_cycling'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Widget::modify_base
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_base" gtk_widget_modify_base :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateType"
    Ptr Gdk.Color ->                        -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED widgetModifyBase ["(Since version 3.0)","Use gtk_widget_override_background_color() instead"]#-}
widgetModifyBase ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    StateType ->                            -- state
    Maybe (Gdk.Color) ->                    -- color
    m ()
widgetModifyBase _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = (fromIntegral . fromEnum) state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_modify_base _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::modify_bg
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_bg" gtk_widget_modify_bg :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateType"
    Ptr Gdk.Color ->                        -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED widgetModifyBg ["(Since version 3.0)","Use gtk_widget_override_background_color() instead"]#-}
widgetModifyBg ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    StateType ->                            -- state
    Maybe (Gdk.Color) ->                    -- color
    m ()
widgetModifyBg _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = (fromIntegral . fromEnum) state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_modify_bg _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::modify_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "primary", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "secondary", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "primary", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "secondary", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_cursor" gtk_widget_modify_cursor :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Color ->                        -- primary : TInterface "Gdk" "Color"
    Ptr Gdk.Color ->                        -- secondary : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED widgetModifyCursor ["(Since version 3.0)","Use gtk_widget_override_cursor() instead."]#-}
widgetModifyCursor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Gdk.Color) ->                    -- primary
    Maybe (Gdk.Color) ->                    -- secondary
    m ()
widgetModifyCursor _obj primary secondary = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePrimary <- case primary of
        Nothing -> return nullPtr
        Just jPrimary -> do
            let jPrimary' = unsafeManagedPtrGetPtr jPrimary
            return jPrimary'
    maybeSecondary <- case secondary of
        Nothing -> return nullPtr
        Just jSecondary -> do
            let jSecondary' = unsafeManagedPtrGetPtr jSecondary
            return jSecondary'
    gtk_widget_modify_cursor _obj' maybePrimary maybeSecondary
    touchManagedPtr _obj
    whenJust primary touchManagedPtr
    whenJust secondary touchManagedPtr
    return ()

-- method Widget::modify_fg
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_fg" gtk_widget_modify_fg :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateType"
    Ptr Gdk.Color ->                        -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED widgetModifyFg ["(Since version 3.0)","Use gtk_widget_override_color() instead"]#-}
widgetModifyFg ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    StateType ->                            -- state
    Maybe (Gdk.Color) ->                    -- color
    m ()
widgetModifyFg _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = (fromIntegral . fromEnum) state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_modify_fg _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::modify_font
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_font" gtk_widget_modify_font :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Pango.FontDescription ->            -- font_desc : TInterface "Pango" "FontDescription"
    IO ()

{-# DEPRECATED widgetModifyFont ["(Since version 3.0)","Use gtk_widget_override_font() instead"]#-}
widgetModifyFont ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Pango.FontDescription) ->        -- font_desc
    m ()
widgetModifyFont _obj font_desc = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeFont_desc <- case font_desc of
        Nothing -> return nullPtr
        Just jFont_desc -> do
            let jFont_desc' = unsafeManagedPtrGetPtr jFont_desc
            return jFont_desc'
    gtk_widget_modify_font _obj' maybeFont_desc
    touchManagedPtr _obj
    whenJust font_desc touchManagedPtr
    return ()

-- method Widget::modify_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Gtk" "RcStyle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Gtk" "RcStyle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_style" gtk_widget_modify_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr RcStyle ->                          -- style : TInterface "Gtk" "RcStyle"
    IO ()

{-# DEPRECATED widgetModifyStyle ["(Since version 3.0)","Use #GtkStyleContext with a custom #GtkStyleProvider instead"]#-}
widgetModifyStyle ::
    (MonadIO m, WidgetK a, RcStyleK b) =>
    a ->                                    -- _obj
    b ->                                    -- style
    m ()
widgetModifyStyle _obj style = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let style' = unsafeManagedPtrCastPtr style
    gtk_widget_modify_style _obj' style'
    touchManagedPtr _obj
    touchManagedPtr style
    return ()

-- method Widget::modify_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "Color", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_modify_text" gtk_widget_modify_text :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateType"
    Ptr Gdk.Color ->                        -- color : TInterface "Gdk" "Color"
    IO ()

{-# DEPRECATED widgetModifyText ["(Since version 3.0)","Use gtk_widget_override_color() instead"]#-}
widgetModifyText ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    StateType ->                            -- state
    Maybe (Gdk.Color) ->                    -- color
    m ()
widgetModifyText _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = (fromIntegral . fromEnum) state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_modify_text _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::override_background_color
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_override_background_color" gtk_widget_override_background_color :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateFlags"
    Ptr Gdk.RGBA ->                         -- color : TInterface "Gdk" "RGBA"
    IO ()

{-# DEPRECATED widgetOverrideBackgroundColor ["(Since version 3.16)","This function is not useful in the context of CSS-based","  rendering. If you wish to change the way a widget renders its background","  you should use a custom CSS style, through an application-specific","  #GtkStyleProvider and a CSS style class. You can also override the default","  drawing of a widget through the #GtkWidget::draw signal, and use Cairo to","  draw a specific color, regardless of the CSS style."]#-}
widgetOverrideBackgroundColor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [StateFlags] ->                         -- state
    Maybe (Gdk.RGBA) ->                     -- color
    m ()
widgetOverrideBackgroundColor _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = gflagsToWord state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_override_background_color _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::override_color
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_override_color" gtk_widget_override_color :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateFlags"
    Ptr Gdk.RGBA ->                         -- color : TInterface "Gdk" "RGBA"
    IO ()

{-# DEPRECATED widgetOverrideColor ["(Since version 3.16)","Use a custom style provider and style classes instead"]#-}
widgetOverrideColor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [StateFlags] ->                         -- state
    Maybe (Gdk.RGBA) ->                     -- color
    m ()
widgetOverrideColor _obj state color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = gflagsToWord state
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_override_color _obj' state' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    return ()

-- method Widget::override_cursor
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "secondary_cursor", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "cursor", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "secondary_cursor", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_override_cursor" gtk_widget_override_cursor :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.RGBA ->                         -- cursor : TInterface "Gdk" "RGBA"
    Ptr Gdk.RGBA ->                         -- secondary_cursor : TInterface "Gdk" "RGBA"
    IO ()

{-# DEPRECATED widgetOverrideCursor ["(Since version 3.16)","This function is not useful in the context of CSS-based","  rendering. If you wish to change the color used to render the primary","  and seconday cursors you should use a custom CSS style, through an","  application-specific #GtkStyleProvider and a CSS style class."]#-}
widgetOverrideCursor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Gdk.RGBA) ->                     -- cursor
    Maybe (Gdk.RGBA) ->                     -- secondary_cursor
    m ()
widgetOverrideCursor _obj cursor secondary_cursor = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeCursor <- case cursor of
        Nothing -> return nullPtr
        Just jCursor -> do
            let jCursor' = unsafeManagedPtrGetPtr jCursor
            return jCursor'
    maybeSecondary_cursor <- case secondary_cursor of
        Nothing -> return nullPtr
        Just jSecondary_cursor -> do
            let jSecondary_cursor' = unsafeManagedPtrGetPtr jSecondary_cursor
            return jSecondary_cursor'
    gtk_widget_override_cursor _obj' maybeCursor maybeSecondary_cursor
    touchManagedPtr _obj
    whenJust cursor touchManagedPtr
    whenJust secondary_cursor touchManagedPtr
    return ()

-- method Widget::override_font
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "font_desc", argType = TInterface "Pango" "FontDescription", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_override_font" gtk_widget_override_font :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Pango.FontDescription ->            -- font_desc : TInterface "Pango" "FontDescription"
    IO ()

{-# DEPRECATED widgetOverrideFont ["(Since version 3.16)","This function is not useful in the context of CSS-based","  rendering. If you wish to change the font a widget uses to render its text","  you should use a custom CSS style, through an application-specific","  #GtkStyleProvider and a CSS style class."]#-}
widgetOverrideFont ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Pango.FontDescription) ->        -- font_desc
    m ()
widgetOverrideFont _obj font_desc = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeFont_desc <- case font_desc of
        Nothing -> return nullPtr
        Just jFont_desc -> do
            let jFont_desc' = unsafeManagedPtrGetPtr jFont_desc
            return jFont_desc'
    gtk_widget_override_font _obj' maybeFont_desc
    touchManagedPtr _obj
    whenJust font_desc touchManagedPtr
    return ()

-- method Widget::override_symbolic_color
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "color", argType = TInterface "Gdk" "RGBA", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_override_symbolic_color" gtk_widget_override_symbolic_color :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- name : TBasicType TUTF8
    Ptr Gdk.RGBA ->                         -- color : TInterface "Gdk" "RGBA"
    IO ()

{-# DEPRECATED widgetOverrideSymbolicColor ["(Since version 3.16)","This function is not useful in the context of CSS-based","  rendering. If you wish to change the color used to render symbolic icons","  you should use a custom CSS style, through an application-specific","  #GtkStyleProvider and a CSS style class."]#-}
widgetOverrideSymbolicColor ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    Maybe (Gdk.RGBA) ->                     -- color
    m ()
widgetOverrideSymbolicColor _obj name color = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            let jColor' = unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_widget_override_symbolic_color _obj' name' maybeColor
    touchManagedPtr _obj
    whenJust color touchManagedPtr
    freeMem name'
    return ()

-- method Widget::path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "path_length", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "path", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "path_reversed", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_path" gtk_widget_path :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Word32 ->                           -- path_length : TBasicType TUInt32
    Ptr CString ->                          -- path : TBasicType TUTF8
    Ptr CString ->                          -- path_reversed : TBasicType TUTF8
    IO ()

{-# DEPRECATED widgetPath ["(Since version 3.0)","Use gtk_widget_get_path() instead"]#-}
widgetPath ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Word32,T.Text,T.Text)
widgetPath _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    path_length <- allocMem :: IO (Ptr Word32)
    path <- allocMem :: IO (Ptr CString)
    path_reversed <- allocMem :: IO (Ptr CString)
    gtk_widget_path _obj' path_length path path_reversed
    path_length' <- peek path_length
    path' <- peek path
    path'' <- cstringToText path'
    freeMem path'
    path_reversed' <- peek path_reversed
    path_reversed'' <- cstringToText path_reversed'
    freeMem path_reversed'
    touchManagedPtr _obj
    freeMem path_length
    freeMem path
    freeMem path_reversed
    return (path_length', path'', path_reversed'')

-- method Widget::queue_compute_expand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_compute_expand" gtk_widget_queue_compute_expand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetQueueComputeExpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetQueueComputeExpand _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_queue_compute_expand _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::queue_draw
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_draw" gtk_widget_queue_draw :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetQueueDraw ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetQueueDraw _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_queue_draw _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::queue_draw_area
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_draw_area" gtk_widget_queue_draw_area :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- x : TBasicType TInt32
    Int32 ->                                -- y : TBasicType TInt32
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


widgetQueueDrawArea ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- x
    Int32 ->                                -- y
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
widgetQueueDrawArea _obj x y width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_queue_draw_area _obj' x y width height
    touchManagedPtr _obj
    return ()

-- method Widget::queue_draw_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_draw_region" gtk_widget_queue_draw_region :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


widgetQueueDrawRegion ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    m ()
widgetQueueDrawRegion _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    gtk_widget_queue_draw_region _obj' region'
    touchManagedPtr _obj
    touchManagedPtr region
    return ()

-- method Widget::queue_resize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_resize" gtk_widget_queue_resize :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetQueueResize ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetQueueResize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_queue_resize _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::queue_resize_no_redraw
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_queue_resize_no_redraw" gtk_widget_queue_resize_no_redraw :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetQueueResizeNoRedraw ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetQueueResizeNoRedraw _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_queue_resize_no_redraw _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::realize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_realize" gtk_widget_realize :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetRealize ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetRealize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_realize _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::region_intersect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "cairo" "Region"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_region_intersect" gtk_widget_region_intersect :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO (Ptr Cairo.Region)

{-# DEPRECATED widgetRegionIntersect ["(Since version 3.14)","Use gtk_widget_get_allocation() and","    cairo_region_intersect_rectangle() to get the same behavior."]#-}
widgetRegionIntersect ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.Region ->                         -- region
    m Cairo.Region
widgetRegionIntersect _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let region' = unsafeManagedPtrGetPtr region
    result <- gtk_widget_region_intersect _obj' region'
    checkUnexpectedReturnNULL "gtk_widget_region_intersect" result
    result' <- (wrapBoxed Cairo.Region) result
    touchManagedPtr _obj
    touchManagedPtr region
    return result'

-- method Widget::register_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_register_window" gtk_widget_register_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Window ->                       -- window : TInterface "Gdk" "Window"
    IO ()


widgetRegisterWindow ::
    (MonadIO m, WidgetK a, Gdk.WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- window
    m ()
widgetRegisterWindow _obj window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let window' = unsafeManagedPtrCastPtr window
    gtk_widget_register_window _obj' window'
    touchManagedPtr _obj
    touchManagedPtr window
    return ()

-- method Widget::remove_accelerator
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_remove_accelerator" gtk_widget_remove_accelerator :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr AccelGroup ->                       -- accel_group : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    IO CInt


widgetRemoveAccelerator ::
    (MonadIO m, WidgetK a, AccelGroupK b) =>
    a ->                                    -- _obj
    b ->                                    -- accel_group
    Word32 ->                               -- accel_key
    [Gdk.ModifierType] ->                   -- accel_mods
    m Bool
widgetRemoveAccelerator _obj accel_group accel_key accel_mods = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accel_group' = unsafeManagedPtrCastPtr accel_group
    let accel_mods' = gflagsToWord accel_mods
    result <- gtk_widget_remove_accelerator _obj' accel_group' accel_key accel_mods'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr accel_group
    return result'

-- method Widget::remove_mnemonic_label
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "label", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_remove_mnemonic_label" gtk_widget_remove_mnemonic_label :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- label : TInterface "Gtk" "Widget"
    IO ()


widgetRemoveMnemonicLabel ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- label
    m ()
widgetRemoveMnemonicLabel _obj label = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let label' = unsafeManagedPtrCastPtr label
    gtk_widget_remove_mnemonic_label _obj' label'
    touchManagedPtr _obj
    touchManagedPtr label
    return ()

-- method Widget::remove_tick_callback
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_remove_tick_callback" gtk_widget_remove_tick_callback :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Word32 ->                               -- id : TBasicType TUInt32
    IO ()


widgetRemoveTickCallback ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Word32 ->                               -- id
    m ()
widgetRemoveTickCallback _obj id = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_remove_tick_callback _obj' id
    touchManagedPtr _obj
    return ()

-- method Widget::render_icon
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "detail", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "detail", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_render_icon" gtk_widget_render_icon :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- stock_id : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    CString ->                              -- detail : TBasicType TUTF8
    IO (Ptr GdkPixbuf.Pixbuf)

{-# DEPRECATED widgetRenderIcon ["(Since version 3.0)","Use gtk_widget_render_icon_pixbuf() instead."]#-}
widgetRenderIcon ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- stock_id
    Int32 ->                                -- size
    Maybe (T.Text) ->                       -- detail
    m GdkPixbuf.Pixbuf
widgetRenderIcon _obj stock_id size detail = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id' <- textToCString stock_id
    maybeDetail <- case detail of
        Nothing -> return nullPtr
        Just jDetail -> do
            jDetail' <- textToCString jDetail
            return jDetail'
    result <- gtk_widget_render_icon _obj' stock_id' size maybeDetail
    checkUnexpectedReturnNULL "gtk_widget_render_icon" result
    result' <- (wrapObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    freeMem stock_id'
    freeMem maybeDetail
    return result'

-- method Widget::render_icon_pixbuf
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stock_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "GdkPixbuf" "Pixbuf"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_render_icon_pixbuf" gtk_widget_render_icon_pixbuf :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- stock_id : TBasicType TUTF8
    Int32 ->                                -- size : TBasicType TInt32
    IO (Ptr GdkPixbuf.Pixbuf)

{-# DEPRECATED widgetRenderIconPixbuf ["(Since version 3.10)","Use gtk_icon_theme_load_icon() instead."]#-}
widgetRenderIconPixbuf ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- stock_id
    Int32 ->                                -- size
    m GdkPixbuf.Pixbuf
widgetRenderIconPixbuf _obj stock_id size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    stock_id' <- textToCString stock_id
    result <- gtk_widget_render_icon_pixbuf _obj' stock_id' size
    checkUnexpectedReturnNULL "gtk_widget_render_icon_pixbuf" result
    result' <- (wrapObject GdkPixbuf.Pixbuf) result
    touchManagedPtr _obj
    freeMem stock_id'
    return result'

-- method Widget::reparent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_parent", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "new_parent", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_reparent" gtk_widget_reparent :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- new_parent : TInterface "Gtk" "Widget"
    IO ()

{-# DEPRECATED widgetReparent ["(Since version 3.14)","Use gtk_container_remove() and gtk_container_add()."]#-}
widgetReparent ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- new_parent
    m ()
widgetReparent _obj new_parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let new_parent' = unsafeManagedPtrCastPtr new_parent
    gtk_widget_reparent _obj' new_parent'
    touchManagedPtr _obj
    touchManagedPtr new_parent
    return ()

-- method Widget::reset_rc_styles
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_reset_rc_styles" gtk_widget_reset_rc_styles :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()

{-# DEPRECATED widgetResetRcStyles ["(Since version 3.0)","Use #GtkStyleContext instead, and gtk_widget_reset_style()"]#-}
widgetResetRcStyles ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetResetRcStyles _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_reset_rc_styles _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::reset_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_reset_style" gtk_widget_reset_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetResetStyle ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetResetStyle _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_reset_style _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::send_expose
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_send_expose" gtk_widget_send_expose :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
    IO Int32


widgetSendExpose ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Gdk.Event ->                            -- event
    m Int32
widgetSendExpose _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gtk_widget_send_expose _obj' event'
    touchManagedPtr _obj
    touchManagedPtr event
    return result

-- method Widget::send_focus_change
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "event", argType = TInterface "Gdk" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_send_focus_change" gtk_widget_send_focus_change :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Event ->                        -- event : TInterface "Gdk" "Event"
    IO CInt


widgetSendFocusChange ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Gdk.Event ->                            -- event
    m Bool
widgetSendFocusChange _obj event = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let event' = unsafeManagedPtrGetPtr event
    result <- gtk_widget_send_focus_change _obj' event'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr event
    return result'

-- method Widget::set_accel_path
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "accel_group", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_accel_path" gtk_widget_set_accel_path :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- accel_path : TBasicType TUTF8
    Ptr AccelGroup ->                       -- accel_group : TInterface "Gtk" "AccelGroup"
    IO ()


widgetSetAccelPath ::
    (MonadIO m, WidgetK a, AccelGroupK b) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- accel_path
    Maybe (b) ->                            -- accel_group
    m ()
widgetSetAccelPath _obj accel_path accel_group = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeAccel_path <- case accel_path of
        Nothing -> return nullPtr
        Just jAccel_path -> do
            jAccel_path' <- textToCString jAccel_path
            return jAccel_path'
    maybeAccel_group <- case accel_group of
        Nothing -> return nullPtr
        Just jAccel_group -> do
            let jAccel_group' = unsafeManagedPtrCastPtr jAccel_group
            return jAccel_group'
    gtk_widget_set_accel_path _obj' maybeAccel_path maybeAccel_group
    touchManagedPtr _obj
    whenJust accel_group touchManagedPtr
    freeMem maybeAccel_path
    return ()

-- method Widget::set_allocation
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_allocation" gtk_widget_set_allocation :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- allocation : TInterface "cairo" "RectangleInt"
    IO ()


widgetSetAllocation ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- allocation
    m ()
widgetSetAllocation _obj allocation = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let allocation' = unsafeManagedPtrGetPtr allocation
    gtk_widget_set_allocation _obj' allocation'
    touchManagedPtr _obj
    touchManagedPtr allocation
    return ()

-- method Widget::set_app_paintable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_paintable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "app_paintable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_app_paintable" gtk_widget_set_app_paintable :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- app_paintable : TBasicType TBoolean
    IO ()


widgetSetAppPaintable ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- app_paintable
    m ()
widgetSetAppPaintable _obj app_paintable = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let app_paintable' = (fromIntegral . fromEnum) app_paintable
    gtk_widget_set_app_paintable _obj' app_paintable'
    touchManagedPtr _obj
    return ()

-- method Widget::set_can_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "can_default", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "can_default", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_can_default" gtk_widget_set_can_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- can_default : TBasicType TBoolean
    IO ()


widgetSetCanDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- can_default
    m ()
widgetSetCanDefault _obj can_default = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let can_default' = (fromIntegral . fromEnum) can_default
    gtk_widget_set_can_default _obj' can_default'
    touchManagedPtr _obj
    return ()

-- method Widget::set_can_focus
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "can_focus", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "can_focus", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_can_focus" gtk_widget_set_can_focus :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- can_focus : TBasicType TBoolean
    IO ()


widgetSetCanFocus ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- can_focus
    m ()
widgetSetCanFocus _obj can_focus = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let can_focus' = (fromIntegral . fromEnum) can_focus
    gtk_widget_set_can_focus _obj' can_focus'
    touchManagedPtr _obj
    return ()

-- method Widget::set_child_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "is_visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_child_visible" gtk_widget_set_child_visible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- is_visible : TBasicType TBoolean
    IO ()


widgetSetChildVisible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- is_visible
    m ()
widgetSetChildVisible _obj is_visible = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let is_visible' = (fromIntegral . fromEnum) is_visible
    gtk_widget_set_child_visible _obj' is_visible'
    touchManagedPtr _obj
    return ()

-- method Widget::set_clip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clip", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clip", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_clip" gtk_widget_set_clip :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- clip : TInterface "cairo" "RectangleInt"
    IO ()


widgetSetClip ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- clip
    m ()
widgetSetClip _obj clip = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let clip' = unsafeManagedPtrGetPtr clip
    gtk_widget_set_clip _obj' clip'
    touchManagedPtr _obj
    touchManagedPtr clip
    return ()

-- method Widget::set_composite_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_composite_name" gtk_widget_set_composite_name :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- name : TBasicType TUTF8
    IO ()

{-# DEPRECATED widgetSetCompositeName ["(Since version 3.10)","Use gtk_widget_class_set_template(), or don\8217t use this API at all."]#-}
widgetSetCompositeName ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m ()
widgetSetCompositeName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    gtk_widget_set_composite_name _obj' name'
    touchManagedPtr _obj
    freeMem name'
    return ()

-- method Widget::set_device_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_device_enabled" gtk_widget_set_device_enabled :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    CInt ->                                 -- enabled : TBasicType TBoolean
    IO ()


widgetSetDeviceEnabled ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    Bool ->                                 -- enabled
    m ()
widgetSetDeviceEnabled _obj device enabled = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    let enabled' = (fromIntegral . fromEnum) enabled
    gtk_widget_set_device_enabled _obj' device' enabled'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Widget::set_device_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "device", argType = TInterface "Gdk" "Device", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TInterface "Gdk" "EventMask", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_device_events" gtk_widget_set_device_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Device ->                       -- device : TInterface "Gdk" "Device"
    CUInt ->                                -- events : TInterface "Gdk" "EventMask"
    IO ()


widgetSetDeviceEvents ::
    (MonadIO m, WidgetK a, Gdk.DeviceK b) =>
    a ->                                    -- _obj
    b ->                                    -- device
    [Gdk.EventMask] ->                      -- events
    m ()
widgetSetDeviceEvents _obj device events = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let device' = unsafeManagedPtrCastPtr device
    let events' = gflagsToWord events
    gtk_widget_set_device_events _obj' device' events'
    touchManagedPtr _obj
    touchManagedPtr device
    return ()

-- method Widget::set_direction
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dir", argType = TInterface "Gtk" "TextDirection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dir", argType = TInterface "Gtk" "TextDirection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_direction" gtk_widget_set_direction :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- dir : TInterface "Gtk" "TextDirection"
    IO ()


widgetSetDirection ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    TextDirection ->                        -- dir
    m ()
widgetSetDirection _obj dir = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let dir' = (fromIntegral . fromEnum) dir
    gtk_widget_set_direction _obj' dir'
    touchManagedPtr _obj
    return ()

-- method Widget::set_double_buffered
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "double_buffered", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "double_buffered", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_double_buffered" gtk_widget_set_double_buffered :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- double_buffered : TBasicType TBoolean
    IO ()

{-# DEPRECATED widgetSetDoubleBuffered ["(Since version 3.14)","This function does not work under non-X11 backends or with","non-native windows.","It should not be used in newly written code."]#-}
widgetSetDoubleBuffered ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- double_buffered
    m ()
widgetSetDoubleBuffered _obj double_buffered = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let double_buffered' = (fromIntegral . fromEnum) double_buffered
    gtk_widget_set_double_buffered _obj' double_buffered'
    touchManagedPtr _obj
    return ()

-- method Widget::set_events
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "events", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_events" gtk_widget_set_events :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- events : TBasicType TInt32
    IO ()


widgetSetEvents ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- events
    m ()
widgetSetEvents _obj events = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_events _obj' events
    touchManagedPtr _obj
    return ()

-- method Widget::set_halign
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "align", argType = TInterface "Gtk" "Align", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "align", argType = TInterface "Gtk" "Align", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_halign" gtk_widget_set_halign :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- align : TInterface "Gtk" "Align"
    IO ()


widgetSetHalign ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Align ->                                -- align
    m ()
widgetSetHalign _obj align = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let align' = (fromIntegral . fromEnum) align
    gtk_widget_set_halign _obj' align'
    touchManagedPtr _obj
    return ()

-- method Widget::set_has_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_tooltip", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_tooltip", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_has_tooltip" gtk_widget_set_has_tooltip :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- has_tooltip : TBasicType TBoolean
    IO ()


widgetSetHasTooltip ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- has_tooltip
    m ()
widgetSetHasTooltip _obj has_tooltip = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let has_tooltip' = (fromIntegral . fromEnum) has_tooltip
    gtk_widget_set_has_tooltip _obj' has_tooltip'
    touchManagedPtr _obj
    return ()

-- method Widget::set_has_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_window", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "has_window", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_has_window" gtk_widget_set_has_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- has_window : TBasicType TBoolean
    IO ()


widgetSetHasWindow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- has_window
    m ()
widgetSetHasWindow _obj has_window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let has_window' = (fromIntegral . fromEnum) has_window
    gtk_widget_set_has_window _obj' has_window'
    touchManagedPtr _obj
    return ()

-- method Widget::set_hexpand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "expand", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "expand", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_hexpand" gtk_widget_set_hexpand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- expand : TBasicType TBoolean
    IO ()


widgetSetHexpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- expand
    m ()
widgetSetHexpand _obj expand = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let expand' = (fromIntegral . fromEnum) expand
    gtk_widget_set_hexpand _obj' expand'
    touchManagedPtr _obj
    return ()

-- method Widget::set_hexpand_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_hexpand_set" gtk_widget_set_hexpand_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- set : TBasicType TBoolean
    IO ()


widgetSetHexpandSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- set
    m ()
widgetSetHexpandSet _obj set = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let set' = (fromIntegral . fromEnum) set
    gtk_widget_set_hexpand_set _obj' set'
    touchManagedPtr _obj
    return ()

-- method Widget::set_mapped
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mapped", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "mapped", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_mapped" gtk_widget_set_mapped :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- mapped : TBasicType TBoolean
    IO ()


widgetSetMapped ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- mapped
    m ()
widgetSetMapped _obj mapped = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let mapped' = (fromIntegral . fromEnum) mapped
    gtk_widget_set_mapped _obj' mapped'
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_bottom
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_bottom" gtk_widget_set_margin_bottom :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()


widgetSetMarginBottom ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginBottom _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_bottom _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_end
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_end" gtk_widget_set_margin_end :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()


widgetSetMarginEnd ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginEnd _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_end _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_left
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_left" gtk_widget_set_margin_left :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()

{-# DEPRECATED widgetSetMarginLeft ["(Since version 3.12)","Use gtk_widget_set_margin_start() instead."]#-}
widgetSetMarginLeft ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginLeft _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_left _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_right
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_right" gtk_widget_set_margin_right :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()

{-# DEPRECATED widgetSetMarginRight ["(Since version 3.12)","Use gtk_widget_set_margin_end() instead."]#-}
widgetSetMarginRight ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginRight _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_right _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_start
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_start" gtk_widget_set_margin_start :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()


widgetSetMarginStart ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginStart _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_start _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_margin_top
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "margin", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_margin_top" gtk_widget_set_margin_top :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- margin : TBasicType TInt32
    IO ()


widgetSetMarginTop ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- margin
    m ()
widgetSetMarginTop _obj margin = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_margin_top _obj' margin
    touchManagedPtr _obj
    return ()

-- method Widget::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_name" gtk_widget_set_name :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- name : TBasicType TUTF8
    IO ()


widgetSetName ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- name
    m ()
widgetSetName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    name' <- textToCString name
    gtk_widget_set_name _obj' name'
    touchManagedPtr _obj
    freeMem name'
    return ()

-- method Widget::set_no_show_all
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "no_show_all", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "no_show_all", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_no_show_all" gtk_widget_set_no_show_all :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- no_show_all : TBasicType TBoolean
    IO ()


widgetSetNoShowAll ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- no_show_all
    m ()
widgetSetNoShowAll _obj no_show_all = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let no_show_all' = (fromIntegral . fromEnum) no_show_all
    gtk_widget_set_no_show_all _obj' no_show_all'
    touchManagedPtr _obj
    return ()

-- method Widget::set_opacity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "opacity", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_opacity" gtk_widget_set_opacity :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CDouble ->                              -- opacity : TBasicType TDouble
    IO ()


widgetSetOpacity ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Double ->                               -- opacity
    m ()
widgetSetOpacity _obj opacity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let opacity' = realToFrac opacity
    gtk_widget_set_opacity _obj' opacity'
    touchManagedPtr _obj
    return ()

-- method Widget::set_parent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_parent" gtk_widget_set_parent :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- parent : TInterface "Gtk" "Widget"
    IO ()


widgetSetParent ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- parent
    m ()
widgetSetParent _obj parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let parent' = unsafeManagedPtrCastPtr parent
    gtk_widget_set_parent _obj' parent'
    touchManagedPtr _obj
    touchManagedPtr parent
    return ()

-- method Widget::set_parent_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent_window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_parent_window" gtk_widget_set_parent_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Window ->                       -- parent_window : TInterface "Gdk" "Window"
    IO ()


widgetSetParentWindow ::
    (MonadIO m, WidgetK a, Gdk.WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- parent_window
    m ()
widgetSetParentWindow _obj parent_window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let parent_window' = unsafeManagedPtrCastPtr parent_window
    gtk_widget_set_parent_window _obj' parent_window'
    touchManagedPtr _obj
    touchManagedPtr parent_window
    return ()

-- method Widget::set_realized
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "realized", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "realized", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_realized" gtk_widget_set_realized :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- realized : TBasicType TBoolean
    IO ()


widgetSetRealized ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- realized
    m ()
widgetSetRealized _obj realized = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let realized' = (fromIntegral . fromEnum) realized
    gtk_widget_set_realized _obj' realized'
    touchManagedPtr _obj
    return ()

-- method Widget::set_receives_default
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "receives_default", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "receives_default", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_receives_default" gtk_widget_set_receives_default :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- receives_default : TBasicType TBoolean
    IO ()


widgetSetReceivesDefault ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- receives_default
    m ()
widgetSetReceivesDefault _obj receives_default = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let receives_default' = (fromIntegral . fromEnum) receives_default
    gtk_widget_set_receives_default _obj' receives_default'
    touchManagedPtr _obj
    return ()

-- method Widget::set_redraw_on_allocate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "redraw_on_allocate", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "redraw_on_allocate", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_redraw_on_allocate" gtk_widget_set_redraw_on_allocate :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- redraw_on_allocate : TBasicType TBoolean
    IO ()


widgetSetRedrawOnAllocate ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- redraw_on_allocate
    m ()
widgetSetRedrawOnAllocate _obj redraw_on_allocate = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let redraw_on_allocate' = (fromIntegral . fromEnum) redraw_on_allocate
    gtk_widget_set_redraw_on_allocate _obj' redraw_on_allocate'
    touchManagedPtr _obj
    return ()

-- method Widget::set_sensitive
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitive", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitive", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_sensitive" gtk_widget_set_sensitive :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- sensitive : TBasicType TBoolean
    IO ()


widgetSetSensitive ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- sensitive
    m ()
widgetSetSensitive _obj sensitive = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let sensitive' = (fromIntegral . fromEnum) sensitive
    gtk_widget_set_sensitive _obj' sensitive'
    touchManagedPtr _obj
    return ()

-- method Widget::set_size_request
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "width", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "height", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_size_request" gtk_widget_set_size_request :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Int32 ->                                -- width : TBasicType TInt32
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


widgetSetSizeRequest ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    Int32 ->                                -- height
    m ()
widgetSetSizeRequest _obj width height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_set_size_request _obj' width height
    touchManagedPtr _obj
    return ()

-- method Widget::set_state
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "state", argType = TInterface "Gtk" "StateType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_state" gtk_widget_set_state :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- state : TInterface "Gtk" "StateType"
    IO ()

{-# DEPRECATED widgetSetState ["(Since version 3.0)","Use gtk_widget_set_state_flags() instead."]#-}
widgetSetState ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    StateType ->                            -- state
    m ()
widgetSetState _obj state = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let state' = (fromIntegral . fromEnum) state
    gtk_widget_set_state _obj' state'
    touchManagedPtr _obj
    return ()

-- method Widget::set_state_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "clear", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_state_flags" gtk_widget_set_state_flags :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- flags : TInterface "Gtk" "StateFlags"
    CInt ->                                 -- clear : TBasicType TBoolean
    IO ()


widgetSetStateFlags ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [StateFlags] ->                         -- flags
    Bool ->                                 -- clear
    m ()
widgetSetStateFlags _obj flags clear = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flags' = gflagsToWord flags
    let clear' = (fromIntegral . fromEnum) clear
    gtk_widget_set_state_flags _obj' flags' clear'
    touchManagedPtr _obj
    return ()

-- method Widget::set_style
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Gtk" "Style", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "style", argType = TInterface "Gtk" "Style", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_style" gtk_widget_set_style :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Style ->                            -- style : TInterface "Gtk" "Style"
    IO ()

{-# DEPRECATED widgetSetStyle ["(Since version 3.0)","Use #GtkStyleContext instead"]#-}
widgetSetStyle ::
    (MonadIO m, WidgetK a, StyleK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- style
    m ()
widgetSetStyle _obj style = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeStyle <- case style of
        Nothing -> return nullPtr
        Just jStyle -> do
            let jStyle' = unsafeManagedPtrCastPtr jStyle
            return jStyle'
    gtk_widget_set_style _obj' maybeStyle
    touchManagedPtr _obj
    whenJust style touchManagedPtr
    return ()

-- method Widget::set_support_multidevice
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "support_multidevice", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "support_multidevice", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_support_multidevice" gtk_widget_set_support_multidevice :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- support_multidevice : TBasicType TBoolean
    IO ()


widgetSetSupportMultidevice ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- support_multidevice
    m ()
widgetSetSupportMultidevice _obj support_multidevice = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let support_multidevice' = (fromIntegral . fromEnum) support_multidevice
    gtk_widget_set_support_multidevice _obj' support_multidevice'
    touchManagedPtr _obj
    return ()

-- method Widget::set_tooltip_markup
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "markup", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_tooltip_markup" gtk_widget_set_tooltip_markup :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- markup : TBasicType TUTF8
    IO ()


widgetSetTooltipMarkup ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- markup
    m ()
widgetSetTooltipMarkup _obj markup = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeMarkup <- case markup of
        Nothing -> return nullPtr
        Just jMarkup -> do
            jMarkup' <- textToCString jMarkup
            return jMarkup'
    gtk_widget_set_tooltip_markup _obj' maybeMarkup
    touchManagedPtr _obj
    freeMem maybeMarkup
    return ()

-- method Widget::set_tooltip_text
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_tooltip_text" gtk_widget_set_tooltip_text :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- text : TBasicType TUTF8
    IO ()


widgetSetTooltipText ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- text
    m ()
widgetSetTooltipText _obj text = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeText <- case text of
        Nothing -> return nullPtr
        Just jText -> do
            jText' <- textToCString jText
            return jText'
    gtk_widget_set_tooltip_text _obj' maybeText
    touchManagedPtr _obj
    freeMem maybeText
    return ()

-- method Widget::set_tooltip_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "custom_window", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "custom_window", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_tooltip_window" gtk_widget_set_tooltip_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Window ->                           -- custom_window : TInterface "Gtk" "Window"
    IO ()


widgetSetTooltipWindow ::
    (MonadIO m, WidgetK a, WindowK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- custom_window
    m ()
widgetSetTooltipWindow _obj custom_window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeCustom_window <- case custom_window of
        Nothing -> return nullPtr
        Just jCustom_window -> do
            let jCustom_window' = unsafeManagedPtrCastPtr jCustom_window
            return jCustom_window'
    gtk_widget_set_tooltip_window _obj' maybeCustom_window
    touchManagedPtr _obj
    whenJust custom_window touchManagedPtr
    return ()

-- method Widget::set_valign
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "align", argType = TInterface "Gtk" "Align", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "align", argType = TInterface "Gtk" "Align", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_valign" gtk_widget_set_valign :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- align : TInterface "Gtk" "Align"
    IO ()


widgetSetValign ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Align ->                                -- align
    m ()
widgetSetValign _obj align = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let align' = (fromIntegral . fromEnum) align
    gtk_widget_set_valign _obj' align'
    touchManagedPtr _obj
    return ()

-- method Widget::set_vexpand
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "expand", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "expand", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_vexpand" gtk_widget_set_vexpand :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- expand : TBasicType TBoolean
    IO ()


widgetSetVexpand ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- expand
    m ()
widgetSetVexpand _obj expand = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let expand' = (fromIntegral . fromEnum) expand
    gtk_widget_set_vexpand _obj' expand'
    touchManagedPtr _obj
    return ()

-- method Widget::set_vexpand_set
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "set", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_vexpand_set" gtk_widget_set_vexpand_set :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- set : TBasicType TBoolean
    IO ()


widgetSetVexpandSet ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- set
    m ()
widgetSetVexpandSet _obj set = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let set' = (fromIntegral . fromEnum) set
    gtk_widget_set_vexpand_set _obj' set'
    touchManagedPtr _obj
    return ()

-- method Widget::set_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_visible" gtk_widget_set_visible :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CInt ->                                 -- visible : TBasicType TBoolean
    IO ()


widgetSetVisible ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- visible
    m ()
widgetSetVisible _obj visible = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let visible' = (fromIntegral . fromEnum) visible
    gtk_widget_set_visible _obj' visible'
    touchManagedPtr _obj
    return ()

-- method Widget::set_visual
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visual", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "visual", argType = TInterface "Gdk" "Visual", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_visual" gtk_widget_set_visual :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Visual ->                       -- visual : TInterface "Gdk" "Visual"
    IO ()


widgetSetVisual ::
    (MonadIO m, WidgetK a, Gdk.VisualK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- visual
    m ()
widgetSetVisual _obj visual = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeVisual <- case visual of
        Nothing -> return nullPtr
        Just jVisual -> do
            let jVisual' = unsafeManagedPtrCastPtr jVisual
            return jVisual'
    gtk_widget_set_visual _obj' maybeVisual
    touchManagedPtr _obj
    whenJust visual touchManagedPtr
    return ()

-- method Widget::set_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_window" gtk_widget_set_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Window ->                       -- window : TInterface "Gdk" "Window"
    IO ()


widgetSetWindow ::
    (MonadIO m, WidgetK a, Gdk.WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- window
    m ()
widgetSetWindow _obj window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    window' <- refObject window
    gtk_widget_set_window _obj' window'
    touchManagedPtr _obj
    touchManagedPtr window
    return ()

-- method Widget::shape_combine_region
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "region", argType = TInterface "cairo" "Region", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_shape_combine_region" gtk_widget_shape_combine_region :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.Region ->                     -- region : TInterface "cairo" "Region"
    IO ()


widgetShapeCombineRegion ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Maybe (Cairo.Region) ->                 -- region
    m ()
widgetShapeCombineRegion _obj region = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeRegion <- case region of
        Nothing -> return nullPtr
        Just jRegion -> do
            let jRegion' = unsafeManagedPtrGetPtr jRegion
            return jRegion'
    gtk_widget_shape_combine_region _obj' maybeRegion
    touchManagedPtr _obj
    whenJust region touchManagedPtr
    return ()

-- method Widget::show
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_show" gtk_widget_show :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetShow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetShow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_show _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::show_all
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_show_all" gtk_widget_show_all :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetShowAll ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetShowAll _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_show_all _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::show_now
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_show_now" gtk_widget_show_now :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetShowNow ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetShowNow _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_show_now _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::size_allocate
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_size_allocate" gtk_widget_size_allocate :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- allocation : TInterface "cairo" "RectangleInt"
    IO ()


widgetSizeAllocate ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- allocation
    m ()
widgetSizeAllocate _obj allocation = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let allocation' = unsafeManagedPtrGetPtr allocation
    gtk_widget_size_allocate _obj' allocation'
    touchManagedPtr _obj
    touchManagedPtr allocation
    return ()

-- method Widget::size_allocate_with_baseline
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseline", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "allocation", argType = TInterface "cairo" "RectangleInt", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "baseline", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_size_allocate_with_baseline" gtk_widget_size_allocate_with_baseline :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Cairo.RectangleInt ->               -- allocation : TInterface "cairo" "RectangleInt"
    Int32 ->                                -- baseline : TBasicType TInt32
    IO ()


widgetSizeAllocateWithBaseline ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    Cairo.RectangleInt ->                   -- allocation
    Int32 ->                                -- baseline
    m ()
widgetSizeAllocateWithBaseline _obj allocation baseline = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let allocation' = unsafeManagedPtrGetPtr allocation
    gtk_widget_size_allocate_with_baseline _obj' allocation' baseline
    touchManagedPtr _obj
    touchManagedPtr allocation
    return ()

-- method Widget::size_request
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "requisition", argType = TInterface "Gtk" "Requisition", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_size_request" gtk_widget_size_request :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Requisition ->                      -- requisition : TInterface "Gtk" "Requisition"
    IO ()

{-# DEPRECATED widgetSizeRequest ["(Since version 3.0)","Use gtk_widget_get_preferred_size() instead."]#-}
widgetSizeRequest ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m (Requisition)
widgetSizeRequest _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    requisition <- callocBoxedBytes 8 :: IO (Ptr Requisition)
    gtk_widget_size_request _obj' requisition
    requisition' <- (wrapBoxed Requisition) requisition
    touchManagedPtr _obj
    return requisition'

-- method Widget::style_attach
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_style_attach" gtk_widget_style_attach :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()

{-# DEPRECATED widgetStyleAttach ["(Since version 3.0)","This step is unnecessary with #GtkStyleContext."]#-}
widgetStyleAttach ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetStyleAttach _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_style_attach _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::style_get_property
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TInterface "GObject" "Value", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_style_get_property" gtk_widget_style_get_property :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CString ->                              -- property_name : TBasicType TUTF8
    Ptr GValue ->                           -- value : TInterface "GObject" "Value"
    IO ()


widgetStyleGetProperty ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- property_name
    GValue ->                               -- value
    m ()
widgetStyleGetProperty _obj property_name value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    property_name' <- textToCString property_name
    let value' = unsafeManagedPtrGetPtr value
    gtk_widget_style_get_property _obj' property_name' value'
    touchManagedPtr _obj
    touchManagedPtr value
    freeMem property_name'
    return ()

-- method Widget::thaw_child_notify
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_thaw_child_notify" gtk_widget_thaw_child_notify :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetThawChildNotify ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetThawChildNotify _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_thaw_child_notify _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::translate_coordinates
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_x", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "dest_y", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dest_widget", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_x", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "src_y", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_translate_coordinates" gtk_widget_translate_coordinates :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Widget ->                           -- dest_widget : TInterface "Gtk" "Widget"
    Int32 ->                                -- src_x : TBasicType TInt32
    Int32 ->                                -- src_y : TBasicType TInt32
    Ptr Int32 ->                            -- dest_x : TBasicType TInt32
    Ptr Int32 ->                            -- dest_y : TBasicType TInt32
    IO CInt


widgetTranslateCoordinates ::
    (MonadIO m, WidgetK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- dest_widget
    Int32 ->                                -- src_x
    Int32 ->                                -- src_y
    m (Bool,Int32,Int32)
widgetTranslateCoordinates _obj dest_widget src_x src_y = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let dest_widget' = unsafeManagedPtrCastPtr dest_widget
    dest_x <- allocMem :: IO (Ptr Int32)
    dest_y <- allocMem :: IO (Ptr Int32)
    result <- gtk_widget_translate_coordinates _obj' dest_widget' src_x src_y dest_x dest_y
    let result' = (/= 0) result
    dest_x' <- peek dest_x
    dest_y' <- peek dest_y
    touchManagedPtr _obj
    touchManagedPtr dest_widget
    freeMem dest_x
    freeMem dest_y
    return (result', dest_x', dest_y')

-- method Widget::trigger_tooltip_query
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_trigger_tooltip_query" gtk_widget_trigger_tooltip_query :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetTriggerTooltipQuery ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetTriggerTooltipQuery _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_trigger_tooltip_query _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::unmap
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_unmap" gtk_widget_unmap :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetUnmap ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetUnmap _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_unmap _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::unparent
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_unparent" gtk_widget_unparent :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetUnparent ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetUnparent _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_unparent _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::unrealize
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_unrealize" gtk_widget_unrealize :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    IO ()


widgetUnrealize ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    m ()
widgetUnrealize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_widget_unrealize _obj'
    touchManagedPtr _obj
    return ()

-- method Widget::unregister_window
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window", argType = TInterface "Gdk" "Window", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_unregister_window" gtk_widget_unregister_window :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    Ptr Gdk.Window ->                       -- window : TInterface "Gdk" "Window"
    IO ()


widgetUnregisterWindow ::
    (MonadIO m, WidgetK a, Gdk.WindowK b) =>
    a ->                                    -- _obj
    b ->                                    -- window
    m ()
widgetUnregisterWindow _obj window = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let window' = unsafeManagedPtrCastPtr window
    gtk_widget_unregister_window _obj' window'
    touchManagedPtr _obj
    touchManagedPtr window
    return ()

-- method Widget::unset_state_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flags", argType = TInterface "Gtk" "StateFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_unset_state_flags" gtk_widget_unset_state_flags :: 
    Ptr Widget ->                           -- _obj : TInterface "Gtk" "Widget"
    CUInt ->                                -- flags : TInterface "Gtk" "StateFlags"
    IO ()


widgetUnsetStateFlags ::
    (MonadIO m, WidgetK a) =>
    a ->                                    -- _obj
    [StateFlags] ->                         -- flags
    m ()
widgetUnsetStateFlags _obj flags = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flags' = gflagsToWord flags
    gtk_widget_unset_state_flags _obj' flags'
    touchManagedPtr _obj
    return ()

-- method Widget::get_default_direction
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "TextDirection"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_default_direction" gtk_widget_get_default_direction :: 
    IO CUInt


widgetGetDefaultDirection ::
    (MonadIO m) =>
    m TextDirection
widgetGetDefaultDirection  = liftIO $ do
    result <- gtk_widget_get_default_direction
    let result' = (toEnum . fromIntegral) result
    return result'

-- method Widget::get_default_style
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "Style"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_get_default_style" gtk_widget_get_default_style :: 
    IO (Ptr Style)

{-# DEPRECATED widgetGetDefaultStyle ["(Since version 3.0)","Use #GtkStyleContext instead, and","    gtk_css_provider_get_default() to obtain a #GtkStyleProvider","    with the default widget style information."]#-}
widgetGetDefaultStyle ::
    (MonadIO m) =>
    m Style
widgetGetDefaultStyle  = liftIO $ do
    result <- gtk_widget_get_default_style
    checkUnexpectedReturnNULL "gtk_widget_get_default_style" result
    result' <- (newObject Style) result
    return result'

-- method Widget::pop_composite_child
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_pop_composite_child" gtk_widget_pop_composite_child :: 
    IO ()

{-# DEPRECATED widgetPopCompositeChild ["(Since version 3.10)","Use gtk_widget_class_set_template(), or don\8217t use this API at all."]#-}
widgetPopCompositeChild ::
    (MonadIO m) =>
    m ()
widgetPopCompositeChild  = liftIO $ do
    gtk_widget_pop_composite_child
    return ()

-- method Widget::push_composite_child
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_push_composite_child" gtk_widget_push_composite_child :: 
    IO ()

{-# DEPRECATED widgetPushCompositeChild ["(Since version 3.10)","This API never really worked well and was mostly unused, now","we have a more complete mechanism for composite children, see gtk_widget_class_set_template()."]#-}
widgetPushCompositeChild ::
    (MonadIO m) =>
    m ()
widgetPushCompositeChild  = liftIO $ do
    gtk_widget_push_composite_child
    return ()

-- method Widget::set_default_direction
-- method type : MemberFunction
-- Args : [Arg {argName = "dir", argType = TInterface "Gtk" "TextDirection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "dir", argType = TInterface "Gtk" "TextDirection", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_widget_set_default_direction" gtk_widget_set_default_direction :: 
    CUInt ->                                -- dir : TInterface "Gtk" "TextDirection"
    IO ()


widgetSetDefaultDirection ::
    (MonadIO m) =>
    TextDirection ->                        -- dir
    m ()
widgetSetDefaultDirection dir = liftIO $ do
    let dir' = (fromIntegral . fromEnum) dir
    gtk_widget_set_default_direction dir'
    return ()