{- |
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.ScrolledWindow
    ( 

-- * Exported types
    ScrolledWindow(..)                      ,
    ScrolledWindowK                         ,
    toScrolledWindow                        ,
    noScrolledWindow                        ,


 -- * Methods
-- ** scrolledWindowAddWithViewport
    scrolledWindowAddWithViewport           ,


-- ** scrolledWindowGetCaptureButtonPress
    scrolledWindowGetCaptureButtonPress     ,


-- ** scrolledWindowGetHadjustment
    scrolledWindowGetHadjustment            ,


-- ** scrolledWindowGetHscrollbar
    scrolledWindowGetHscrollbar             ,


-- ** scrolledWindowGetKineticScrolling
    scrolledWindowGetKineticScrolling       ,


-- ** scrolledWindowGetMinContentHeight
    scrolledWindowGetMinContentHeight       ,


-- ** scrolledWindowGetMinContentWidth
    scrolledWindowGetMinContentWidth        ,


-- ** scrolledWindowGetOverlayScrolling
    scrolledWindowGetOverlayScrolling       ,


-- ** scrolledWindowGetPlacement
    scrolledWindowGetPlacement              ,


-- ** scrolledWindowGetPolicy
    scrolledWindowGetPolicy                 ,


-- ** scrolledWindowGetShadowType
    scrolledWindowGetShadowType             ,


-- ** scrolledWindowGetVadjustment
    scrolledWindowGetVadjustment            ,


-- ** scrolledWindowGetVscrollbar
    scrolledWindowGetVscrollbar             ,


-- ** scrolledWindowNew
    scrolledWindowNew                       ,


-- ** scrolledWindowSetCaptureButtonPress
    scrolledWindowSetCaptureButtonPress     ,


-- ** scrolledWindowSetHadjustment
    scrolledWindowSetHadjustment            ,


-- ** scrolledWindowSetKineticScrolling
    scrolledWindowSetKineticScrolling       ,


-- ** scrolledWindowSetMinContentHeight
    scrolledWindowSetMinContentHeight       ,


-- ** scrolledWindowSetMinContentWidth
    scrolledWindowSetMinContentWidth        ,


-- ** scrolledWindowSetOverlayScrolling
    scrolledWindowSetOverlayScrolling       ,


-- ** scrolledWindowSetPlacement
    scrolledWindowSetPlacement              ,


-- ** scrolledWindowSetPolicy
    scrolledWindowSetPolicy                 ,


-- ** scrolledWindowSetShadowType
    scrolledWindowSetShadowType             ,


-- ** scrolledWindowSetVadjustment
    scrolledWindowSetVadjustment            ,


-- ** scrolledWindowUnsetPlacement
    scrolledWindowUnsetPlacement            ,




 -- * Properties
-- ** Hadjustment
    ScrolledWindowHadjustmentPropertyInfo   ,
    constructScrolledWindowHadjustment      ,
    getScrolledWindowHadjustment            ,
    setScrolledWindowHadjustment            ,


-- ** HscrollbarPolicy
    ScrolledWindowHscrollbarPolicyPropertyInfo,
    constructScrolledWindowHscrollbarPolicy ,
    getScrolledWindowHscrollbarPolicy       ,
    setScrolledWindowHscrollbarPolicy       ,


-- ** KineticScrolling
    ScrolledWindowKineticScrollingPropertyInfo,
    constructScrolledWindowKineticScrolling ,
    getScrolledWindowKineticScrolling       ,
    setScrolledWindowKineticScrolling       ,


-- ** MinContentHeight
    ScrolledWindowMinContentHeightPropertyInfo,
    constructScrolledWindowMinContentHeight ,
    getScrolledWindowMinContentHeight       ,
    setScrolledWindowMinContentHeight       ,


-- ** MinContentWidth
    ScrolledWindowMinContentWidthPropertyInfo,
    constructScrolledWindowMinContentWidth  ,
    getScrolledWindowMinContentWidth        ,
    setScrolledWindowMinContentWidth        ,


-- ** OverlayScrolling
    ScrolledWindowOverlayScrollingPropertyInfo,
    constructScrolledWindowOverlayScrolling ,
    getScrolledWindowOverlayScrolling       ,
    setScrolledWindowOverlayScrolling       ,


-- ** ShadowType
    ScrolledWindowShadowTypePropertyInfo    ,
    constructScrolledWindowShadowType       ,
    getScrolledWindowShadowType             ,
    setScrolledWindowShadowType             ,


-- ** Vadjustment
    ScrolledWindowVadjustmentPropertyInfo   ,
    constructScrolledWindowVadjustment      ,
    getScrolledWindowVadjustment            ,
    setScrolledWindowVadjustment            ,


-- ** VscrollbarPolicy
    ScrolledWindowVscrollbarPolicyPropertyInfo,
    constructScrolledWindowVscrollbarPolicy ,
    getScrolledWindowVscrollbarPolicy       ,
    setScrolledWindowVscrollbarPolicy       ,


-- ** WindowPlacement
    ScrolledWindowWindowPlacementPropertyInfo,
    constructScrolledWindowWindowPlacement  ,
    getScrolledWindowWindowPlacement        ,
    setScrolledWindowWindowPlacement        ,


-- ** WindowPlacementSet
    ScrolledWindowWindowPlacementSetPropertyInfo,
    constructScrolledWindowWindowPlacementSet,
    getScrolledWindowWindowPlacementSet     ,
    setScrolledWindowWindowPlacementSet     ,




 -- * Signals
-- ** EdgeOvershot
    ScrolledWindowEdgeOvershotCallback      ,
    ScrolledWindowEdgeOvershotCallbackC     ,
    ScrolledWindowEdgeOvershotSignalInfo    ,
    afterScrolledWindowEdgeOvershot         ,
    mkScrolledWindowEdgeOvershotCallback    ,
    noScrolledWindowEdgeOvershotCallback    ,
    onScrolledWindowEdgeOvershot            ,
    scrolledWindowEdgeOvershotCallbackWrapper,
    scrolledWindowEdgeOvershotClosure       ,


-- ** EdgeReached
    ScrolledWindowEdgeReachedCallback       ,
    ScrolledWindowEdgeReachedCallbackC      ,
    ScrolledWindowEdgeReachedSignalInfo     ,
    afterScrolledWindowEdgeReached          ,
    mkScrolledWindowEdgeReachedCallback     ,
    noScrolledWindowEdgeReachedCallback     ,
    onScrolledWindowEdgeReached             ,
    scrolledWindowEdgeReachedCallbackWrapper,
    scrolledWindowEdgeReachedClosure        ,


-- ** MoveFocusOut
    ScrolledWindowMoveFocusOutCallback      ,
    ScrolledWindowMoveFocusOutCallbackC     ,
    ScrolledWindowMoveFocusOutSignalInfo    ,
    afterScrolledWindowMoveFocusOut         ,
    mkScrolledWindowMoveFocusOutCallback    ,
    noScrolledWindowMoveFocusOutCallback    ,
    onScrolledWindowMoveFocusOut            ,
    scrolledWindowMoveFocusOutCallbackWrapper,
    scrolledWindowMoveFocusOutClosure       ,


-- ** ScrollChild
    ScrolledWindowScrollChildCallback       ,
    ScrolledWindowScrollChildCallbackC      ,
    ScrolledWindowScrollChildSignalInfo     ,
    afterScrolledWindowScrollChild          ,
    mkScrolledWindowScrollChildCallback     ,
    noScrolledWindowScrollChildCallback     ,
    onScrolledWindowScrollChild             ,
    scrolledWindowScrollChildCallbackWrapper,
    scrolledWindowScrollChildClosure        ,




    ) 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.GObject as GObject

newtype ScrolledWindow = ScrolledWindow (ForeignPtr ScrolledWindow)
foreign import ccall "gtk_scrolled_window_get_type"
    c_gtk_scrolled_window_get_type :: IO GType

type instance ParentTypes ScrolledWindow = ScrolledWindowParentTypes
type ScrolledWindowParentTypes = '[Bin, Container, Widget, GObject.Object, Atk.ImplementorIface, Buildable]

instance GObject ScrolledWindow where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_scrolled_window_get_type
    

class GObject o => ScrolledWindowK o
instance (GObject o, IsDescendantOf ScrolledWindow o) => ScrolledWindowK o

toScrolledWindow :: ScrolledWindowK o => o -> IO ScrolledWindow
toScrolledWindow = unsafeCastTo ScrolledWindow

noScrolledWindow :: Maybe ScrolledWindow
noScrolledWindow = Nothing

-- signal ScrolledWindow::edge-overshot
type ScrolledWindowEdgeOvershotCallback =
    PositionType ->
    IO ()

noScrolledWindowEdgeOvershotCallback :: Maybe ScrolledWindowEdgeOvershotCallback
noScrolledWindowEdgeOvershotCallback = Nothing

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

foreign import ccall "wrapper"
    mkScrolledWindowEdgeOvershotCallback :: ScrolledWindowEdgeOvershotCallbackC -> IO (FunPtr ScrolledWindowEdgeOvershotCallbackC)

scrolledWindowEdgeOvershotClosure :: ScrolledWindowEdgeOvershotCallback -> IO Closure
scrolledWindowEdgeOvershotClosure cb = newCClosure =<< mkScrolledWindowEdgeOvershotCallback wrapped
    where wrapped = scrolledWindowEdgeOvershotCallbackWrapper cb

scrolledWindowEdgeOvershotCallbackWrapper ::
    ScrolledWindowEdgeOvershotCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
scrolledWindowEdgeOvershotCallbackWrapper _cb _ pos _ = do
    let pos' = (toEnum . fromIntegral) pos
    _cb  pos'

onScrolledWindowEdgeOvershot :: (GObject a, MonadIO m) => a -> ScrolledWindowEdgeOvershotCallback -> m SignalHandlerId
onScrolledWindowEdgeOvershot obj cb = liftIO $ connectScrolledWindowEdgeOvershot obj cb SignalConnectBefore
afterScrolledWindowEdgeOvershot :: (GObject a, MonadIO m) => a -> ScrolledWindowEdgeOvershotCallback -> m SignalHandlerId
afterScrolledWindowEdgeOvershot obj cb = connectScrolledWindowEdgeOvershot obj cb SignalConnectAfter

connectScrolledWindowEdgeOvershot :: (GObject a, MonadIO m) =>
                                     a -> ScrolledWindowEdgeOvershotCallback -> SignalConnectMode -> m SignalHandlerId
connectScrolledWindowEdgeOvershot obj cb after = liftIO $ do
    cb' <- mkScrolledWindowEdgeOvershotCallback (scrolledWindowEdgeOvershotCallbackWrapper cb)
    connectSignalFunPtr obj "edge-overshot" cb' after

-- signal ScrolledWindow::edge-reached
type ScrolledWindowEdgeReachedCallback =
    PositionType ->
    IO ()

noScrolledWindowEdgeReachedCallback :: Maybe ScrolledWindowEdgeReachedCallback
noScrolledWindowEdgeReachedCallback = Nothing

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

foreign import ccall "wrapper"
    mkScrolledWindowEdgeReachedCallback :: ScrolledWindowEdgeReachedCallbackC -> IO (FunPtr ScrolledWindowEdgeReachedCallbackC)

scrolledWindowEdgeReachedClosure :: ScrolledWindowEdgeReachedCallback -> IO Closure
scrolledWindowEdgeReachedClosure cb = newCClosure =<< mkScrolledWindowEdgeReachedCallback wrapped
    where wrapped = scrolledWindowEdgeReachedCallbackWrapper cb

scrolledWindowEdgeReachedCallbackWrapper ::
    ScrolledWindowEdgeReachedCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
scrolledWindowEdgeReachedCallbackWrapper _cb _ pos _ = do
    let pos' = (toEnum . fromIntegral) pos
    _cb  pos'

onScrolledWindowEdgeReached :: (GObject a, MonadIO m) => a -> ScrolledWindowEdgeReachedCallback -> m SignalHandlerId
onScrolledWindowEdgeReached obj cb = liftIO $ connectScrolledWindowEdgeReached obj cb SignalConnectBefore
afterScrolledWindowEdgeReached :: (GObject a, MonadIO m) => a -> ScrolledWindowEdgeReachedCallback -> m SignalHandlerId
afterScrolledWindowEdgeReached obj cb = connectScrolledWindowEdgeReached obj cb SignalConnectAfter

connectScrolledWindowEdgeReached :: (GObject a, MonadIO m) =>
                                    a -> ScrolledWindowEdgeReachedCallback -> SignalConnectMode -> m SignalHandlerId
connectScrolledWindowEdgeReached obj cb after = liftIO $ do
    cb' <- mkScrolledWindowEdgeReachedCallback (scrolledWindowEdgeReachedCallbackWrapper cb)
    connectSignalFunPtr obj "edge-reached" cb' after

-- signal ScrolledWindow::move-focus-out
type ScrolledWindowMoveFocusOutCallback =
    DirectionType ->
    IO ()

noScrolledWindowMoveFocusOutCallback :: Maybe ScrolledWindowMoveFocusOutCallback
noScrolledWindowMoveFocusOutCallback = Nothing

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

foreign import ccall "wrapper"
    mkScrolledWindowMoveFocusOutCallback :: ScrolledWindowMoveFocusOutCallbackC -> IO (FunPtr ScrolledWindowMoveFocusOutCallbackC)

scrolledWindowMoveFocusOutClosure :: ScrolledWindowMoveFocusOutCallback -> IO Closure
scrolledWindowMoveFocusOutClosure cb = newCClosure =<< mkScrolledWindowMoveFocusOutCallback wrapped
    where wrapped = scrolledWindowMoveFocusOutCallbackWrapper cb

scrolledWindowMoveFocusOutCallbackWrapper ::
    ScrolledWindowMoveFocusOutCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
scrolledWindowMoveFocusOutCallbackWrapper _cb _ direction_type _ = do
    let direction_type' = (toEnum . fromIntegral) direction_type
    _cb  direction_type'

onScrolledWindowMoveFocusOut :: (GObject a, MonadIO m) => a -> ScrolledWindowMoveFocusOutCallback -> m SignalHandlerId
onScrolledWindowMoveFocusOut obj cb = liftIO $ connectScrolledWindowMoveFocusOut obj cb SignalConnectBefore
afterScrolledWindowMoveFocusOut :: (GObject a, MonadIO m) => a -> ScrolledWindowMoveFocusOutCallback -> m SignalHandlerId
afterScrolledWindowMoveFocusOut obj cb = connectScrolledWindowMoveFocusOut obj cb SignalConnectAfter

connectScrolledWindowMoveFocusOut :: (GObject a, MonadIO m) =>
                                     a -> ScrolledWindowMoveFocusOutCallback -> SignalConnectMode -> m SignalHandlerId
connectScrolledWindowMoveFocusOut obj cb after = liftIO $ do
    cb' <- mkScrolledWindowMoveFocusOutCallback (scrolledWindowMoveFocusOutCallbackWrapper cb)
    connectSignalFunPtr obj "move-focus-out" cb' after

-- signal ScrolledWindow::scroll-child
type ScrolledWindowScrollChildCallback =
    ScrollType ->
    Bool ->
    IO Bool

noScrolledWindowScrollChildCallback :: Maybe ScrolledWindowScrollChildCallback
noScrolledWindowScrollChildCallback = Nothing

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

foreign import ccall "wrapper"
    mkScrolledWindowScrollChildCallback :: ScrolledWindowScrollChildCallbackC -> IO (FunPtr ScrolledWindowScrollChildCallbackC)

scrolledWindowScrollChildClosure :: ScrolledWindowScrollChildCallback -> IO Closure
scrolledWindowScrollChildClosure cb = newCClosure =<< mkScrolledWindowScrollChildCallback wrapped
    where wrapped = scrolledWindowScrollChildCallbackWrapper cb

scrolledWindowScrollChildCallbackWrapper ::
    ScrolledWindowScrollChildCallback ->
    Ptr () ->
    CUInt ->
    CInt ->
    Ptr () ->
    IO CInt
scrolledWindowScrollChildCallbackWrapper _cb _ scroll horizontal _ = do
    let scroll' = (toEnum . fromIntegral) scroll
    let horizontal' = (/= 0) horizontal
    result <- _cb  scroll' horizontal'
    let result' = (fromIntegral . fromEnum) result
    return result'

onScrolledWindowScrollChild :: (GObject a, MonadIO m) => a -> ScrolledWindowScrollChildCallback -> m SignalHandlerId
onScrolledWindowScrollChild obj cb = liftIO $ connectScrolledWindowScrollChild obj cb SignalConnectBefore
afterScrolledWindowScrollChild :: (GObject a, MonadIO m) => a -> ScrolledWindowScrollChildCallback -> m SignalHandlerId
afterScrolledWindowScrollChild obj cb = connectScrolledWindowScrollChild obj cb SignalConnectAfter

connectScrolledWindowScrollChild :: (GObject a, MonadIO m) =>
                                    a -> ScrolledWindowScrollChildCallback -> SignalConnectMode -> m SignalHandlerId
connectScrolledWindowScrollChild obj cb after = liftIO $ do
    cb' <- mkScrolledWindowScrollChildCallback (scrolledWindowScrollChildCallbackWrapper cb)
    connectSignalFunPtr obj "scroll-child" cb' after

-- VVV Prop "hadjustment"
   -- Type: TInterface "Gtk" "Adjustment"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getScrolledWindowHadjustment :: (MonadIO m, ScrolledWindowK o) => o -> m Adjustment
getScrolledWindowHadjustment obj = liftIO $ getObjectPropertyObject obj "hadjustment" Adjustment

setScrolledWindowHadjustment :: (MonadIO m, ScrolledWindowK o, AdjustmentK a) => o -> a -> m ()
setScrolledWindowHadjustment obj val = liftIO $ setObjectPropertyObject obj "hadjustment" val

constructScrolledWindowHadjustment :: (AdjustmentK a) => a -> IO ([Char], GValue)
constructScrolledWindowHadjustment val = constructObjectPropertyObject "hadjustment" val

data ScrolledWindowHadjustmentPropertyInfo
instance AttrInfo ScrolledWindowHadjustmentPropertyInfo where
    type AttrAllowedOps ScrolledWindowHadjustmentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowHadjustmentPropertyInfo = AdjustmentK
    type AttrBaseTypeConstraint ScrolledWindowHadjustmentPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowHadjustmentPropertyInfo = Adjustment
    type AttrLabel ScrolledWindowHadjustmentPropertyInfo = "ScrolledWindow::hadjustment"
    attrGet _ = getScrolledWindowHadjustment
    attrSet _ = setScrolledWindowHadjustment
    attrConstruct _ = constructScrolledWindowHadjustment

-- VVV Prop "hscrollbar-policy"
   -- Type: TInterface "Gtk" "PolicyType"
   -- Flags: [PropertyReadable,PropertyWritable]

getScrolledWindowHscrollbarPolicy :: (MonadIO m, ScrolledWindowK o) => o -> m PolicyType
getScrolledWindowHscrollbarPolicy obj = liftIO $ getObjectPropertyEnum obj "hscrollbar-policy"

setScrolledWindowHscrollbarPolicy :: (MonadIO m, ScrolledWindowK o) => o -> PolicyType -> m ()
setScrolledWindowHscrollbarPolicy obj val = liftIO $ setObjectPropertyEnum obj "hscrollbar-policy" val

constructScrolledWindowHscrollbarPolicy :: PolicyType -> IO ([Char], GValue)
constructScrolledWindowHscrollbarPolicy val = constructObjectPropertyEnum "hscrollbar-policy" val

data ScrolledWindowHscrollbarPolicyPropertyInfo
instance AttrInfo ScrolledWindowHscrollbarPolicyPropertyInfo where
    type AttrAllowedOps ScrolledWindowHscrollbarPolicyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowHscrollbarPolicyPropertyInfo = (~) PolicyType
    type AttrBaseTypeConstraint ScrolledWindowHscrollbarPolicyPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowHscrollbarPolicyPropertyInfo = PolicyType
    type AttrLabel ScrolledWindowHscrollbarPolicyPropertyInfo = "ScrolledWindow::hscrollbar-policy"
    attrGet _ = getScrolledWindowHscrollbarPolicy
    attrSet _ = setScrolledWindowHscrollbarPolicy
    attrConstruct _ = constructScrolledWindowHscrollbarPolicy

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

getScrolledWindowKineticScrolling :: (MonadIO m, ScrolledWindowK o) => o -> m Bool
getScrolledWindowKineticScrolling obj = liftIO $ getObjectPropertyBool obj "kinetic-scrolling"

setScrolledWindowKineticScrolling :: (MonadIO m, ScrolledWindowK o) => o -> Bool -> m ()
setScrolledWindowKineticScrolling obj val = liftIO $ setObjectPropertyBool obj "kinetic-scrolling" val

constructScrolledWindowKineticScrolling :: Bool -> IO ([Char], GValue)
constructScrolledWindowKineticScrolling val = constructObjectPropertyBool "kinetic-scrolling" val

data ScrolledWindowKineticScrollingPropertyInfo
instance AttrInfo ScrolledWindowKineticScrollingPropertyInfo where
    type AttrAllowedOps ScrolledWindowKineticScrollingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowKineticScrollingPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint ScrolledWindowKineticScrollingPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowKineticScrollingPropertyInfo = Bool
    type AttrLabel ScrolledWindowKineticScrollingPropertyInfo = "ScrolledWindow::kinetic-scrolling"
    attrGet _ = getScrolledWindowKineticScrolling
    attrSet _ = setScrolledWindowKineticScrolling
    attrConstruct _ = constructScrolledWindowKineticScrolling

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

getScrolledWindowMinContentHeight :: (MonadIO m, ScrolledWindowK o) => o -> m Int32
getScrolledWindowMinContentHeight obj = liftIO $ getObjectPropertyCInt obj "min-content-height"

setScrolledWindowMinContentHeight :: (MonadIO m, ScrolledWindowK o) => o -> Int32 -> m ()
setScrolledWindowMinContentHeight obj val = liftIO $ setObjectPropertyCInt obj "min-content-height" val

constructScrolledWindowMinContentHeight :: Int32 -> IO ([Char], GValue)
constructScrolledWindowMinContentHeight val = constructObjectPropertyCInt "min-content-height" val

data ScrolledWindowMinContentHeightPropertyInfo
instance AttrInfo ScrolledWindowMinContentHeightPropertyInfo where
    type AttrAllowedOps ScrolledWindowMinContentHeightPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowMinContentHeightPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ScrolledWindowMinContentHeightPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowMinContentHeightPropertyInfo = Int32
    type AttrLabel ScrolledWindowMinContentHeightPropertyInfo = "ScrolledWindow::min-content-height"
    attrGet _ = getScrolledWindowMinContentHeight
    attrSet _ = setScrolledWindowMinContentHeight
    attrConstruct _ = constructScrolledWindowMinContentHeight

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

getScrolledWindowMinContentWidth :: (MonadIO m, ScrolledWindowK o) => o -> m Int32
getScrolledWindowMinContentWidth obj = liftIO $ getObjectPropertyCInt obj "min-content-width"

setScrolledWindowMinContentWidth :: (MonadIO m, ScrolledWindowK o) => o -> Int32 -> m ()
setScrolledWindowMinContentWidth obj val = liftIO $ setObjectPropertyCInt obj "min-content-width" val

constructScrolledWindowMinContentWidth :: Int32 -> IO ([Char], GValue)
constructScrolledWindowMinContentWidth val = constructObjectPropertyCInt "min-content-width" val

data ScrolledWindowMinContentWidthPropertyInfo
instance AttrInfo ScrolledWindowMinContentWidthPropertyInfo where
    type AttrAllowedOps ScrolledWindowMinContentWidthPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowMinContentWidthPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint ScrolledWindowMinContentWidthPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowMinContentWidthPropertyInfo = Int32
    type AttrLabel ScrolledWindowMinContentWidthPropertyInfo = "ScrolledWindow::min-content-width"
    attrGet _ = getScrolledWindowMinContentWidth
    attrSet _ = setScrolledWindowMinContentWidth
    attrConstruct _ = constructScrolledWindowMinContentWidth

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

getScrolledWindowOverlayScrolling :: (MonadIO m, ScrolledWindowK o) => o -> m Bool
getScrolledWindowOverlayScrolling obj = liftIO $ getObjectPropertyBool obj "overlay-scrolling"

setScrolledWindowOverlayScrolling :: (MonadIO m, ScrolledWindowK o) => o -> Bool -> m ()
setScrolledWindowOverlayScrolling obj val = liftIO $ setObjectPropertyBool obj "overlay-scrolling" val

constructScrolledWindowOverlayScrolling :: Bool -> IO ([Char], GValue)
constructScrolledWindowOverlayScrolling val = constructObjectPropertyBool "overlay-scrolling" val

data ScrolledWindowOverlayScrollingPropertyInfo
instance AttrInfo ScrolledWindowOverlayScrollingPropertyInfo where
    type AttrAllowedOps ScrolledWindowOverlayScrollingPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowOverlayScrollingPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint ScrolledWindowOverlayScrollingPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowOverlayScrollingPropertyInfo = Bool
    type AttrLabel ScrolledWindowOverlayScrollingPropertyInfo = "ScrolledWindow::overlay-scrolling"
    attrGet _ = getScrolledWindowOverlayScrolling
    attrSet _ = setScrolledWindowOverlayScrolling
    attrConstruct _ = constructScrolledWindowOverlayScrolling

-- VVV Prop "shadow-type"
   -- Type: TInterface "Gtk" "ShadowType"
   -- Flags: [PropertyReadable,PropertyWritable]

getScrolledWindowShadowType :: (MonadIO m, ScrolledWindowK o) => o -> m ShadowType
getScrolledWindowShadowType obj = liftIO $ getObjectPropertyEnum obj "shadow-type"

setScrolledWindowShadowType :: (MonadIO m, ScrolledWindowK o) => o -> ShadowType -> m ()
setScrolledWindowShadowType obj val = liftIO $ setObjectPropertyEnum obj "shadow-type" val

constructScrolledWindowShadowType :: ShadowType -> IO ([Char], GValue)
constructScrolledWindowShadowType val = constructObjectPropertyEnum "shadow-type" val

data ScrolledWindowShadowTypePropertyInfo
instance AttrInfo ScrolledWindowShadowTypePropertyInfo where
    type AttrAllowedOps ScrolledWindowShadowTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowShadowTypePropertyInfo = (~) ShadowType
    type AttrBaseTypeConstraint ScrolledWindowShadowTypePropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowShadowTypePropertyInfo = ShadowType
    type AttrLabel ScrolledWindowShadowTypePropertyInfo = "ScrolledWindow::shadow-type"
    attrGet _ = getScrolledWindowShadowType
    attrSet _ = setScrolledWindowShadowType
    attrConstruct _ = constructScrolledWindowShadowType

-- VVV Prop "vadjustment"
   -- Type: TInterface "Gtk" "Adjustment"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getScrolledWindowVadjustment :: (MonadIO m, ScrolledWindowK o) => o -> m Adjustment
getScrolledWindowVadjustment obj = liftIO $ getObjectPropertyObject obj "vadjustment" Adjustment

setScrolledWindowVadjustment :: (MonadIO m, ScrolledWindowK o, AdjustmentK a) => o -> a -> m ()
setScrolledWindowVadjustment obj val = liftIO $ setObjectPropertyObject obj "vadjustment" val

constructScrolledWindowVadjustment :: (AdjustmentK a) => a -> IO ([Char], GValue)
constructScrolledWindowVadjustment val = constructObjectPropertyObject "vadjustment" val

data ScrolledWindowVadjustmentPropertyInfo
instance AttrInfo ScrolledWindowVadjustmentPropertyInfo where
    type AttrAllowedOps ScrolledWindowVadjustmentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowVadjustmentPropertyInfo = AdjustmentK
    type AttrBaseTypeConstraint ScrolledWindowVadjustmentPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowVadjustmentPropertyInfo = Adjustment
    type AttrLabel ScrolledWindowVadjustmentPropertyInfo = "ScrolledWindow::vadjustment"
    attrGet _ = getScrolledWindowVadjustment
    attrSet _ = setScrolledWindowVadjustment
    attrConstruct _ = constructScrolledWindowVadjustment

-- VVV Prop "vscrollbar-policy"
   -- Type: TInterface "Gtk" "PolicyType"
   -- Flags: [PropertyReadable,PropertyWritable]

getScrolledWindowVscrollbarPolicy :: (MonadIO m, ScrolledWindowK o) => o -> m PolicyType
getScrolledWindowVscrollbarPolicy obj = liftIO $ getObjectPropertyEnum obj "vscrollbar-policy"

setScrolledWindowVscrollbarPolicy :: (MonadIO m, ScrolledWindowK o) => o -> PolicyType -> m ()
setScrolledWindowVscrollbarPolicy obj val = liftIO $ setObjectPropertyEnum obj "vscrollbar-policy" val

constructScrolledWindowVscrollbarPolicy :: PolicyType -> IO ([Char], GValue)
constructScrolledWindowVscrollbarPolicy val = constructObjectPropertyEnum "vscrollbar-policy" val

data ScrolledWindowVscrollbarPolicyPropertyInfo
instance AttrInfo ScrolledWindowVscrollbarPolicyPropertyInfo where
    type AttrAllowedOps ScrolledWindowVscrollbarPolicyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowVscrollbarPolicyPropertyInfo = (~) PolicyType
    type AttrBaseTypeConstraint ScrolledWindowVscrollbarPolicyPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowVscrollbarPolicyPropertyInfo = PolicyType
    type AttrLabel ScrolledWindowVscrollbarPolicyPropertyInfo = "ScrolledWindow::vscrollbar-policy"
    attrGet _ = getScrolledWindowVscrollbarPolicy
    attrSet _ = setScrolledWindowVscrollbarPolicy
    attrConstruct _ = constructScrolledWindowVscrollbarPolicy

-- VVV Prop "window-placement"
   -- Type: TInterface "Gtk" "CornerType"
   -- Flags: [PropertyReadable,PropertyWritable]

getScrolledWindowWindowPlacement :: (MonadIO m, ScrolledWindowK o) => o -> m CornerType
getScrolledWindowWindowPlacement obj = liftIO $ getObjectPropertyEnum obj "window-placement"

setScrolledWindowWindowPlacement :: (MonadIO m, ScrolledWindowK o) => o -> CornerType -> m ()
setScrolledWindowWindowPlacement obj val = liftIO $ setObjectPropertyEnum obj "window-placement" val

constructScrolledWindowWindowPlacement :: CornerType -> IO ([Char], GValue)
constructScrolledWindowWindowPlacement val = constructObjectPropertyEnum "window-placement" val

data ScrolledWindowWindowPlacementPropertyInfo
instance AttrInfo ScrolledWindowWindowPlacementPropertyInfo where
    type AttrAllowedOps ScrolledWindowWindowPlacementPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowWindowPlacementPropertyInfo = (~) CornerType
    type AttrBaseTypeConstraint ScrolledWindowWindowPlacementPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowWindowPlacementPropertyInfo = CornerType
    type AttrLabel ScrolledWindowWindowPlacementPropertyInfo = "ScrolledWindow::window-placement"
    attrGet _ = getScrolledWindowWindowPlacement
    attrSet _ = setScrolledWindowWindowPlacement
    attrConstruct _ = constructScrolledWindowWindowPlacement

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

getScrolledWindowWindowPlacementSet :: (MonadIO m, ScrolledWindowK o) => o -> m Bool
getScrolledWindowWindowPlacementSet obj = liftIO $ getObjectPropertyBool obj "window-placement-set"

setScrolledWindowWindowPlacementSet :: (MonadIO m, ScrolledWindowK o) => o -> Bool -> m ()
setScrolledWindowWindowPlacementSet obj val = liftIO $ setObjectPropertyBool obj "window-placement-set" val

constructScrolledWindowWindowPlacementSet :: Bool -> IO ([Char], GValue)
constructScrolledWindowWindowPlacementSet val = constructObjectPropertyBool "window-placement-set" val

data ScrolledWindowWindowPlacementSetPropertyInfo
instance AttrInfo ScrolledWindowWindowPlacementSetPropertyInfo where
    type AttrAllowedOps ScrolledWindowWindowPlacementSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint ScrolledWindowWindowPlacementSetPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint ScrolledWindowWindowPlacementSetPropertyInfo = ScrolledWindowK
    type AttrGetType ScrolledWindowWindowPlacementSetPropertyInfo = Bool
    type AttrLabel ScrolledWindowWindowPlacementSetPropertyInfo = "ScrolledWindow::window-placement-set"
    attrGet _ = getScrolledWindowWindowPlacementSet
    attrSet _ = setScrolledWindowWindowPlacementSet
    attrConstruct _ = constructScrolledWindowWindowPlacementSet

type instance AttributeList ScrolledWindow = ScrolledWindowAttributeList
type ScrolledWindowAttributeList = ('[ '("app-paintable", WidgetAppPaintablePropertyInfo), '("border-width", ContainerBorderWidthPropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("child", ContainerChildPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("hadjustment", ScrolledWindowHadjustmentPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("hscrollbar-policy", ScrolledWindowHscrollbarPolicyPropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("kinetic-scrolling", ScrolledWindowKineticScrollingPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("min-content-height", ScrolledWindowMinContentHeightPropertyInfo), '("min-content-width", ScrolledWindowMinContentWidthPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("overlay-scrolling", ScrolledWindowOverlayScrollingPropertyInfo), '("parent", WidgetParentPropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("resize-mode", ContainerResizeModePropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("shadow-type", ScrolledWindowShadowTypePropertyInfo), '("style", WidgetStylePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("vadjustment", ScrolledWindowVadjustmentPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("vscrollbar-policy", ScrolledWindowVscrollbarPolicyPropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo), '("window-placement", ScrolledWindowWindowPlacementPropertyInfo), '("window-placement-set", ScrolledWindowWindowPlacementSetPropertyInfo)] :: [(Symbol, *)])

data ScrolledWindowEdgeOvershotSignalInfo
instance SignalInfo ScrolledWindowEdgeOvershotSignalInfo where
    type HaskellCallbackType ScrolledWindowEdgeOvershotSignalInfo = ScrolledWindowEdgeOvershotCallback
    connectSignal _ = connectScrolledWindowEdgeOvershot

data ScrolledWindowEdgeReachedSignalInfo
instance SignalInfo ScrolledWindowEdgeReachedSignalInfo where
    type HaskellCallbackType ScrolledWindowEdgeReachedSignalInfo = ScrolledWindowEdgeReachedCallback
    connectSignal _ = connectScrolledWindowEdgeReached

data ScrolledWindowMoveFocusOutSignalInfo
instance SignalInfo ScrolledWindowMoveFocusOutSignalInfo where
    type HaskellCallbackType ScrolledWindowMoveFocusOutSignalInfo = ScrolledWindowMoveFocusOutCallback
    connectSignal _ = connectScrolledWindowMoveFocusOut

data ScrolledWindowScrollChildSignalInfo
instance SignalInfo ScrolledWindowScrollChildSignalInfo where
    type HaskellCallbackType ScrolledWindowScrollChildSignalInfo = ScrolledWindowScrollChildCallback
    connectSignal _ = connectScrolledWindowScrollChild

type instance SignalList ScrolledWindow = ScrolledWindowSignalList
type ScrolledWindowSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("add", ContainerAddSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("check-resize", ContainerCheckResizeSignalInfo), '("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), '("edge-overshot", ScrolledWindowEdgeOvershotSignalInfo), '("edge-reached", ScrolledWindowEdgeReachedSignalInfo), '("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), '("move-focus-out", ScrolledWindowMoveFocusOutSignalInfo), '("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), '("remove", ContainerRemoveSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-child", ScrolledWindowScrollChildSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("set-focus-child", ContainerSetFocusChildSignalInfo), '("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 ScrolledWindow::new
-- method type : Constructor
-- Args : [Arg {argName = "hadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "hadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "ScrolledWindow"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_new" gtk_scrolled_window_new :: 
    Ptr Adjustment ->                       -- hadjustment : TInterface "Gtk" "Adjustment"
    Ptr Adjustment ->                       -- vadjustment : TInterface "Gtk" "Adjustment"
    IO (Ptr ScrolledWindow)


scrolledWindowNew ::
    (MonadIO m, AdjustmentK a, AdjustmentK b) =>
    Maybe (a) ->                            -- hadjustment
    Maybe (b) ->                            -- vadjustment
    m ScrolledWindow
scrolledWindowNew hadjustment vadjustment = liftIO $ do
    maybeHadjustment <- case hadjustment of
        Nothing -> return nullPtr
        Just jHadjustment -> do
            let jHadjustment' = unsafeManagedPtrCastPtr jHadjustment
            return jHadjustment'
    maybeVadjustment <- case vadjustment of
        Nothing -> return nullPtr
        Just jVadjustment -> do
            let jVadjustment' = unsafeManagedPtrCastPtr jVadjustment
            return jVadjustment'
    result <- gtk_scrolled_window_new maybeHadjustment maybeVadjustment
    checkUnexpectedReturnNULL "gtk_scrolled_window_new" result
    result' <- (newObject ScrolledWindow) result
    whenJust hadjustment touchManagedPtr
    whenJust vadjustment touchManagedPtr
    return result'

-- method ScrolledWindow::add_with_viewport
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", argType = TInterface "Gtk" "Widget", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "child", 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_scrolled_window_add_with_viewport" gtk_scrolled_window_add_with_viewport :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Ptr Widget ->                           -- child : TInterface "Gtk" "Widget"
    IO ()

{-# DEPRECATED scrolledWindowAddWithViewport ["(Since version 3.8)","gtk_container_add() will automatically add","a #GtkViewport if the child doesn\8217t implement #GtkScrollable."]#-}
scrolledWindowAddWithViewport ::
    (MonadIO m, ScrolledWindowK a, WidgetK b) =>
    a ->                                    -- _obj
    b ->                                    -- child
    m ()
scrolledWindowAddWithViewport _obj child = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let child' = unsafeManagedPtrCastPtr child
    gtk_scrolled_window_add_with_viewport _obj' child'
    touchManagedPtr _obj
    touchManagedPtr child
    return ()

-- method ScrolledWindow::get_capture_button_press
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_capture_button_press" gtk_scrolled_window_get_capture_button_press :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO CInt


scrolledWindowGetCaptureButtonPress ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Bool
scrolledWindowGetCaptureButtonPress _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_capture_button_press _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_hadjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Adjustment"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_hadjustment" gtk_scrolled_window_get_hadjustment :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO (Ptr Adjustment)


scrolledWindowGetHadjustment ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Adjustment
scrolledWindowGetHadjustment _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_hadjustment _obj'
    checkUnexpectedReturnNULL "gtk_scrolled_window_get_hadjustment" result
    result' <- (newObject Adjustment) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_hscrollbar
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", 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_scrolled_window_get_hscrollbar" gtk_scrolled_window_get_hscrollbar :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO (Ptr Widget)


scrolledWindowGetHscrollbar ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Widget
scrolledWindowGetHscrollbar _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_hscrollbar _obj'
    checkUnexpectedReturnNULL "gtk_scrolled_window_get_hscrollbar" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_kinetic_scrolling
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_kinetic_scrolling" gtk_scrolled_window_get_kinetic_scrolling :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO CInt


scrolledWindowGetKineticScrolling ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Bool
scrolledWindowGetKineticScrolling _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_kinetic_scrolling _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_min_content_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_min_content_height" gtk_scrolled_window_get_min_content_height :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO Int32


scrolledWindowGetMinContentHeight ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Int32
scrolledWindowGetMinContentHeight _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_min_content_height _obj'
    touchManagedPtr _obj
    return result

-- method ScrolledWindow::get_min_content_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_min_content_width" gtk_scrolled_window_get_min_content_width :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO Int32


scrolledWindowGetMinContentWidth ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Int32
scrolledWindowGetMinContentWidth _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_min_content_width _obj'
    touchManagedPtr _obj
    return result

-- method ScrolledWindow::get_overlay_scrolling
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_overlay_scrolling" gtk_scrolled_window_get_overlay_scrolling :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO CInt


scrolledWindowGetOverlayScrolling ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Bool
scrolledWindowGetOverlayScrolling _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_overlay_scrolling _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_placement
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "CornerType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_placement" gtk_scrolled_window_get_placement :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO CUInt


scrolledWindowGetPlacement ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m CornerType
scrolledWindowGetPlacement _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_placement _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_policy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "vscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_policy" gtk_scrolled_window_get_policy :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Ptr CUInt ->                            -- hscrollbar_policy : TInterface "Gtk" "PolicyType"
    Ptr CUInt ->                            -- vscrollbar_policy : TInterface "Gtk" "PolicyType"
    IO ()


scrolledWindowGetPolicy ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m (PolicyType,PolicyType)
scrolledWindowGetPolicy _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    hscrollbar_policy <- allocMem :: IO (Ptr CUInt)
    vscrollbar_policy <- allocMem :: IO (Ptr CUInt)
    gtk_scrolled_window_get_policy _obj' hscrollbar_policy vscrollbar_policy
    hscrollbar_policy' <- peek hscrollbar_policy
    let hscrollbar_policy'' = (toEnum . fromIntegral) hscrollbar_policy'
    vscrollbar_policy' <- peek vscrollbar_policy
    let vscrollbar_policy'' = (toEnum . fromIntegral) vscrollbar_policy'
    touchManagedPtr _obj
    freeMem hscrollbar_policy
    freeMem vscrollbar_policy
    return (hscrollbar_policy'', vscrollbar_policy'')

-- method ScrolledWindow::get_shadow_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "ShadowType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_shadow_type" gtk_scrolled_window_get_shadow_type :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO CUInt


scrolledWindowGetShadowType ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m ShadowType
scrolledWindowGetShadowType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_shadow_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_vadjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Adjustment"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_get_vadjustment" gtk_scrolled_window_get_vadjustment :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO (Ptr Adjustment)


scrolledWindowGetVadjustment ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Adjustment
scrolledWindowGetVadjustment _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_vadjustment _obj'
    checkUnexpectedReturnNULL "gtk_scrolled_window_get_vadjustment" result
    result' <- (newObject Adjustment) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::get_vscrollbar
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", 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_scrolled_window_get_vscrollbar" gtk_scrolled_window_get_vscrollbar :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO (Ptr Widget)


scrolledWindowGetVscrollbar ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m Widget
scrolledWindowGetVscrollbar _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_scrolled_window_get_vscrollbar _obj'
    checkUnexpectedReturnNULL "gtk_scrolled_window_get_vscrollbar" result
    result' <- (newObject Widget) result
    touchManagedPtr _obj
    return result'

-- method ScrolledWindow::set_capture_button_press
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "capture_button_press", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "capture_button_press", 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_scrolled_window_set_capture_button_press" gtk_scrolled_window_set_capture_button_press :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CInt ->                                 -- capture_button_press : TBasicType TBoolean
    IO ()


scrolledWindowSetCaptureButtonPress ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- capture_button_press
    m ()
scrolledWindowSetCaptureButtonPress _obj capture_button_press = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let capture_button_press' = (fromIntegral . fromEnum) capture_button_press
    gtk_scrolled_window_set_capture_button_press _obj' capture_button_press'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_hadjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_set_hadjustment" gtk_scrolled_window_set_hadjustment :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Ptr Adjustment ->                       -- hadjustment : TInterface "Gtk" "Adjustment"
    IO ()


scrolledWindowSetHadjustment ::
    (MonadIO m, ScrolledWindowK a, AdjustmentK b) =>
    a ->                                    -- _obj
    b ->                                    -- hadjustment
    m ()
scrolledWindowSetHadjustment _obj hadjustment = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let hadjustment' = unsafeManagedPtrCastPtr hadjustment
    gtk_scrolled_window_set_hadjustment _obj' hadjustment'
    touchManagedPtr _obj
    touchManagedPtr hadjustment
    return ()

-- method ScrolledWindow::set_kinetic_scrolling
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "kinetic_scrolling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "kinetic_scrolling", 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_scrolled_window_set_kinetic_scrolling" gtk_scrolled_window_set_kinetic_scrolling :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CInt ->                                 -- kinetic_scrolling : TBasicType TBoolean
    IO ()


scrolledWindowSetKineticScrolling ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- kinetic_scrolling
    m ()
scrolledWindowSetKineticScrolling _obj kinetic_scrolling = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let kinetic_scrolling' = (fromIntegral . fromEnum) kinetic_scrolling
    gtk_scrolled_window_set_kinetic_scrolling _obj' kinetic_scrolling'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_min_content_height
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", 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" "ScrolledWindow", 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_scrolled_window_set_min_content_height" gtk_scrolled_window_set_min_content_height :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Int32 ->                                -- height : TBasicType TInt32
    IO ()


scrolledWindowSetMinContentHeight ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- height
    m ()
scrolledWindowSetMinContentHeight _obj height = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_scrolled_window_set_min_content_height _obj' height
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_min_content_width
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", 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}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", 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_scrolled_window_set_min_content_width" gtk_scrolled_window_set_min_content_width :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Int32 ->                                -- width : TBasicType TInt32
    IO ()


scrolledWindowSetMinContentWidth ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- width
    m ()
scrolledWindowSetMinContentWidth _obj width = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_scrolled_window_set_min_content_width _obj' width
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_overlay_scrolling
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "overlay_scrolling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "overlay_scrolling", 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_scrolled_window_set_overlay_scrolling" gtk_scrolled_window_set_overlay_scrolling :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CInt ->                                 -- overlay_scrolling : TBasicType TBoolean
    IO ()


scrolledWindowSetOverlayScrolling ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- overlay_scrolling
    m ()
scrolledWindowSetOverlayScrolling _obj overlay_scrolling = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let overlay_scrolling' = (fromIntegral . fromEnum) overlay_scrolling
    gtk_scrolled_window_set_overlay_scrolling _obj' overlay_scrolling'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_placement
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window_placement", argType = TInterface "Gtk" "CornerType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "window_placement", argType = TInterface "Gtk" "CornerType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_set_placement" gtk_scrolled_window_set_placement :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CUInt ->                                -- window_placement : TInterface "Gtk" "CornerType"
    IO ()


scrolledWindowSetPlacement ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    CornerType ->                           -- window_placement
    m ()
scrolledWindowSetPlacement _obj window_placement = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let window_placement' = (fromIntegral . fromEnum) window_placement
    gtk_scrolled_window_set_placement _obj' window_placement'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_policy
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "hscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vscrollbar_policy", argType = TInterface "Gtk" "PolicyType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_set_policy" gtk_scrolled_window_set_policy :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CUInt ->                                -- hscrollbar_policy : TInterface "Gtk" "PolicyType"
    CUInt ->                                -- vscrollbar_policy : TInterface "Gtk" "PolicyType"
    IO ()


scrolledWindowSetPolicy ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    PolicyType ->                           -- hscrollbar_policy
    PolicyType ->                           -- vscrollbar_policy
    m ()
scrolledWindowSetPolicy _obj hscrollbar_policy vscrollbar_policy = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let hscrollbar_policy' = (fromIntegral . fromEnum) hscrollbar_policy
    let vscrollbar_policy' = (fromIntegral . fromEnum) vscrollbar_policy
    gtk_scrolled_window_set_policy _obj' hscrollbar_policy' vscrollbar_policy'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_shadow_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gtk" "ShadowType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "type", argType = TInterface "Gtk" "ShadowType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_set_shadow_type" gtk_scrolled_window_set_shadow_type :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    CUInt ->                                -- type : TInterface "Gtk" "ShadowType"
    IO ()


scrolledWindowSetShadowType ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    ShadowType ->                           -- type
    m ()
scrolledWindowSetShadowType _obj type_ = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let type_' = (fromIntegral . fromEnum) type_
    gtk_scrolled_window_set_shadow_type _obj' type_'
    touchManagedPtr _obj
    return ()

-- method ScrolledWindow::set_vadjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "vadjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_set_vadjustment" gtk_scrolled_window_set_vadjustment :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    Ptr Adjustment ->                       -- vadjustment : TInterface "Gtk" "Adjustment"
    IO ()


scrolledWindowSetVadjustment ::
    (MonadIO m, ScrolledWindowK a, AdjustmentK b) =>
    a ->                                    -- _obj
    b ->                                    -- vadjustment
    m ()
scrolledWindowSetVadjustment _obj vadjustment = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let vadjustment' = unsafeManagedPtrCastPtr vadjustment
    gtk_scrolled_window_set_vadjustment _obj' vadjustment'
    touchManagedPtr _obj
    touchManagedPtr vadjustment
    return ()

-- method ScrolledWindow::unset_placement
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "ScrolledWindow", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_scrolled_window_unset_placement" gtk_scrolled_window_unset_placement :: 
    Ptr ScrolledWindow ->                   -- _obj : TInterface "Gtk" "ScrolledWindow"
    IO ()


scrolledWindowUnsetPlacement ::
    (MonadIO m, ScrolledWindowK a) =>
    a ->                                    -- _obj
    m ()
scrolledWindowUnsetPlacement _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_scrolled_window_unset_placement _obj'
    touchManagedPtr _obj
    return ()