diff --git a/Graphics/UI/Gtk/Abstract/Widget.chs b/Graphics/UI/Gtk/Abstract/Widget.chs
--- a/Graphics/UI/Gtk/Abstract/Widget.chs
+++ b/Graphics/UI/Gtk/Abstract/Widget.chs
@@ -133,7 +133,6 @@
 #if GTK_MAJOR_VERSION < 3
   widgetGetDrawWindow,
 #endif
-  widgetGetWindow,
   widgetDelEvents,
   widgetAddEvents,
   widgetGetEvents,
@@ -174,11 +173,6 @@
   widgetShapeCombineRegion,
   widgetInputShapeCombineRegion,
 #endif
-#if GTK_CHECK_VERSION(2,12,0)
-  widgetGetTooltipWindow,
-  widgetSetTooltipWindow,
-  widgetTriggerTooltipQuery,
-#endif
 #if GTK_MAJOR_VERSION < 3
 #if GTK_CHECK_VERSION(2,14,0)
   widgetGetSnapshot,
@@ -187,6 +181,13 @@
   widgetPath,
   widgetClassPath,
   widgetGetCompositeName,
+#if GTK_CHECK_VERSION(3,0,0)
+  widgetOverrideBackgroundColor,
+  widgetOverrideColor,
+  widgetOverrideFont,
+  widgetOverrideSymbolicColor,
+  widgetOverrideCursor,
+#endif
   widgetModifyStyle,
   widgetGetModifierStyle,
   widgetModifyFg,
@@ -213,6 +214,7 @@
   widgetSetDoubleBuffered,
   widgetSetRedrawOnAllocate,
   widgetSetCompositeName,
+  widgetMnemonicActivate,
 #if GTK_MAJOR_VERSION < 3
   widgetSetScrollAdjustments,
   widgetRegionIntersect,
@@ -245,6 +247,30 @@
   widgetIsComposited,
 #endif
 #endif
+#if GTK_CHECK_VERSION(2,12,0)
+  widgetErrorBell,
+  widgetKeynavFailed,
+  widgetGetTooltipMarkup,
+  widgetSetTooltipMarkup,
+  widgetGetTooltipText,
+  widgetSetTooltipText,
+  widgetGetTooltipWindow,
+  widgetSetTooltipWindow,
+  widgetGetHasTooltip,
+  widgetSetHasTooltip,
+  widgetTriggerTooltipQuery,
+#endif
+#if GTK_CHECK_VERSION(2,14,0)
+  widgetGetWindow,
+#endif
+#if GTK_CHECK_VERSION(3,8,0)
+  widgetRegisterWindow,
+  widgetUnregisterWindow,
+#endif
+#if GTK_CHECK_VERSION(3,0,0)
+  cairoShouldDrawWindow,
+  cairoTransformToWindow,
+#endif
   widgetReparent,
 #if GTK_CHECK_VERSION(2,18,0)
   widgetGetCanFocus,
@@ -262,7 +288,50 @@
   widgetGetClip,
   widgetSetClip,
 #endif
+#if GTK_CHECK_VERSION(2,18,0)
+  widgetGetAppPaintable,
+  widgetGetCanDefault,
+  widgetSetCanDefault,
+  widgetGetHasWindow,
+  widgetSetHasWindow,
+  widgetGetSensitive,
+  widgetIsSensitive,
   widgetGetState,
+  widgetGetVisible,
+#endif
+#if GTK_CHECK_VERSION(3,8,0)
+  widgetIsVisible,
+#endif
+#if GTK_CHECK_VERSION(3,0,0)
+  widgetSetStateFlags,
+  widgetUnsetStateFlags,
+  widgetGetStateFlags,
+#endif
+#if GTK_CHECK_VERSION(2,18,0)
+  widgetGetHasDefault,
+  widgetGetHasFocus,
+#endif
+#if GTK_CHECK_VERSION(3,2,0)
+  widgetHasVisibleFocus,
+#endif
+#if GTK_CHECK_VERSION(2,18,0)
+  widgetHasGrab,
+  widgetIsDrawable,
+  widgetIsToplevel,
+  widgetSetWindow,
+  widgetSetReceivesDefault,
+  widgetGetReceivesDefault,
+#endif
+#if GTK_CHECK_VERSION(3,0,0)
+  widgetDeviceIsShadowed,
+#endif
+#if GTK_CHECK_VERSION(3,4,0)
+  widgetGetModifierMask,
+#endif
+#if GTK_CHECK_VERSION(3,0,0)
+  widgetSetSupportMultidevice,
+  widgetGetSupportMultidevice,
+#endif
   widgetSetState,
 #if GTK_MAJOR_VERSION < 3
   widgetGetSavedState,
@@ -286,6 +355,10 @@
   widgetHeightRequest,
   widgetMarginLeft,
   widgetMarginRight,
+#if GTK_CHECK_VERSION(3,12,0)
+  widgetMarginStart,
+  widgetMarginEnd,
+#endif
   widgetMarginTop,
   widgetMarginBottom,
   widgetVisible,
@@ -307,6 +380,9 @@
 #endif
   widgetExpand,
   widgetHExpand,
+  widgetHExpandSet,
+  widgetVExpand,
+  widgetVExpandSet,
   widgetNoShowAll,
   widgetChildVisible,
 #if GTK_MAJOR_VERSION < 3
@@ -321,6 +397,8 @@
   widgetHasRcStyle,
   widgetGetRealized,
   widgetGetMapped,
+  widgetSetRealized,
+  widgetSetMapped,
 #endif
 #if GTK_CHECK_VERSION(3,0,0)
   widgetGetStyleContext,
@@ -524,6 +602,9 @@
 #if GTK_CHECK_VERSION(3,0,0)
                                         ,StateFlags(..), Align(..)
 #endif
+#if GTK_CHECK_VERSION(3,4,0)
+                                        ,ModifierIntent(..)
+#endif
 					)
 {#import Graphics.Rendering.Pango.Types#}
 {#import Graphics.Rendering.Pango.BasicTypes#}	(FontDescription(FontDescription),
@@ -1425,59 +1506,6 @@
     (castPtr ptrRegion)
 #endif
 
-#if GTK_CHECK_VERSION(2,12,0)
--- | Returns the 'Window' of the current tooltip. This can be the 'Window' created by default, or the
--- custom tooltip window set using 'widgetSetTooltipWindow'.
---
--- * Available since Gtk+ version 2.12
---
-widgetGetTooltipWindow :: WidgetClass self => self
- -> IO Window -- ^ returns The 'Window' of the current tooltip
-widgetGetTooltipWindow self =
-  makeNewObject mkWindow $
-  {# call gtk_widget_get_tooltip_window #}
-    (toWidget self)
-
--- | Replaces the default, usually yellow, window used for displaying tooltips with @customWindow@. GTK+
--- will take care of showing and hiding @customWindow@ at the right moment, to behave likewise as the
--- default tooltip window. If @customWindow@ is 'Nothing', the default tooltip window will be used.
---
--- If the custom window should have the default theming it needs to have the name 'gtk-tooltip', see
--- 'widgetSetName'.
---
--- * Available since Gtk+ version 2.12
---
-widgetSetTooltipWindow :: (WidgetClass self, WindowClass customWindow) => self
- -> Maybe customWindow -- ^ @customWindow@ a 'Window', or 'Nothing'. allow-none.
- -> IO ()
-widgetSetTooltipWindow self customWindow =
-  {# call gtk_widget_set_tooltip_window #}
-    (toWidget self)
-    (maybe (Window nullForeignPtr) toWindow customWindow)
-
--- | Triggers a tooltip query on the display where the toplevel of @widget@ is
--- located. See 'tooltipTriggerTooltipQuery' for more information.
---
--- * Available since Gtk+ version 2.12
---
-widgetTriggerTooltipQuery :: WidgetClass self => self -> IO ()
-widgetTriggerTooltipQuery self =
-  {# call gtk_widget_trigger_tooltip_query #}
-    (toWidget self)
-#endif
-
-#if GTK_CHECK_VERSION(2,14,0)
--- | Returns the widget's window if it is realized, Nothing otherwise
---
--- * Available since Gtk+ version 2.14
---
-widgetGetWindow :: WidgetClass self => self -> IO (Maybe DrawWindow)
-widgetGetWindow self =
-  maybeNull (makeNewGObject mkDrawWindow) $
-  {# call gtk_widget_get_window #}
-    (toWidget self)
-#endif
-
 #if GTK_MAJOR_VERSION < 3
 #if GTK_CHECK_VERSION(2,14,0)
 -- | Create a 'Pixmap' of the contents of the widget and its children.
@@ -1577,6 +1605,105 @@
     (toWidget self)
   >>= maybePeek peekUTFString
 
+#if GTK_CHECK_VERSION(3,0,0)
+-- | Sets the background color to use for a widget.
+--
+-- All other style values are left untouched. See 'widgetOverrideColor'.
+widgetOverrideBackgroundColor :: WidgetClass self => self
+ -> StateType   -- ^ @state@ - the state for which to set the background color.
+ -> Maybe Color -- ^ @color@ - the color to assign, or Nothing to undo the
+                -- effect of previous calls to 'widgetOverrideBackgroundColor'
+ -> IO ()
+widgetOverrideBackgroundColor self state color =
+  maybeWith with color $ \colorPtr ->
+  {# call widget_override_background_color #}
+    (toWidget self)
+    ((fromIntegral . fromEnum) state)
+    (castPtr colorPtr)
+
+-- | Sets the color to use for a widget.
+--
+-- All other style values are left untouched.
+--
+-- This function does not act recursively. Setting the color of a container
+-- does not affect its children. Note that some widgets that you may not think
+-- of as containers, for instance 'Button's, are actually containers.
+--
+-- This API is mostly meant as a quick way for applications to change a
+-- widget appearance. If you are developing a widgets library and intend this
+-- change to be themeable, it is better done by setting meaningful CSS classes
+-- and regions in your widget/container implementation through
+-- 'styleContextAddClass' and 'styleContextAddRegion'.
+--
+-- This way, your widget library can install a 'CssProvider' with the
+-- GTK_STYLE_PROVIDER_PRIORITY_FALLBACK priority in order to provide a default
+-- styling for those widgets that need so, and this theming may fully overridden
+-- by the user’s theme.
+--
+-- Note that for complex widgets this may bring in undesired results (such as
+-- uniform background color everywhere), in these cases it is better to fully
+-- style such widgets through a CssProvider with the
+-- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION priority.
+widgetOverrideColor :: WidgetClass self => self
+ -> StateType   -- ^ @state@ - the state for which to set the color.
+ -> Maybe Color -- ^ @color@ - the color to assign, or @Nothing@ to undo the
+                -- effect of previous calls to 'widgetOverrideColor'
+ -> IO ()
+widgetOverrideColor self state color =
+  maybeWith with color $ \colorPtr ->
+  {# call widget_override_color #}
+    (toWidget self)
+    ((fromIntegral . fromEnum) state)
+    (castPtr colorPtr)
+
+-- | Sets the font to use for a widget. All other style values are left untouched.
+-- See 'widgetOverrideColor'.
+widgetOverrideFont :: WidgetClass self => self
+ -> Maybe FontDescription -- ^ @fontDesc@ - the font description to use, or
+                          -- @Nothing@ to undo the effect of previous calls to
+                          -- 'widgetOverrideFont'.
+ -> IO ()
+widgetOverrideFont self fontDesc =
+  {# call widget_override_font #}
+    (toWidget self)
+    (fromMaybe (FontDescription nullForeignPtr) fontDesc)
+
+-- | Sets the symbolic color to use for a widget.
+--
+-- All other style values are left untouched. See 'widgetOverrideColor'.
+widgetOverrideSymbolicColor :: (WidgetClass self, GlibString string) => self
+ -> string      -- ^ @name@ - the name of the symbolic color to modify.
+ -> Maybe Color -- ^ @color@ - the color to assign, or @Nothing@ to undo the
+                -- effect of previous calls to 'widgetOverrideSymbolicColor'
+ -> IO ()
+widgetOverrideSymbolicColor self name color =
+  withUTFString name $ \namePtr ->
+  maybeWith with color $ \colorPtr ->
+  {# call widget_override_symbolic_color #}
+    (toWidget self)
+    namePtr
+    (castPtr colorPtr)
+
+-- | Sets the cursor color to use in a widget, overriding the cursor-color
+-- and secondary-cursor-color style properties. All other style values are
+-- left untouched. See also 'widgetModifyStyle'.
+--
+-- Note that the alpha values will be ignored.
+widgetOverrideCursor :: WidgetClass self => self
+ -> Maybe Color -- ^ @cursor@ - the color to use for primary cursor, or @Nothing@
+                -- to undo the effect of previous calls to of 'widgetOverrideCursor'.
+ -> Maybe Color -- ^ @secondaryCursor@ - the color to use for secondary cursor, or @Nothing@
+                -- to undo the effect of previous calls to of 'widgetOverrideCursor'.
+ -> IO ()
+widgetOverrideCursor self cursor secondaryCursor =
+  maybeWith with cursor $ \cursorPtr ->
+  maybeWith with secondaryCursor $ \secondaryCursorPtr ->
+  {# call widget_override_cursor #}
+    (toWidget self)
+    (castPtr cursorPtr)
+    (castPtr secondaryCursorPtr)
+#endif
+
 -- | Modifies style values on the widget. Modifications made using this
 -- technique take precedence over style values set via an RC file, however,
 -- they will be overriden if a style is explicitely set on the widget using
@@ -1611,7 +1738,7 @@
 -- Caution: passing the style back to 'widgetModifyStyle' will normally end
 -- up destroying it, because 'widgetModifyStyle' copies the passed-in style and
 -- sets the copy as the new modifier style, thus dropping any reference to the
--- old modifier style. Add a reference to the modifier style if you want to
+-- old modifier styl e. Add a reference to the modifier style if you want to
 -- keep it alive.
 --
 widgetGetModifierStyle :: WidgetClass self => self -> IO RcStyle
@@ -2013,6 +2140,19 @@
     (toWidget self)
     namePtr
 
+-- | Emits the “mnemonic-activate” signal.
+--
+-- The default handler for this signal activates the widget if groupCycling
+-- is @False@, and just grabs the focus if @groupCycling@ is @True@.
+widgetMnemonicActivate :: WidgetClass self => self
+ -> Bool
+ -> IO Bool
+widgetMnemonicActivate self groupCycling =
+  liftM toBool $
+  {# call widget_mnemonic_activate #}
+    (toWidget self)
+    (fromBool groupCycling)
+
 #if GTK_MAJOR_VERSION < 3
 -- %hash c:5c58 d:6895
 -- | For widgets that support scrolling, sets the scroll adjustments and
@@ -2447,6 +2587,237 @@
 #endif
 #endif
 
+#if GTK_CHECK_VERSION(2,12,0)
+-- | Notifies the user about an input-related error on this widget.
+-- If the "gtk-error-bell" setting is @True@, it calls 'drawWindowBeep',
+-- otherwise it does nothing.
+--
+-- Note that the effect of 'drawWindow_beep' can be configured in many
+-- ways, depending on the windowing backend and the desktop environment
+-- or window manager that is used.
+widgetErrorBell :: WidgetClass self => self
+ -> IO ()
+widgetErrorBell self =
+  {# call widget_error_bell #}
+    (toWidget self)
+
+-- | This function should be called whenever keyboard navigation within
+-- a single widget hits a boundary. The function emits the "keynav-failed"
+-- signal on the widget and its return value should be interpreted in a
+-- way similar to the return value of 'widgetChildFocus':
+--
+-- When @True@ is returned, stay in the widget, the failed keyboard
+-- navigation is Ok and/or there is nowhere we can/should move the
+-- focus to.
+--
+-- When @False@ is returned, the caller should continue with keyboard
+-- navigation outside the widget, e.g. by calling 'widgetChildFocus' on
+-- the widget’s toplevel.
+--
+-- The default ::keynav-failed handler returns @True@ for 'DirTabForward'
+-- and 'DirTabBackward'. For the other values of 'DirectionType' it
+-- returns @False@.
+--
+-- Whenever the default handler returns @True@, it also calls
+-- 'widgetErrorBell' to notify the user of the failed keyboard
+-- navigation.
+--
+-- A use case for providing an own implementation of ::keynav-failed
+-- (either by connecting to it or by overriding it) would be a row of
+-- 'Entry' widgets where the user should be able to navigate the entire
+-- row with the cursor keys, as e.g. known from user interfaces that
+-- require entering license keys.
+widgetKeynavFailed :: WidgetClass self => self
+ -> DirectionType -- ^ @direction@ - direction of focus movement
+ -> IO Bool       -- ^ returns @True@ if stopping keyboard navigation is
+                  -- fine, @False@ if the emitting widget should try to handle
+                  -- the keyboard navigation attempt in its parent container(s).
+widgetKeynavFailed self direction =
+  liftM toBool $
+  {# call widget_keynav_failed #}
+    (toWidget self)
+    ((fromIntegral . fromEnum) direction)
+
+-- | Gets the contents of the tooltip for widget.
+widgetGetTooltipMarkup :: (WidgetClass self, GlibString markup) => self
+ -> IO (Maybe markup) -- Returns the tooltip text, or Nothing.
+widgetGetTooltipMarkup self =
+  {# call widget_get_tooltip_markup #}
+    (toWidget self)
+  >>= maybePeek peekUTFString
+
+-- | Sets @markup@ as the contents of the tooltip, which is marked up with the
+-- Pango text markup language.
+--
+-- This function will take care of setting "has-tooltip" to True and of the
+-- default handler for the "query-tooltip" signal.
+--
+-- See also the "tooltip-markup" property and 'tooltipSetMarkup'.
+widgetSetTooltipMarkup :: (WidgetClass self, GlibString markup) => self
+  -> Maybe markup -- ^ the contents of the tooltip for widget, or @Nothing@.
+  -> IO ()
+widgetSetTooltipMarkup self markup =
+  maybeWith withUTFString markup $ \ markupPtr ->
+  {# call widget_set_tooltip_markup #}
+    (toWidget self)
+    markupPtr
+
+-- | Gets the contents of the tooltip for widget.
+widgetGetTooltipText :: (WidgetClass self, GlibString text) => self
+ -> IO (Maybe text) -- Returns the tooltip text, or Nothing.
+widgetGetTooltipText self =
+  {# call widget_get_tooltip_text #}
+    (toWidget self)
+  >>= maybePeek peekUTFString
+
+-- | Sets @text@ as the contents of the tooltip. This function will take care
+-- of setting "has-tooltip" to @True@ and of the default handler for the
+-- "query-tooltip" signal.
+--
+-- See also the "tooltip-text" property and 'tooltipSetText'.
+widgetSetTooltipText :: (WidgetClass widget, GlibString text) => widget
+  -> Maybe text -- ^ the contents of the tooltip for widget, or @Nothing@.
+  -> IO ()
+widgetSetTooltipText widget text =
+  maybeWith withUTFString text $ \ textPtr ->
+  {# call widget_set_tooltip_text #}
+    (toWidget widget)
+    textPtr
+
+-- | Returns the 'Window' of the current tooltip. This can be the 'Window' created by default, or the
+-- custom tooltip window set using 'widgetSetTooltipWindow'.
+--
+-- * Available since Gtk+ version 2.12
+--
+widgetGetTooltipWindow :: WidgetClass self => self
+ -> IO Window -- ^ returns The 'Window' of the current tooltip
+widgetGetTooltipWindow self =
+  makeNewObject mkWindow $
+  {# call gtk_widget_get_tooltip_window #}
+    (toWidget self)
+
+-- | Replaces the default, usually yellow, window used for displaying tooltips with @customWindow@. GTK+
+-- will take care of showing and hiding @customWindow@ at the right moment, to behave likewise as the
+-- default tooltip window. If @customWindow@ is 'Nothing', the default tooltip window will be used.
+--
+-- If the custom window should have the default theming it needs to have the name 'gtk-tooltip', see
+-- 'widgetSetName'.
+--
+-- * Available since Gtk+ version 2.12
+--
+widgetSetTooltipWindow :: (WidgetClass self, WindowClass customWindow) => self
+ -> Maybe customWindow -- ^ @customWindow@ a 'Window', or 'Nothing'. allow-none.
+ -> IO ()
+widgetSetTooltipWindow self customWindow =
+  {# call gtk_widget_set_tooltip_window #}
+    (toWidget self)
+    (maybe (Window nullForeignPtr) toWindow customWindow)
+
+-- | Returns the current value of the has-tooltip property.
+-- See 'widgetHasTooltip' for more information.
+widgetGetHasTooltip :: WidgetClass widget => widget
+ -> IO Bool -- ^ current value of 'widgetHasTooltip' on @widget@.
+widgetGetHasTooltip widget =
+  liftM toBool $
+  {# call widget_get_has_tooltip #}
+    (toWidget widget)
+
+-- | Sets the has-tooltip property on @widget@ to @hasTooltip@.
+-- See 'widgetHasTooltip' for more information.
+widgetSetHasTooltip :: WidgetClass widget => widget
+ -> Bool  -- ^ @hasTooltip@ whether or not @widget@ has a tooltip.
+ -> IO ()
+widgetSetHasTooltip widget hasTooltip =
+  {# call widget_set_has_tooltip #}
+    (toWidget widget)
+    (fromBool hasTooltip)
+
+-- | Triggers a tooltip query on the display where the toplevel of @widget@ is
+-- located. See 'tooltipTriggerTooltipQuery' for more information.
+--
+-- * Available since Gtk+ version 2.12
+--
+widgetTriggerTooltipQuery :: WidgetClass self => self -> IO ()
+widgetTriggerTooltipQuery self =
+  {# call gtk_widget_trigger_tooltip_query #}
+    (toWidget self)
+#endif
+
+#if GTK_CHECK_VERSION(2,14,0)
+-- | Returns the widget's window if it is realized, Nothing otherwise
+--
+-- * Available since Gtk+ version 2.14
+--
+widgetGetWindow :: WidgetClass self => self -> IO (Maybe DrawWindow)
+widgetGetWindow self =
+  maybeNull (makeNewGObject mkDrawWindow) $
+  {# call gtk_widget_get_window #}
+    (toWidget self)
+#endif
+
+#if GTK_CHECK_VERSION(3,8,0)
+-- | Registers a 'DrawWindow' with the widget and sets it up so that the
+-- widget receives events for it. Call 'widgetUnregisterWindow' when
+-- destroying the window.
+widgetRegisterWindow :: (WidgetClass widget, DrawWindowClass window) => widget
+ -> window
+ -> IO ()
+widgetRegisterWindow widget window =
+  {# call widget_register_window #}
+    (toWidget widget)
+    (toDrawWindow window)
+
+-- | Unregisters a 'DrawWindow' from the widget that was previously set up
+-- with 'widgetRegisterWindow'. You need to call this when the window is no
+-- longer used by the widget, such as when you destroy it.
+widgetUnregisterWindow :: (WidgetClass widget, DrawWindowClass window) => widget
+ -> window
+ -> IO ()
+widgetUnregisterWindow widget window =
+  {# call widget_unregister_window #}
+    (toWidget widget)
+    (toDrawWindow window)
+#endif
+
+#if GTK_CHECK_VERSION(3,0,0)
+-- | This function is supposed to be called in "draw" implementations for
+-- widgets that support multiple windows. @cr@ must be untransformed from
+-- invoking of the draw function. This function will return @True@ if the
+-- contents of the given @window@ are supposed to be drawn and @False@
+-- otherwise. Note that when the drawing was not initiated by the windowing
+-- system this function will return @True@ for all windows, so you need to
+-- draw the bottommost window first. Also, do not use “else if” statements to
+-- check which window should be drawn.
+cairoShouldDrawWindow :: DrawWindowClass window
+ => Cairo   -- ^ @cr@ a cairo context
+ -> window  -- ^ @window@ the window to check. @window@ may not be an input-only window.
+ -> IO Bool
+cairoShouldDrawWindow cr window =
+  liftM toBool $
+  {# call cairo_should_draw_window #}
+    (castPtr $ unCairo cr)
+    (toDrawWindow window)
+
+-- | Transforms the given cairo context @cr@ that from @widget@-relative
+-- coordinates to @window@-relative coordinates. If the @widget@’s window is
+-- not an ancestor of @window@, no modification will be applied.
+--
+-- This is the inverse to the transformation GTK applies when preparing an
+-- expose event to be emitted with the “draw” signal. It is intended to help
+-- porting multiwindow widgets from GTK+ 2 to the rendering architecture of
+-- GTK+ 3.
+cairoTransformToWindow :: (WidgetClass widget, DrawWindowClass window)
+ => Cairo  -- ^ @cr@ the cairo context to transform
+ -> widget -- ^ @widget@ the widget the context is currently centered for
+ -> window -- ^ @window@ the window to transform the context to
+ -> IO ()
+cairoTransformToWindow cr widget window =
+  {# call gtk_cairo_transform_to_window #}
+    (castPtr $ unCairo cr)
+    (toWidget widget)
+    (toDrawWindow window)
+#endif
+
 -- | Moves a widget from one 'Container' to another.
 --
 widgetReparent :: (WidgetClass self, WidgetClass newParent) => self
@@ -2542,6 +2913,81 @@
 #endif
 
 #if GTK_CHECK_VERSION(2,18,0)
+-- | Determines whether the application intends to draw on the widget in an
+-- "draw" handler.
+-- See 'widgetSetAppPaintable'.
+widgetGetAppPaintable :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the @widget@ is app paintable.
+widgetGetAppPaintable widget =
+  liftM toBool $
+  {#call widget_get_app_paintable #}
+    (toWidget widget)
+
+-- | Determines whether @widget@ can be a default widget.
+-- See 'widgetSetCanDefault'.
+widgetGetCanDefault :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ can be a default widget, @False@ otherwise.
+widgetGetCanDefault widget =
+  liftM toBool $
+  {#call gtk_widget_get_can_default #}
+    (toWidget widget)
+
+-- | Specifies whether @widget@ can be a default widget.
+-- See 'widgetGrabDefault' for details about the meaning of "default".
+widgetSetCanDefault :: WidgetClass widget => widget
+ -> Bool  -- ^ @canDefault@ whether or not @widget@ can be a default widget.
+ -> IO ()
+widgetSetCanDefault widget canDefault =
+  {# call widget_set_can_default #}
+    (toWidget widget)
+    (fromBool canDefault)
+
+-- | Determines whether @widget@ has a 'DrawWindow' of its own. See 'widgetSetHasWindow'.
+widgetGetHasWindow :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ has a window, @False@ otherwise.
+widgetGetHasWindow widget =
+  liftM toBool $
+  {#call widget_get_has_window #}
+    (toWidget widget)
+
+-- | Specifies whether @widget@ has a 'DrawWindow' of its own. Note that all
+-- realized widgets have a non-NULL "window" pointer ('widgetGetWindow' never
+-- returns a NULL window when a widget is realized), but for many of them it's
+-- actually the 'DrawWindow' of one of its parent widgets. Widgets that do not
+-- create a window for themselves in "realize" must announce this by calling
+-- this function with @hasWindow@ = @False@.
+--
+-- This function should only be called by widget implementations, and they
+-- should call it in their @init()@ function.
+widgetSetHasWindow :: WidgetClass widget => widget
+ -> Bool  -- ^ @hasWindow@ whether or not @widget@ has a window.
+ -> IO ()
+widgetSetHasWindow widget hasWindow =
+  {# call widget_set_has_window #}
+    (toWidget widget)
+    (fromBool hasWindow)
+
+-- | Returns the @widget@’s sensitivity (in the sense of returning the value
+-- that has been set using 'widgetSetSensitive').
+--
+-- The effective sensitivity of a widget is however determined by both its own
+-- and its parent widget’s sensitivity. See 'widgetIsSensitive'.
+widgetGetSensitive :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget is sensitive.
+widgetGetSensitive widget =
+  liftM toBool $
+  {#call widget_get_sensitive #}
+    (toWidget widget)
+
+-- | Returns the widget’s effective sensitivity, which means it is sensitive
+-- itself and also its parent widget is sensitive.
+widgetIsSensitive :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget is effectively sensitive.
+widgetIsSensitive widget =
+  liftM toBool $
+  {#call widget_is_sensitive #}
+    (toWidget widget)
+
 -- | Retrieve the current state of the widget.
 --
 -- * The state refers to different modes of user interaction, see
@@ -2552,8 +2998,246 @@
   liftM (toEnum . fromIntegral) $
   {#call widget_get_state#}
     (toWidget widget)
+
+-- | Determines whether the widget is visible. If you want to take into
+--  account whether the widget’s parent is also marked as visible, use
+-- 'widgetIsVisible' instead.
+--
+-- This function does not check if the widget is obscured in any way.
+-- See 'widgetSetVisible'.
+widgetGetVisible :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget is visible.
+widgetGetVisible widget =
+  liftM toBool $
+  {#call widget_get_visible #}
+    (toWidget widget)
 #endif
 
+#if GTK_CHECK_VERSION(3,8,0)
+-- | Determines whether the widget and all its parents are marked as visible.
+--
+-- This function does not check if the widget is obscured in any way.
+--
+-- See also 'widgetGetVisible' and 'widgetSetVisible'
+widgetIsVisible :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget and all its parents are visible.
+widgetIsVisible widget =
+  liftM toBool $
+  {#call widget_is_visible #}
+    (toWidget widget)
+#endif
+
+#if GTK_CHECK_VERSION(3,0,0)
+-- | This function is for use in widget implementations. Turns on flag values
+-- in the current widget state (insensitive, prelighted, etc.).
+--
+-- This function accepts the values 'StateFlagDirLtr' and 'StateFlagDirRtl'
+-- but ignores them. If you want to set the widget's direction, use
+-- 'widgetSetDirection'.
+--
+-- It is worth mentioning that any other state than StateFlagInsensitive',
+-- will be propagated down to all non-internal children if @widget@ is a
+-- 'Container', while 'StateFlagInsensitive' itself will be propagated down
+-- to all 'Container' children by different means than turning on the state
+-- flag down the hierarchy, both 'widgetGetStateFlags' and
+-- 'widgetIsSensitive' will make use of these.
+widgetSetStateFlags :: WidgetClass widget => widget
+ -> [StateFlags] -- ^ @flags@ State flags to turn on
+ -> Bool         -- ^ @clear@ Whether to clear state before turning on @flags@
+ -> IO ()
+widgetSetStateFlags widget flags clear =
+  {# call widget_set_state_flags #}
+    (toWidget widget)
+    (fromIntegral $ fromFlags flags)
+    (fromBool clear)
+
+-- | This function is for use in widget implementations. Turns off flag
+-- values for the current widget state (insensitive, prelighted, etc.).
+-- See 'widgetSetStateFlags'.
+widgetUnsetStateFlags :: WidgetClass widget => widget
+ -> [StateFlags] -- ^ @flags@ State flags to turn off
+ -> IO ()
+widgetUnsetStateFlags widget flags =
+  {# call widget_unset_state_flags #}
+    (toWidget widget)
+    (fromIntegral $ fromFlags flags)
+
+-- | Returns the widget state as a flag set. It is worth mentioning that the
+-- effective StateFlagInsensitive state will be returned, that is, also based
+-- on parent insensitivity, even if @widget@ itself is sensitive.
+widgetGetStateFlags :: WidgetClass widget => widget
+ -> IO [StateFlags] -- ^ Returns the state flags for @widget@
+widgetGetStateFlags widget =
+  liftM (toFlags . fromIntegral) $
+  {# call widget_get_state_flags #}
+    (toWidget widget)
+#endif
+
+#if GTK_CHECK_VERSION(2,18,0)
+-- | Determines whether @widget@ is the current default widget within its
+-- toplevel. See 'widgetSetCanDefault'.
+widgetGetHasDefault :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ is the current default widget within its toplevel, @False@ otherwise.
+widgetGetHasDefault widget =
+  liftM toBool $
+  {#call widget_has_default #}
+    (toWidget widget)
+
+-- | Determines if the @widget@ has the global input focus.
+-- See 'widgetIsFocus' for the difference between having the global input
+-- focus, and only having the focus within a toplevel.
+widgetGetHasFocus :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ has the global input focus.
+widgetGetHasFocus widget =
+  liftM toBool $
+  {#call widget_has_focus #}
+    (toWidget widget)
+#endif
+
+#if GTK_CHECK_VERSION(3,2,0)
+-- | Determines if the widget should show a visible indication that it has the
+-- global input focus. This is a convenience function for use in ::draw
+-- handlers that takes into account whether focus indication should currently
+-- be shown in the toplevel window of @widget@. See 'windowGetFocusVisible'
+-- for more information about focus indication.
+--
+-- To find out if the widget has the global input focus, use 'widgetHasFocus'.
+widgetHasVisibleFocus :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget should display a “focus rectangle”
+widgetHasVisibleFocus widget =
+  liftM toBool $
+  {# call widget_has_visible_focus #}
+    (toWidget widget)
+#endif
+
+#if GTK_CHECK_VERSION(2,18,0)
+-- | Determines whether the widget is currently grabbing events, so it is the
+-- only widget receiving input events (keyboard and mouse).
+--
+-- See also 'grabAdd'.
+widgetHasGrab :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if the widget is in the grab_widgets stack
+widgetHasGrab widget =
+  liftM toBool $
+  {# call widget_has_grab #}
+    (toWidget widget)
+
+-- | Determines whether @widget@ can be drawn to. A widget can be drawn to if
+-- it is mapped and visible.
+widgetIsDrawable :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ is drawable, @False@ otherwise
+widgetIsDrawable widget =
+  liftM toBool $
+  {# call widget_is_drawable #}
+    (toWidget widget)
+
+-- | Determines whether @widget@ is a toplevel widget.
+--
+-- Currently only 'Window' and 'Invisible' (and out-of-process 'Plugs') are
+-- toplevel widgets. Toplevel widgets have no parent widget.
+widgetIsToplevel :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ is a toplevel, @False@ otherwise
+widgetIsToplevel widget =
+  liftM toBool $
+  {# call widget_is_toplevel #}
+    (toWidget widget)
+
+-- | Sets a widget’s window. This function should only be used in a widget’s
+-- “realize” implementation. The window passed is usually either new window
+-- created with 'drawWindowNew', or the window of its parent widget as
+-- returned by 'widgetGetParentWindow'.
+--
+-- Widgets must indicate whether they will create their own 'DrawWindow' by
+-- calling 'widgetSetHasWindow'. This is usually done in the widget’s init()
+-- function.
+--
+-- Note that this function does not add any reference to window.
+widgetSetWindow :: (WidgetClass widget, DrawWindowClass window) => widget
+ -> window
+ -> IO ()
+widgetSetWindow widget window =
+  {# call widget_set_window #}
+    (toWidget widget)
+    (toDrawWindow window)
+
+-- | Specifies whether @widget@ will be treated as the default widget within
+-- its toplevel when it has the focus, even if another widget is the default.
+--
+-- See 'widgetGrabDefault' for details about the meaning of “default”.
+widgetSetReceivesDefault :: WidgetClass widget => widget
+ -> Bool -- ^ @receivesDefault@ whether or not widget can be a default widget.
+ -> IO ()
+widgetSetReceivesDefault widget receivesDefault =
+  {# call widget_set_receives_default #}
+    (toWidget widget)
+    (fromBool receivesDefault)
+
+-- | Determines whether @widget@ is always treated as the default widget
+-- within its toplevel when it has the focus, even if another widget is the
+-- default.
+--
+-- See 'widgetSetReceivesDefault'.
+widgetGetReceivesDefault :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ acts as the default widget when focussed, @False@ otherwise
+widgetGetReceivesDefault widget =
+  liftM toBool $
+  {# call widget_get_receives_default #}
+    (toWidget widget)
+#endif
+
+#if GTK_CHECK_VERSION(3,0,0)
+-- | Returns @True@ if device has been shadowed by a GTK+ device grab on
+-- another widget, so it would stop sending events to widget. This may be
+-- used in the “grab-notify” signal to check for specific devices.
+-- See 'deviceGrabAdd'.
+widgetDeviceIsShadowed :: (WidgetClass widget, DeviceClass device) => widget
+ -> device
+ -> IO Bool -- ^ Returns @True@ if there is an ongoing grab on device by another 'Widget' than widget.
+widgetDeviceIsShadowed widget device =
+  liftM toBool $
+  {# call widget_device_is_shadowed #}
+    (toWidget widget)
+    (toDevice device)
+#endif
+
+#if GTK_CHECK_VERSION(3,4,0)
+-- | Returns the modifier mask the @widget@’s windowing system backend uses
+-- for a particular purpose.
+--
+-- See 'keymapGetModifierMask'.
+widgetGetModifierMask :: WidgetClass widget => widget
+ -> ModifierIntent -- ^ @intent@ the use case for the modifier mask
+ -> IO [Modifier]  -- ^ Returns the modifier mask used for @intent@.
+widgetGetModifierMask widget intent =
+  liftM (toFlags . fromIntegral) $
+  {# call widget_get_modifier_mask #}
+    (toWidget widget)
+    ((fromIntegral . fromEnum) intent)
+#endif
+
+#if GTK_CHECK_VERSION(3,0,0)
+-- | Enables or disables multiple pointer awareness. If this setting is
+-- @True@, widget will start receiving multiple, per device enter/leave
+-- events. Note that if custom 'DrawWindows' are created in “realize”,
+-- 'windowSetSupportMultidevice' will have to be called manually on them.
+widgetSetSupportMultidevice :: WidgetClass widget => widget
+ -> Bool -- ^ @supportMultidevice@ @True@ to support input from multiple devices.
+ -> IO ()
+widgetSetSupportMultidevice widget supportMultidevice =
+  {# call widget_set_support_multidevice #}
+    (toWidget widget)
+    (fromBool supportMultidevice)
+
+-- | Returns @True@ if @widget@ is multiple pointer aware.
+-- See 'widgetSetSupportMultidevice' for more information.
+widgetGetSupportMultidevice :: WidgetClass widget => widget
+ -> IO Bool -- ^ Returns @True@ if @widget@ is multidevice aware.
+widgetGetSupportMultidevice widget =
+  liftM toBool $
+  {# call widget_get_support_multidevice #}
+    (toWidget widget)
+#endif
+
 -- | This function is for use in widget implementations. Sets the state of a
 -- widget (insensitive, prelighted, etc.) Usually you should set the state
 -- using wrapper functions such as 'widgetSetSensitive'.
@@ -2591,6 +3275,14 @@
 widgetMarginRight :: WidgetClass self => Attr self Int
 widgetMarginRight = newAttrFromIntProperty "margin-right"
 
+#if GTK_CHECK_VERSION(3,12,0)
+widgetMarginStart :: WidgetClass self => Attr self Int
+widgetMarginStart = newAttrFromIntProperty "margin-start"
+
+widgetMarginEnd :: WidgetClass self => Attr self Int
+widgetMarginEnd = newAttrFromIntProperty "margin-end"
+#endif
+
 widgetMarginTop :: WidgetClass self => Attr self Int
 widgetMarginTop = newAttrFromIntProperty "margin-top"
 
@@ -2756,13 +3448,34 @@
 widgetExpand :: WidgetClass self => Attr self Bool
 widgetExpand = newAttrFromBoolProperty "expand"
 
--- | Whether to expand in both directions. Setting this sets both 'widgetHExpand' and 'widgetVExpand'
+-- | Whether to expand horizontally. See 'widgetSetHExpand'
 --
 -- Default value: @False@
 --
 widgetHExpand :: WidgetClass self => Attr self Bool
 widgetHExpand = newAttrFromBoolProperty "hexpand"
 
+-- | Whether to use the “hexpand” property. See 'widgetGetHExpandSet'.
+--
+-- Default value: @False@
+--
+widgetHExpandSet :: WidgetClass self => Attr self Bool
+widgetHExpandSet = newAttrFromBoolProperty "hexpand-set"
+
+-- | Whether to expand vertically. See 'widgetSetVExpand'.
+--
+-- Default value: @False@
+--
+widgetVExpand :: WidgetClass self => Attr self Bool
+widgetVExpand = newAttrFromBoolProperty "vexpand"
+
+-- | Whether to use the “vexpand” property. See 'widgetGetVExpandSet'.
+--
+-- Default value: @False@
+--
+widgetVExpandSet :: WidgetClass self => Attr self Bool
+widgetVExpandSet = newAttrFromBoolProperty "vexpand-set"
+
 -- %hash c:1605 d:48ea
 -- | Whether 'widgetShowAll' should not affect this widget.
 --
@@ -2877,6 +3590,30 @@
   {#call gtk_widget_get_mapped #}
     (toWidget self)
 
+-- | Marks the @widget@ as being realized. This function must only be called
+-- after all 'DrawWindows' for the widget have been created and registered.
+--
+-- This function should only ever be called in a derived widget's “realize”
+-- or “unrealize” implementation.
+widgetSetRealized :: WidgetClass widget => widget
+ -> Bool -- ^ @realized@ @True@ to mark the widget realized.
+ -> IO ()
+widgetSetRealized widget realized =
+  {# call widget_set_realized #}
+    (toWidget widget)
+    (fromBool realized)
+
+-- | Marks the @widget@ as being realized.
+--
+-- This function should only ever be called in a derived widget's “map” or
+-- “unmap” implementation.
+widgetSetMapped :: WidgetClass widget => widget
+ -> Bool -- ^ @mapped@ @True@ to mark the widget as mapped.
+ -> IO ()
+widgetSetMapped widget mapped =
+  {# call widget_set_mapped #}
+    (toWidget widget)
+    (fromBool mapped)
 #endif
 
 #if GTK_CHECK_VERSION(3,0,0)
diff --git a/Graphics/UI/Gtk/Gdk/Enums.chs b/Graphics/UI/Gtk/Gdk/Enums.chs
--- a/Graphics/UI/Gtk/Gdk/Enums.chs
+++ b/Graphics/UI/Gtk/Gdk/Enums.chs
@@ -31,6 +31,9 @@
   DragAction(..),
   EventMask(..),
   Modifier(..),
+#if GTK_CHECK_VERSION(3,4,0)
+  ModifierIntent(..),
+#endif
   NotifyType(..),
   ScrollDirection(..),
   VisibilityState(..),
@@ -165,6 +168,10 @@
 #endif
 
 instance Flags Modifier
+
+#if GTK_CHECK_VERSION(3,4,0)
+{#enum ModifierIntent {underscoreToCase} deriving(Eq,Show) #}
+#endif
 
 #if GTK_MAJOR_VERSION < 3
 -- | specify which input extension a widget desires
diff --git a/Graphics/UI/Gtk/Gdk/EventM.hsc b/Graphics/UI/Gtk/Gdk/EventM.hsc
--- a/Graphics/UI/Gtk/Gdk/EventM.hsc
+++ b/Graphics/UI/Gtk/Gdk/EventM.hsc
@@ -1,5 +1,8 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE EmptyDataDecls #-}
+#if MIN_VERSION_base(4,8,0)
+{-# LANGUAGE FlexibleContexts #-}
+#endif
 -- -*-haskell-*-
 
 #include <gtk/gtk.h>
diff --git a/Graphics/UI/Gtk/General/hsgthread.c b/Graphics/UI/Gtk/General/hsgthread.c
--- a/Graphics/UI/Gtk/General/hsgthread.c
+++ b/Graphics/UI/Gtk/General/hsgthread.c
@@ -55,12 +55,37 @@
 
 gboolean gtk2hs_run_finalizers(gpointer data);
 
+#if defined( WIN32 ) && GLIB_CHECK_VERSION(2,32,0)
+static GRecMutex recursive_mutex;
+
+void imp_rec_lock() {
+    g_rec_mutex_lock(&recursive_mutex);
+}
+
+void imp_rec_unlock() {
+    g_rec_mutex_unlock(&recursive_mutex);
+}
+#endif
+
 /* Initialize the default _fmode on WIN32. */
 void gtk2hs_initialise (void) {
 #if defined( WIN32 ) && defined( GTK2HS_SET_FMODE_BINARY )
 	/* Some Windows GTK binraries (current Fedora MinGW ones) do */
 	/* not open files in binary mode.  This is a work around.    */
-    _fmode = _O_BINARY;
+    HANDLE handle = LoadLibrary("MSVCRT.dll");
+    if(!handle) { 
+        fprintf(stderr, "Warning: failed to load MSVCRT.dll, ");
+        fprintf(stderr, "binary mode was not set!\n");
+        return;
+    }
+    
+    int *_fmode_ptr = GetProcAddress(handle, "_fmode");
+    if(!_fmode_ptr) {
+        fprintf(stderr, "Warning: failed to load address of _fmode from MSVCRT.dll, ");
+        fprintf(stderr, "binary mode was not set!\n");
+        return;
+    }
+    *_fmode_ptr = _O_BINARY;
 #endif
 }
 
@@ -78,6 +103,12 @@
     InitializeCriticalSection(&gtk2hs_finalizer_mutex);
 #else
     g_static_mutex_init(&gtk2hs_finalizer_mutex);
+#endif
+
+#if defined( WIN32 ) && GLIB_CHECK_VERSION(2,32,0)
+    g_rec_mutex_init(&recursive_mutex);
+    
+    gdk_threads_set_lock_functions(imp_rec_lock, imp_rec_unlock);
 #endif
     g_thread_init(NULL);
     gdk_threads_init();
diff --git a/Graphics/UI/Gtk/ModelView/Types.chs b/Graphics/UI/Gtk/ModelView/Types.chs
--- a/Graphics/UI/Gtk/ModelView/Types.chs
+++ b/Graphics/UI/Gtk/ModelView/Types.chs
@@ -76,7 +76,6 @@
 {#import Graphics.UI.Gtk.Types#}	(TreeModel, TreeModelSort, TreeModelFilter,
                                    Pixbuf)
 import Data.Char ( isDigit )
-import Data.Word (Word32)
 import Control.Monad ( liftM )
 
 {# context lib="gtk" prefix="gtk" #}
diff --git a/Graphics/UI/Gtk/Types.chs b/Graphics/UI/Gtk/Types.chs
--- a/Graphics/UI/Gtk/Types.chs
+++ b/Graphics/UI/Gtk/Types.chs
@@ -86,10 +86,22 @@
   toRecentManager, 
   mkRecentManager, unRecentManager,
   castToRecentManager, gTypeRecentManager,
+  Drawable(Drawable), DrawableClass,
+  toDrawable, 
+  mkDrawable, unDrawable,
+  castToDrawable, gTypeDrawable,
   DrawWindow(DrawWindow), DrawWindowClass,
   toDrawWindow, 
   mkDrawWindow, unDrawWindow,
   castToDrawWindow, gTypeDrawWindow,
+  Pixmap(Pixmap), PixmapClass,
+  toPixmap, 
+  mkPixmap, unPixmap,
+  castToPixmap, gTypePixmap,
+  Colormap(Colormap), ColormapClass,
+  toColormap, 
+  mkColormap, unColormap,
+  castToColormap, gTypeColormap,
   Screen(Screen), ScreenClass,
   toScreen, 
   mkScreen, unScreen,
@@ -106,10 +118,6 @@
   toDevice, 
   mkDevice, unDevice,
   castToDevice, gTypeDevice,
-  FrameClock(FrameClock), FrameClockClass,
-  toFrameClock, 
-  mkFrameClock, unFrameClock,
-  castToFrameClock, gTypeFrameClock,
   Settings(Settings), SettingsClass,
   toSettings, 
   mkSettings, unSettings,
@@ -162,6 +170,10 @@
   toTextMark, 
   mkTextMark, unTextMark,
   castToTextMark, gTypeTextMark,
+  Object(Object), ObjectClass,
+  toObject, 
+  mkObject, unObject,
+  castToObject, gTypeObject,
   RecentFilter(RecentFilter), RecentFilterClass,
   toRecentFilter, 
   mkRecentFilter, unRecentFilter,
@@ -186,6 +198,10 @@
   toAccelLabel, 
   mkAccelLabel, unAccelLabel,
   castToAccelLabel, gTypeAccelLabel,
+  TipsQuery(TipsQuery), TipsQueryClass,
+  toTipsQuery, 
+  mkTipsQuery, unTipsQuery,
+  castToTipsQuery, gTypeTipsQuery,
   Arrow(Arrow), ArrowClass,
   toArrow, 
   mkArrow, unArrow,
@@ -258,6 +274,14 @@
   toFontButton, 
   mkFontButton, unFontButton,
   castToFontButton, gTypeFontButton,
+  OptionMenu(OptionMenu), OptionMenuClass,
+  toOptionMenu, 
+  mkOptionMenu, unOptionMenu,
+  castToOptionMenu, gTypeOptionMenu,
+  Item(Item), ItemClass,
+  toItem, 
+  mkItem, unItem,
+  castToItem, gTypeItem,
   MenuItem(MenuItem), MenuItemClass,
   toMenuItem, 
   mkMenuItem, unMenuItem,
@@ -282,10 +306,10 @@
   toSeparatorMenuItem, 
   mkSeparatorMenuItem, unSeparatorMenuItem,
   castToSeparatorMenuItem, gTypeSeparatorMenuItem,
-  Overlay(Overlay), OverlayClass,
-  toOverlay, 
-  mkOverlay, unOverlay,
-  castToOverlay, gTypeOverlay,
+  ListItem(ListItem), ListItemClass,
+  toListItem, 
+  mkListItem, unListItem,
+  castToListItem, gTypeListItem,
   Window(Window), WindowClass,
   toWindow, 
   mkWindow, unWindow,
@@ -310,6 +334,10 @@
   toColorSelectionDialog, 
   mkColorSelectionDialog, unColorSelectionDialog,
   castToColorSelectionDialog, gTypeColorSelectionDialog,
+  FileSelection(FileSelection), FileSelectionClass,
+  toFileSelection, 
+  mkFileSelection, unFileSelection,
+  castToFileSelection, gTypeFileSelection,
   FileChooserDialog(FileChooserDialog), FileChooserDialogClass,
   toFileChooserDialog, 
   mkFileChooserDialog, unFileChooserDialog,
@@ -318,6 +346,10 @@
   toFontSelectionDialog, 
   mkFontSelectionDialog, unFontSelectionDialog,
   castToFontSelectionDialog, gTypeFontSelectionDialog,
+  InputDialog(InputDialog), InputDialogClass,
+  toInputDialog, 
+  mkInputDialog, unInputDialog,
+  castToInputDialog, gTypeInputDialog,
   MessageDialog(MessageDialog), MessageDialogClass,
   toMessageDialog, 
   mkMessageDialog, unMessageDialog,
@@ -346,6 +378,10 @@
   toComboBox, 
   mkComboBox, unComboBox,
   castToComboBox, gTypeComboBox,
+  ComboBoxEntry(ComboBoxEntry), ComboBoxEntryClass,
+  toComboBoxEntry, 
+  mkComboBoxEntry, unComboBoxEntry,
+  castToComboBoxEntry, gTypeComboBoxEntry,
   ToolItem(ToolItem), ToolItemClass,
   toToolItem, 
   mkToolItem, unToolItem,
@@ -414,6 +450,10 @@
   toInfoBar, 
   mkInfoBar, unInfoBar,
   castToInfoBar, gTypeInfoBar,
+  Combo(Combo), ComboClass,
+  toCombo, 
+  mkCombo, unCombo,
+  castToCombo, gTypeCombo,
   FileChooserButton(FileChooserButton), FileChooserButtonClass,
   toFileChooserButton, 
   mkFileChooserButton, unFileChooserButton,
@@ -422,6 +462,14 @@
   toStatusbar, 
   mkStatusbar, unStatusbar,
   castToStatusbar, gTypeStatusbar,
+  CList(CList), CListClass,
+  toCList, 
+  mkCList, unCList,
+  castToCList, gTypeCList,
+  CTree(CTree), CTreeClass,
+  toCTree, 
+  mkCTree, unCTree,
+  castToCTree, gTypeCTree,
   Fixed(Fixed), FixedClass,
   toFixed, 
   mkFixed, unFixed,
@@ -446,6 +494,10 @@
   toLayout, 
   mkLayout, unLayout,
   castToLayout, gTypeLayout,
+  List(List), ListClass,
+  toList, 
+  mkList, unList,
+  castToList, gTypeList,
   MenuShell(MenuShell), MenuShellClass,
   toMenuShell, 
   mkMenuShell, unMenuShell,
@@ -506,6 +558,18 @@
   toSpinButton, 
   mkSpinButton, unSpinButton,
   castToSpinButton, gTypeSpinButton,
+  Ruler(Ruler), RulerClass,
+  toRuler, 
+  mkRuler, unRuler,
+  castToRuler, gTypeRuler,
+  HRuler(HRuler), HRulerClass,
+  toHRuler, 
+  mkHRuler, unHRuler,
+  castToHRuler, gTypeHRuler,
+  VRuler(VRuler), VRulerClass,
+  toVRuler, 
+  mkVRuler, unVRuler,
+  castToVRuler, gTypeVRuler,
   Range(Range), RangeClass,
   toRange, 
   mkRange, unRange,
@@ -550,14 +614,14 @@
   toInvisible, 
   mkInvisible, unInvisible,
   castToInvisible, gTypeInvisible,
+  Preview(Preview), PreviewClass,
+  toPreview, 
+  mkPreview, unPreview,
+  castToPreview, gTypePreview,
   ProgressBar(ProgressBar), ProgressBarClass,
   toProgressBar, 
   mkProgressBar, unProgressBar,
   castToProgressBar, gTypeProgressBar,
-  LevelBar(LevelBar), LevelBarClass,
-  toLevelBar, 
-  mkLevelBar, unLevelBar,
-  castToLevelBar, gTypeLevelBar,
   Adjustment(Adjustment), AdjustmentClass,
   toAdjustment, 
   mkAdjustment, unAdjustment,
@@ -574,6 +638,14 @@
   toIMContextSimple, 
   mkIMContextSimple, unIMContextSimple,
   castToIMContextSimple, gTypeIMContextSimple,
+  ItemFactory(ItemFactory), ItemFactoryClass,
+  toItemFactory, 
+  mkItemFactory, unItemFactory,
+  castToItemFactory, gTypeItemFactory,
+  Tooltips(Tooltips), TooltipsClass,
+  toTooltips, 
+  mkTooltips, unTooltips,
+  castToTooltips, gTypeTooltips,
   TreeViewColumn(TreeViewColumn), TreeViewColumnClass,
   toTreeViewColumn, 
   mkTreeViewColumn, unTreeViewColumn,
@@ -622,18 +694,6 @@
   toBuilder, 
   mkBuilder, unBuilder,
   castToBuilder, gTypeBuilder,
-  StyleContext(StyleContext), StyleContextClass,
-  toStyleContext, 
-  mkStyleContext, unStyleContext,
-  castToStyleContext, gTypeStyleContext,
-  StyleProvider(StyleProvider), StyleProviderClass,
-  toStyleProvider, 
-  mkStyleProvider, unStyleProvider,
-  castToStyleProvider, gTypeStyleProvider,
-  CssProvider(CssProvider), CssProviderClass,
-  toCssProvider, 
-  mkCssProvider, unCssProvider,
-  castToCssProvider, gTypeCssProvider,
   CellLayout(CellLayout), CellLayoutClass,
   toCellLayout, 
   mkCellLayout, unCellLayout,
@@ -745,7 +805,11 @@
   FileChooser(FileChooser), FileChooserClass,
   toFileChooser, 
   mkFileChooser, unFileChooser,
-  castToFileChooser, gTypeFileChooser
+  castToFileChooser, gTypeFileChooser,
+  GC(GC), GCClass,
+  toGC, 
+  mkGC, unGC,
+  castToGC, gTypeGC
   ) where
 
 import Foreign.ForeignPtr (ForeignPtr, castForeignPtr)
@@ -1051,6 +1115,29 @@
 gTypeRecentManager =
   {# call fun unsafe gtk_recent_manager_get_type #}
 
+-- ******************************************************************* Drawable
+
+{#pointer *GdkDrawable as Drawable foreign newtype #} deriving (Eq,Ord)
+
+mkDrawable = (Drawable, objectUnrefFromMainloop)
+unDrawable (Drawable o) = o
+
+class GObjectClass o => DrawableClass o
+toDrawable :: DrawableClass o => o -> Drawable
+toDrawable = unsafeCastGObject . toGObject
+
+instance DrawableClass Drawable
+instance GObjectClass Drawable where
+  toGObject = GObject . castForeignPtr . unDrawable
+  unsafeCastGObject = Drawable . castForeignPtr . unGObject
+
+castToDrawable :: GObjectClass obj => obj -> Drawable
+castToDrawable = castTo gTypeDrawable "Drawable"
+
+gTypeDrawable :: GType
+gTypeDrawable =
+  {# call fun unsafe gdk_drawable_get_type #}
+
 -- ***************************************************************** DrawWindow
 
 {#pointer *GdkWindow as DrawWindow foreign newtype #} deriving (Eq,Ord)
@@ -1058,11 +1145,12 @@
 mkDrawWindow = (DrawWindow, objectUnrefFromMainloop)
 unDrawWindow (DrawWindow o) = o
 
-class GObjectClass o => DrawWindowClass o
+class DrawableClass o => DrawWindowClass o
 toDrawWindow :: DrawWindowClass o => o -> DrawWindow
 toDrawWindow = unsafeCastGObject . toGObject
 
 instance DrawWindowClass DrawWindow
+instance DrawableClass DrawWindow
 instance GObjectClass DrawWindow where
   toGObject = GObject . castForeignPtr . unDrawWindow
   unsafeCastGObject = DrawWindow . castForeignPtr . unGObject
@@ -1072,8 +1160,55 @@
 
 gTypeDrawWindow :: GType
 gTypeDrawWindow =
-  {# call fun unsafe gdk_window_get_type #}
+  {# call fun unsafe gdk_window_object_get_type #}
 
+-- ********************************************************************* Pixmap
+
+{#pointer *GdkPixmap as Pixmap foreign newtype #} deriving (Eq,Ord)
+
+mkPixmap = (Pixmap, objectUnrefFromMainloop)
+unPixmap (Pixmap o) = o
+
+class DrawableClass o => PixmapClass o
+toPixmap :: PixmapClass o => o -> Pixmap
+toPixmap = unsafeCastGObject . toGObject
+
+instance PixmapClass Pixmap
+instance DrawableClass Pixmap
+instance GObjectClass Pixmap where
+  toGObject = GObject . castForeignPtr . unPixmap
+  unsafeCastGObject = Pixmap . castForeignPtr . unGObject
+
+castToPixmap :: GObjectClass obj => obj -> Pixmap
+castToPixmap = castTo gTypePixmap "Pixmap"
+
+gTypePixmap :: GType
+gTypePixmap =
+  {# call fun unsafe gdk_pixmap_get_type #}
+
+-- ******************************************************************* Colormap
+
+{#pointer *GdkColormap as Colormap foreign newtype #} deriving (Eq,Ord)
+
+mkColormap = (Colormap, objectUnrefFromMainloop)
+unColormap (Colormap o) = o
+
+class GObjectClass o => ColormapClass o
+toColormap :: ColormapClass o => o -> Colormap
+toColormap = unsafeCastGObject . toGObject
+
+instance ColormapClass Colormap
+instance GObjectClass Colormap where
+  toGObject = GObject . castForeignPtr . unColormap
+  unsafeCastGObject = Colormap . castForeignPtr . unGObject
+
+castToColormap :: GObjectClass obj => obj -> Colormap
+castToColormap = castTo gTypeColormap "Colormap"
+
+gTypeColormap :: GType
+gTypeColormap =
+  {# call fun unsafe gdk_colormap_get_type #}
+
 -- ********************************************************************* Screen
 
 {#pointer *GdkScreen as Screen foreign newtype #} deriving (Eq,Ord)
@@ -1166,29 +1301,6 @@
 gTypeDevice =
   {# call fun unsafe gdk_device_get_type #}
 
--- ***************************************************************** FrameClock
-
-{#pointer *GdkFrameClock as FrameClock foreign newtype #} deriving (Eq,Ord)
-
-mkFrameClock = (FrameClock, objectUnrefFromMainloop)
-unFrameClock (FrameClock o) = o
-
-class GObjectClass o => FrameClockClass o
-toFrameClock :: FrameClockClass o => o -> FrameClock
-toFrameClock = unsafeCastGObject . toGObject
-
-instance FrameClockClass FrameClock
-instance GObjectClass FrameClock where
-  toGObject = GObject . castForeignPtr . unFrameClock
-  unsafeCastGObject = FrameClock . castForeignPtr . unGObject
-
-castToFrameClock :: GObjectClass obj => obj -> FrameClock
-castToFrameClock = castTo gTypeFrameClock "FrameClock"
-
-gTypeFrameClock :: GType
-gTypeFrameClock =
-  {# call fun unsafe gdk_frame_clock_get_type #}
-
 -- ******************************************************************* Settings
 
 {#pointer *GtkSettings as Settings foreign newtype #} deriving (Eq,Ord)
@@ -1489,6 +1601,29 @@
 gTypeTextMark =
   {# call fun unsafe gtk_text_mark_get_type #}
 
+-- ********************************************************************* Object
+
+{#pointer *GtkObject as Object foreign newtype #} deriving (Eq,Ord)
+
+mkObject = (Object, objectUnrefFromMainloop)
+unObject (Object o) = o
+
+class GObjectClass o => ObjectClass o
+toObject :: ObjectClass o => o -> Object
+toObject = unsafeCastGObject . toGObject
+
+instance ObjectClass Object
+instance GObjectClass Object where
+  toGObject = GObject . castForeignPtr . unObject
+  unsafeCastGObject = Object . castForeignPtr . unGObject
+
+castToObject :: GObjectClass obj => obj -> Object
+castToObject = castTo gTypeObject "Object"
+
+gTypeObject :: GType
+gTypeObject =
+  {# call fun unsafe gtk_object_get_type #}
+
 -- *************************************************************** RecentFilter
 
 {#pointer *GtkRecentFilter as RecentFilter foreign newtype #} deriving (Eq,Ord)
@@ -1496,11 +1631,12 @@
 mkRecentFilter = (RecentFilter, objectUnrefFromMainloop)
 unRecentFilter (RecentFilter o) = o
 
-class GObjectClass o => RecentFilterClass o
+class ObjectClass o => RecentFilterClass o
 toRecentFilter :: RecentFilterClass o => o -> RecentFilter
 toRecentFilter = unsafeCastGObject . toGObject
 
 instance RecentFilterClass RecentFilter
+instance ObjectClass RecentFilter
 instance GObjectClass RecentFilter where
   toGObject = GObject . castForeignPtr . unRecentFilter
   unsafeCastGObject = RecentFilter . castForeignPtr . unGObject
@@ -1519,11 +1655,12 @@
 mkWidget = (Widget, objectUnrefFromMainloop)
 unWidget (Widget o) = o
 
-class GObjectClass o => WidgetClass o
+class ObjectClass o => WidgetClass o
 toWidget :: WidgetClass o => o -> Widget
 toWidget = unsafeCastGObject . toGObject
 
 instance WidgetClass Widget
+instance ObjectClass Widget
 instance GObjectClass Widget where
   toGObject = GObject . castForeignPtr . unWidget
   unsafeCastGObject = Widget . castForeignPtr . unGObject
@@ -1548,6 +1685,7 @@
 
 instance HSVClass HSV
 instance WidgetClass HSV
+instance ObjectClass HSV
 instance GObjectClass HSV where
   toGObject = GObject . castForeignPtr . unHSV
   unsafeCastGObject = HSV . castForeignPtr . unGObject
@@ -1572,6 +1710,7 @@
 
 instance MiscClass Misc
 instance WidgetClass Misc
+instance ObjectClass Misc
 instance GObjectClass Misc where
   toGObject = GObject . castForeignPtr . unMisc
   unsafeCastGObject = Misc . castForeignPtr . unGObject
@@ -1597,6 +1736,7 @@
 instance LabelClass Label
 instance MiscClass Label
 instance WidgetClass Label
+instance ObjectClass Label
 instance GObjectClass Label where
   toGObject = GObject . castForeignPtr . unLabel
   unsafeCastGObject = Label . castForeignPtr . unGObject
@@ -1623,6 +1763,7 @@
 instance LabelClass AccelLabel
 instance MiscClass AccelLabel
 instance WidgetClass AccelLabel
+instance ObjectClass AccelLabel
 instance GObjectClass AccelLabel where
   toGObject = GObject . castForeignPtr . unAccelLabel
   unsafeCastGObject = AccelLabel . castForeignPtr . unGObject
@@ -1634,6 +1775,33 @@
 gTypeAccelLabel =
   {# call fun unsafe gtk_accel_label_get_type #}
 
+-- ****************************************************************** TipsQuery
+
+{#pointer *GtkTipsQuery as TipsQuery foreign newtype #} deriving (Eq,Ord)
+
+mkTipsQuery = (TipsQuery, objectUnrefFromMainloop)
+unTipsQuery (TipsQuery o) = o
+
+class LabelClass o => TipsQueryClass o
+toTipsQuery :: TipsQueryClass o => o -> TipsQuery
+toTipsQuery = unsafeCastGObject . toGObject
+
+instance TipsQueryClass TipsQuery
+instance LabelClass TipsQuery
+instance MiscClass TipsQuery
+instance WidgetClass TipsQuery
+instance ObjectClass TipsQuery
+instance GObjectClass TipsQuery where
+  toGObject = GObject . castForeignPtr . unTipsQuery
+  unsafeCastGObject = TipsQuery . castForeignPtr . unGObject
+
+castToTipsQuery :: GObjectClass obj => obj -> TipsQuery
+castToTipsQuery = castTo gTypeTipsQuery "TipsQuery"
+
+gTypeTipsQuery :: GType
+gTypeTipsQuery =
+  {# call fun unsafe gtk_tips_query_get_type #}
+
 -- ********************************************************************** Arrow
 
 {#pointer *GtkArrow as Arrow foreign newtype #} deriving (Eq,Ord)
@@ -1648,6 +1816,7 @@
 instance ArrowClass Arrow
 instance MiscClass Arrow
 instance WidgetClass Arrow
+instance ObjectClass Arrow
 instance GObjectClass Arrow where
   toGObject = GObject . castForeignPtr . unArrow
   unsafeCastGObject = Arrow . castForeignPtr . unGObject
@@ -1673,6 +1842,7 @@
 instance ImageClass Image
 instance MiscClass Image
 instance WidgetClass Image
+instance ObjectClass Image
 instance GObjectClass Image where
   toGObject = GObject . castForeignPtr . unImage
   unsafeCastGObject = Image . castForeignPtr . unGObject
@@ -1697,6 +1867,7 @@
 
 instance ContainerClass Container
 instance WidgetClass Container
+instance ObjectClass Container
 instance GObjectClass Container where
   toGObject = GObject . castForeignPtr . unContainer
   unsafeCastGObject = Container . castForeignPtr . unGObject
@@ -1722,6 +1893,7 @@
 instance ToolPaletteClass ToolPalette
 instance ContainerClass ToolPalette
 instance WidgetClass ToolPalette
+instance ObjectClass ToolPalette
 instance GObjectClass ToolPalette where
   toGObject = GObject . castForeignPtr . unToolPalette
   unsafeCastGObject = ToolPalette . castForeignPtr . unGObject
@@ -1747,6 +1919,7 @@
 instance ToolItemGroupClass ToolItemGroup
 instance ContainerClass ToolItemGroup
 instance WidgetClass ToolItemGroup
+instance ObjectClass ToolItemGroup
 instance GObjectClass ToolItemGroup where
   toGObject = GObject . castForeignPtr . unToolItemGroup
   unsafeCastGObject = ToolItemGroup . castForeignPtr . unGObject
@@ -1772,6 +1945,7 @@
 instance BinClass Bin
 instance ContainerClass Bin
 instance WidgetClass Bin
+instance ObjectClass Bin
 instance GObjectClass Bin where
   toGObject = GObject . castForeignPtr . unBin
   unsafeCastGObject = Bin . castForeignPtr . unGObject
@@ -1798,6 +1972,7 @@
 instance BinClass Alignment
 instance ContainerClass Alignment
 instance WidgetClass Alignment
+instance ObjectClass Alignment
 instance GObjectClass Alignment where
   toGObject = GObject . castForeignPtr . unAlignment
   unsafeCastGObject = Alignment . castForeignPtr . unGObject
@@ -1824,6 +1999,7 @@
 instance BinClass Frame
 instance ContainerClass Frame
 instance WidgetClass Frame
+instance ObjectClass Frame
 instance GObjectClass Frame where
   toGObject = GObject . castForeignPtr . unFrame
   unsafeCastGObject = Frame . castForeignPtr . unGObject
@@ -1851,6 +2027,7 @@
 instance BinClass AspectFrame
 instance ContainerClass AspectFrame
 instance WidgetClass AspectFrame
+instance ObjectClass AspectFrame
 instance GObjectClass AspectFrame where
   toGObject = GObject . castForeignPtr . unAspectFrame
   unsafeCastGObject = AspectFrame . castForeignPtr . unGObject
@@ -1877,6 +2054,7 @@
 instance BinClass Button
 instance ContainerClass Button
 instance WidgetClass Button
+instance ObjectClass Button
 instance GObjectClass Button where
   toGObject = GObject . castForeignPtr . unButton
   unsafeCastGObject = Button . castForeignPtr . unGObject
@@ -1904,6 +2082,7 @@
 instance BinClass ScaleButton
 instance ContainerClass ScaleButton
 instance WidgetClass ScaleButton
+instance ObjectClass ScaleButton
 instance GObjectClass ScaleButton where
   toGObject = GObject . castForeignPtr . unScaleButton
   unsafeCastGObject = ScaleButton . castForeignPtr . unGObject
@@ -1932,6 +2111,7 @@
 instance BinClass VolumeButton
 instance ContainerClass VolumeButton
 instance WidgetClass VolumeButton
+instance ObjectClass VolumeButton
 instance GObjectClass VolumeButton where
   toGObject = GObject . castForeignPtr . unVolumeButton
   unsafeCastGObject = VolumeButton . castForeignPtr . unGObject
@@ -1959,6 +2139,7 @@
 instance BinClass LinkButton
 instance ContainerClass LinkButton
 instance WidgetClass LinkButton
+instance ObjectClass LinkButton
 instance GObjectClass LinkButton where
   toGObject = GObject . castForeignPtr . unLinkButton
   unsafeCastGObject = LinkButton . castForeignPtr . unGObject
@@ -1986,6 +2167,7 @@
 instance BinClass ToggleButton
 instance ContainerClass ToggleButton
 instance WidgetClass ToggleButton
+instance ObjectClass ToggleButton
 instance GObjectClass ToggleButton where
   toGObject = GObject . castForeignPtr . unToggleButton
   unsafeCastGObject = ToggleButton . castForeignPtr . unGObject
@@ -2014,6 +2196,7 @@
 instance BinClass CheckButton
 instance ContainerClass CheckButton
 instance WidgetClass CheckButton
+instance ObjectClass CheckButton
 instance GObjectClass CheckButton where
   toGObject = GObject . castForeignPtr . unCheckButton
   unsafeCastGObject = CheckButton . castForeignPtr . unGObject
@@ -2043,6 +2226,7 @@
 instance BinClass RadioButton
 instance ContainerClass RadioButton
 instance WidgetClass RadioButton
+instance ObjectClass RadioButton
 instance GObjectClass RadioButton where
   toGObject = GObject . castForeignPtr . unRadioButton
   unsafeCastGObject = RadioButton . castForeignPtr . unGObject
@@ -2070,6 +2254,7 @@
 instance BinClass ColorButton
 instance ContainerClass ColorButton
 instance WidgetClass ColorButton
+instance ObjectClass ColorButton
 instance GObjectClass ColorButton where
   toGObject = GObject . castForeignPtr . unColorButton
   unsafeCastGObject = ColorButton . castForeignPtr . unGObject
@@ -2097,6 +2282,7 @@
 instance BinClass FontButton
 instance ContainerClass FontButton
 instance WidgetClass FontButton
+instance ObjectClass FontButton
 instance GObjectClass FontButton where
   toGObject = GObject . castForeignPtr . unFontButton
   unsafeCastGObject = FontButton . castForeignPtr . unGObject
@@ -2108,6 +2294,61 @@
 gTypeFontButton =
   {# call fun unsafe gtk_font_button_get_type #}
 
+-- ***************************************************************** OptionMenu
+
+{#pointer *GtkOptionMenu as OptionMenu foreign newtype #} deriving (Eq,Ord)
+
+mkOptionMenu = (OptionMenu, objectUnrefFromMainloop)
+unOptionMenu (OptionMenu o) = o
+
+class ButtonClass o => OptionMenuClass o
+toOptionMenu :: OptionMenuClass o => o -> OptionMenu
+toOptionMenu = unsafeCastGObject . toGObject
+
+instance OptionMenuClass OptionMenu
+instance ButtonClass OptionMenu
+instance BinClass OptionMenu
+instance ContainerClass OptionMenu
+instance WidgetClass OptionMenu
+instance ObjectClass OptionMenu
+instance GObjectClass OptionMenu where
+  toGObject = GObject . castForeignPtr . unOptionMenu
+  unsafeCastGObject = OptionMenu . castForeignPtr . unGObject
+
+castToOptionMenu :: GObjectClass obj => obj -> OptionMenu
+castToOptionMenu = castTo gTypeOptionMenu "OptionMenu"
+
+gTypeOptionMenu :: GType
+gTypeOptionMenu =
+  {# call fun unsafe gtk_option_menu_get_type #}
+
+-- *********************************************************************** Item
+
+{#pointer *GtkItem as Item foreign newtype #} deriving (Eq,Ord)
+
+mkItem = (Item, objectUnrefFromMainloop)
+unItem (Item o) = o
+
+class BinClass o => ItemClass o
+toItem :: ItemClass o => o -> Item
+toItem = unsafeCastGObject . toGObject
+
+instance ItemClass Item
+instance BinClass Item
+instance ContainerClass Item
+instance WidgetClass Item
+instance ObjectClass Item
+instance GObjectClass Item where
+  toGObject = GObject . castForeignPtr . unItem
+  unsafeCastGObject = Item . castForeignPtr . unGObject
+
+castToItem :: GObjectClass obj => obj -> Item
+castToItem = castTo gTypeItem "Item"
+
+gTypeItem :: GType
+gTypeItem =
+  {# call fun unsafe gtk_item_get_type #}
+
 -- ******************************************************************* MenuItem
 
 {#pointer *GtkMenuItem as MenuItem foreign newtype #} deriving (Eq,Ord)
@@ -2115,14 +2356,16 @@
 mkMenuItem = (MenuItem, objectUnrefFromMainloop)
 unMenuItem (MenuItem o) = o
 
-class BinClass o => MenuItemClass o
+class ItemClass o => MenuItemClass o
 toMenuItem :: MenuItemClass o => o -> MenuItem
 toMenuItem = unsafeCastGObject . toGObject
 
 instance MenuItemClass MenuItem
+instance ItemClass MenuItem
 instance BinClass MenuItem
 instance ContainerClass MenuItem
 instance WidgetClass MenuItem
+instance ObjectClass MenuItem
 instance GObjectClass MenuItem where
   toGObject = GObject . castForeignPtr . unMenuItem
   unsafeCastGObject = MenuItem . castForeignPtr . unGObject
@@ -2147,9 +2390,11 @@
 
 instance CheckMenuItemClass CheckMenuItem
 instance MenuItemClass CheckMenuItem
+instance ItemClass CheckMenuItem
 instance BinClass CheckMenuItem
 instance ContainerClass CheckMenuItem
 instance WidgetClass CheckMenuItem
+instance ObjectClass CheckMenuItem
 instance GObjectClass CheckMenuItem where
   toGObject = GObject . castForeignPtr . unCheckMenuItem
   unsafeCastGObject = CheckMenuItem . castForeignPtr . unGObject
@@ -2175,9 +2420,11 @@
 instance RadioMenuItemClass RadioMenuItem
 instance CheckMenuItemClass RadioMenuItem
 instance MenuItemClass RadioMenuItem
+instance ItemClass RadioMenuItem
 instance BinClass RadioMenuItem
 instance ContainerClass RadioMenuItem
 instance WidgetClass RadioMenuItem
+instance ObjectClass RadioMenuItem
 instance GObjectClass RadioMenuItem where
   toGObject = GObject . castForeignPtr . unRadioMenuItem
   unsafeCastGObject = RadioMenuItem . castForeignPtr . unGObject
@@ -2202,9 +2449,11 @@
 
 instance TearoffMenuItemClass TearoffMenuItem
 instance MenuItemClass TearoffMenuItem
+instance ItemClass TearoffMenuItem
 instance BinClass TearoffMenuItem
 instance ContainerClass TearoffMenuItem
 instance WidgetClass TearoffMenuItem
+instance ObjectClass TearoffMenuItem
 instance GObjectClass TearoffMenuItem where
   toGObject = GObject . castForeignPtr . unTearoffMenuItem
   unsafeCastGObject = TearoffMenuItem . castForeignPtr . unGObject
@@ -2229,9 +2478,11 @@
 
 instance ImageMenuItemClass ImageMenuItem
 instance MenuItemClass ImageMenuItem
+instance ItemClass ImageMenuItem
 instance BinClass ImageMenuItem
 instance ContainerClass ImageMenuItem
 instance WidgetClass ImageMenuItem
+instance ObjectClass ImageMenuItem
 instance GObjectClass ImageMenuItem where
   toGObject = GObject . castForeignPtr . unImageMenuItem
   unsafeCastGObject = ImageMenuItem . castForeignPtr . unGObject
@@ -2256,9 +2507,11 @@
 
 instance SeparatorMenuItemClass SeparatorMenuItem
 instance MenuItemClass SeparatorMenuItem
+instance ItemClass SeparatorMenuItem
 instance BinClass SeparatorMenuItem
 instance ContainerClass SeparatorMenuItem
 instance WidgetClass SeparatorMenuItem
+instance ObjectClass SeparatorMenuItem
 instance GObjectClass SeparatorMenuItem where
   toGObject = GObject . castForeignPtr . unSeparatorMenuItem
   unsafeCastGObject = SeparatorMenuItem . castForeignPtr . unGObject
@@ -2270,31 +2523,33 @@
 gTypeSeparatorMenuItem =
   {# call fun unsafe gtk_separator_menu_item_get_type #}
 
--- ******************************************************************** Overlay
+-- ******************************************************************* ListItem
 
-{#pointer *GtkOverlay as Overlay foreign newtype #} deriving (Eq,Ord)
+{#pointer *GtkListItem as ListItem foreign newtype #} deriving (Eq,Ord)
 
-mkOverlay = (Overlay, objectUnrefFromMainloop)
-unOverlay (Overlay o) = o
+mkListItem = (ListItem, objectUnrefFromMainloop)
+unListItem (ListItem o) = o
 
-class BinClass o => OverlayClass o
-toOverlay :: OverlayClass o => o -> Overlay
-toOverlay = unsafeCastGObject . toGObject
+class ItemClass o => ListItemClass o
+toListItem :: ListItemClass o => o -> ListItem
+toListItem = unsafeCastGObject . toGObject
 
-instance OverlayClass Overlay
-instance BinClass Overlay
-instance ContainerClass Overlay
-instance WidgetClass Overlay
-instance GObjectClass Overlay where
-  toGObject = GObject . castForeignPtr . unOverlay
-  unsafeCastGObject = Overlay . castForeignPtr . unGObject
+instance ListItemClass ListItem
+instance ItemClass ListItem
+instance BinClass ListItem
+instance ContainerClass ListItem
+instance WidgetClass ListItem
+instance ObjectClass ListItem
+instance GObjectClass ListItem where
+  toGObject = GObject . castForeignPtr . unListItem
+  unsafeCastGObject = ListItem . castForeignPtr . unGObject
 
-castToOverlay :: GObjectClass obj => obj -> Overlay
-castToOverlay = castTo gTypeOverlay "Overlay"
+castToListItem :: GObjectClass obj => obj -> ListItem
+castToListItem = castTo gTypeListItem "ListItem"
 
-gTypeOverlay :: GType
-gTypeOverlay =
-  {# call fun unsafe gtk_overlay_get_type #}
+gTypeListItem :: GType
+gTypeListItem =
+  {# call fun unsafe gtk_list_item_get_type #}
 
 -- ********************************************************************* Window
 
@@ -2311,6 +2566,7 @@
 instance BinClass Window
 instance ContainerClass Window
 instance WidgetClass Window
+instance ObjectClass Window
 instance GObjectClass Window where
   toGObject = GObject . castForeignPtr . unWindow
   unsafeCastGObject = Window . castForeignPtr . unGObject
@@ -2338,6 +2594,7 @@
 instance BinClass Assistant
 instance ContainerClass Assistant
 instance WidgetClass Assistant
+instance ObjectClass Assistant
 instance GObjectClass Assistant where
   toGObject = GObject . castForeignPtr . unAssistant
   unsafeCastGObject = Assistant . castForeignPtr . unGObject
@@ -2365,6 +2622,7 @@
 instance BinClass OffscreenWindow
 instance ContainerClass OffscreenWindow
 instance WidgetClass OffscreenWindow
+instance ObjectClass OffscreenWindow
 instance GObjectClass OffscreenWindow where
   toGObject = GObject . castForeignPtr . unOffscreenWindow
   unsafeCastGObject = OffscreenWindow . castForeignPtr . unGObject
@@ -2392,6 +2650,7 @@
 instance BinClass Dialog
 instance ContainerClass Dialog
 instance WidgetClass Dialog
+instance ObjectClass Dialog
 instance GObjectClass Dialog where
   toGObject = GObject . castForeignPtr . unDialog
   unsafeCastGObject = Dialog . castForeignPtr . unGObject
@@ -2420,6 +2679,7 @@
 instance BinClass AboutDialog
 instance ContainerClass AboutDialog
 instance WidgetClass AboutDialog
+instance ObjectClass AboutDialog
 instance GObjectClass AboutDialog where
   toGObject = GObject . castForeignPtr . unAboutDialog
   unsafeCastGObject = AboutDialog . castForeignPtr . unGObject
@@ -2448,6 +2708,7 @@
 instance BinClass ColorSelectionDialog
 instance ContainerClass ColorSelectionDialog
 instance WidgetClass ColorSelectionDialog
+instance ObjectClass ColorSelectionDialog
 instance GObjectClass ColorSelectionDialog where
   toGObject = GObject . castForeignPtr . unColorSelectionDialog
   unsafeCastGObject = ColorSelectionDialog . castForeignPtr . unGObject
@@ -2459,6 +2720,35 @@
 gTypeColorSelectionDialog =
   {# call fun unsafe gtk_color_selection_dialog_get_type #}
 
+-- ************************************************************** FileSelection
+
+{#pointer *GtkFileSelection as FileSelection foreign newtype #} deriving (Eq,Ord)
+
+mkFileSelection = (FileSelection, objectUnrefFromMainloop)
+unFileSelection (FileSelection o) = o
+
+class DialogClass o => FileSelectionClass o
+toFileSelection :: FileSelectionClass o => o -> FileSelection
+toFileSelection = unsafeCastGObject . toGObject
+
+instance FileSelectionClass FileSelection
+instance DialogClass FileSelection
+instance WindowClass FileSelection
+instance BinClass FileSelection
+instance ContainerClass FileSelection
+instance WidgetClass FileSelection
+instance ObjectClass FileSelection
+instance GObjectClass FileSelection where
+  toGObject = GObject . castForeignPtr . unFileSelection
+  unsafeCastGObject = FileSelection . castForeignPtr . unGObject
+
+castToFileSelection :: GObjectClass obj => obj -> FileSelection
+castToFileSelection = castTo gTypeFileSelection "FileSelection"
+
+gTypeFileSelection :: GType
+gTypeFileSelection =
+  {# call fun unsafe gtk_file_selection_get_type #}
+
 -- ********************************************************** FileChooserDialog
 
 {#pointer *GtkFileChooserDialog as FileChooserDialog foreign newtype #} deriving (Eq,Ord)
@@ -2476,6 +2766,7 @@
 instance BinClass FileChooserDialog
 instance ContainerClass FileChooserDialog
 instance WidgetClass FileChooserDialog
+instance ObjectClass FileChooserDialog
 instance GObjectClass FileChooserDialog where
   toGObject = GObject . castForeignPtr . unFileChooserDialog
   unsafeCastGObject = FileChooserDialog . castForeignPtr . unGObject
@@ -2504,6 +2795,7 @@
 instance BinClass FontSelectionDialog
 instance ContainerClass FontSelectionDialog
 instance WidgetClass FontSelectionDialog
+instance ObjectClass FontSelectionDialog
 instance GObjectClass FontSelectionDialog where
   toGObject = GObject . castForeignPtr . unFontSelectionDialog
   unsafeCastGObject = FontSelectionDialog . castForeignPtr . unGObject
@@ -2515,6 +2807,35 @@
 gTypeFontSelectionDialog =
   {# call fun unsafe gtk_font_selection_dialog_get_type #}
 
+-- **************************************************************** InputDialog
+
+{#pointer *GtkInputDialog as InputDialog foreign newtype #} deriving (Eq,Ord)
+
+mkInputDialog = (InputDialog, objectUnrefFromMainloop)
+unInputDialog (InputDialog o) = o
+
+class DialogClass o => InputDialogClass o
+toInputDialog :: InputDialogClass o => o -> InputDialog
+toInputDialog = unsafeCastGObject . toGObject
+
+instance InputDialogClass InputDialog
+instance DialogClass InputDialog
+instance WindowClass InputDialog
+instance BinClass InputDialog
+instance ContainerClass InputDialog
+instance WidgetClass InputDialog
+instance ObjectClass InputDialog
+instance GObjectClass InputDialog where
+  toGObject = GObject . castForeignPtr . unInputDialog
+  unsafeCastGObject = InputDialog . castForeignPtr . unGObject
+
+castToInputDialog :: GObjectClass obj => obj -> InputDialog
+castToInputDialog = castTo gTypeInputDialog "InputDialog"
+
+gTypeInputDialog :: GType
+gTypeInputDialog =
+  {# call fun unsafe gtk_input_dialog_get_type #}
+
 -- ************************************************************** MessageDialog
 
 {#pointer *GtkMessageDialog as MessageDialog foreign newtype #} deriving (Eq,Ord)
@@ -2532,6 +2853,7 @@
 instance BinClass MessageDialog
 instance ContainerClass MessageDialog
 instance WidgetClass MessageDialog
+instance ObjectClass MessageDialog
 instance GObjectClass MessageDialog where
   toGObject = GObject . castForeignPtr . unMessageDialog
   unsafeCastGObject = MessageDialog . castForeignPtr . unGObject
@@ -2558,6 +2880,7 @@
 instance BinClass EventBox
 instance ContainerClass EventBox
 instance WidgetClass EventBox
+instance ObjectClass EventBox
 instance GObjectClass EventBox where
   toGObject = GObject . castForeignPtr . unEventBox
   unsafeCastGObject = EventBox . castForeignPtr . unGObject
@@ -2584,6 +2907,7 @@
 instance BinClass HandleBox
 instance ContainerClass HandleBox
 instance WidgetClass HandleBox
+instance ObjectClass HandleBox
 instance GObjectClass HandleBox where
   toGObject = GObject . castForeignPtr . unHandleBox
   unsafeCastGObject = HandleBox . castForeignPtr . unGObject
@@ -2610,6 +2934,7 @@
 instance BinClass ScrolledWindow
 instance ContainerClass ScrolledWindow
 instance WidgetClass ScrolledWindow
+instance ObjectClass ScrolledWindow
 instance GObjectClass ScrolledWindow where
   toGObject = GObject . castForeignPtr . unScrolledWindow
   unsafeCastGObject = ScrolledWindow . castForeignPtr . unGObject
@@ -2636,6 +2961,7 @@
 instance BinClass Viewport
 instance ContainerClass Viewport
 instance WidgetClass Viewport
+instance ObjectClass Viewport
 instance GObjectClass Viewport where
   toGObject = GObject . castForeignPtr . unViewport
   unsafeCastGObject = Viewport . castForeignPtr . unGObject
@@ -2662,6 +2988,7 @@
 instance BinClass Expander
 instance ContainerClass Expander
 instance WidgetClass Expander
+instance ObjectClass Expander
 instance GObjectClass Expander where
   toGObject = GObject . castForeignPtr . unExpander
   unsafeCastGObject = Expander . castForeignPtr . unGObject
@@ -2688,6 +3015,7 @@
 instance BinClass ComboBox
 instance ContainerClass ComboBox
 instance WidgetClass ComboBox
+instance ObjectClass ComboBox
 instance GObjectClass ComboBox where
   toGObject = GObject . castForeignPtr . unComboBox
   unsafeCastGObject = ComboBox . castForeignPtr . unGObject
@@ -2699,6 +3027,34 @@
 gTypeComboBox =
   {# call fun unsafe gtk_combo_box_get_type #}
 
+-- ************************************************************** ComboBoxEntry
+
+{#pointer *GtkComboBoxEntry as ComboBoxEntry foreign newtype #} deriving (Eq,Ord)
+
+mkComboBoxEntry = (ComboBoxEntry, objectUnrefFromMainloop)
+unComboBoxEntry (ComboBoxEntry o) = o
+
+class ComboBoxClass o => ComboBoxEntryClass o
+toComboBoxEntry :: ComboBoxEntryClass o => o -> ComboBoxEntry
+toComboBoxEntry = unsafeCastGObject . toGObject
+
+instance ComboBoxEntryClass ComboBoxEntry
+instance ComboBoxClass ComboBoxEntry
+instance BinClass ComboBoxEntry
+instance ContainerClass ComboBoxEntry
+instance WidgetClass ComboBoxEntry
+instance ObjectClass ComboBoxEntry
+instance GObjectClass ComboBoxEntry where
+  toGObject = GObject . castForeignPtr . unComboBoxEntry
+  unsafeCastGObject = ComboBoxEntry . castForeignPtr . unGObject
+
+castToComboBoxEntry :: GObjectClass obj => obj -> ComboBoxEntry
+castToComboBoxEntry = castTo gTypeComboBoxEntry "ComboBoxEntry"
+
+gTypeComboBoxEntry :: GType
+gTypeComboBoxEntry =
+  {# call fun unsafe gtk_combo_box_entry_get_type #}
+
 -- ******************************************************************* ToolItem
 
 {#pointer *GtkToolItem as ToolItem foreign newtype #} deriving (Eq,Ord)
@@ -2714,6 +3070,7 @@
 instance BinClass ToolItem
 instance ContainerClass ToolItem
 instance WidgetClass ToolItem
+instance ObjectClass ToolItem
 instance GObjectClass ToolItem where
   toGObject = GObject . castForeignPtr . unToolItem
   unsafeCastGObject = ToolItem . castForeignPtr . unGObject
@@ -2741,6 +3098,7 @@
 instance BinClass ToolButton
 instance ContainerClass ToolButton
 instance WidgetClass ToolButton
+instance ObjectClass ToolButton
 instance GObjectClass ToolButton where
   toGObject = GObject . castForeignPtr . unToolButton
   unsafeCastGObject = ToolButton . castForeignPtr . unGObject
@@ -2769,6 +3127,7 @@
 instance BinClass MenuToolButton
 instance ContainerClass MenuToolButton
 instance WidgetClass MenuToolButton
+instance ObjectClass MenuToolButton
 instance GObjectClass MenuToolButton where
   toGObject = GObject . castForeignPtr . unMenuToolButton
   unsafeCastGObject = MenuToolButton . castForeignPtr . unGObject
@@ -2797,6 +3156,7 @@
 instance BinClass ToggleToolButton
 instance ContainerClass ToggleToolButton
 instance WidgetClass ToggleToolButton
+instance ObjectClass ToggleToolButton
 instance GObjectClass ToggleToolButton where
   toGObject = GObject . castForeignPtr . unToggleToolButton
   unsafeCastGObject = ToggleToolButton . castForeignPtr . unGObject
@@ -2826,6 +3186,7 @@
 instance BinClass RadioToolButton
 instance ContainerClass RadioToolButton
 instance WidgetClass RadioToolButton
+instance ObjectClass RadioToolButton
 instance GObjectClass RadioToolButton where
   toGObject = GObject . castForeignPtr . unRadioToolButton
   unsafeCastGObject = RadioToolButton . castForeignPtr . unGObject
@@ -2853,6 +3214,7 @@
 instance BinClass SeparatorToolItem
 instance ContainerClass SeparatorToolItem
 instance WidgetClass SeparatorToolItem
+instance ObjectClass SeparatorToolItem
 instance GObjectClass SeparatorToolItem where
   toGObject = GObject . castForeignPtr . unSeparatorToolItem
   unsafeCastGObject = SeparatorToolItem . castForeignPtr . unGObject
@@ -2878,6 +3240,7 @@
 instance BoxClass Box
 instance ContainerClass Box
 instance WidgetClass Box
+instance ObjectClass Box
 instance GObjectClass Box where
   toGObject = GObject . castForeignPtr . unBox
   unsafeCastGObject = Box . castForeignPtr . unGObject
@@ -2904,6 +3267,7 @@
 instance BoxClass ButtonBox
 instance ContainerClass ButtonBox
 instance WidgetClass ButtonBox
+instance ObjectClass ButtonBox
 instance GObjectClass ButtonBox where
   toGObject = GObject . castForeignPtr . unButtonBox
   unsafeCastGObject = ButtonBox . castForeignPtr . unGObject
@@ -2931,6 +3295,7 @@
 instance BoxClass HButtonBox
 instance ContainerClass HButtonBox
 instance WidgetClass HButtonBox
+instance ObjectClass HButtonBox
 instance GObjectClass HButtonBox where
   toGObject = GObject . castForeignPtr . unHButtonBox
   unsafeCastGObject = HButtonBox . castForeignPtr . unGObject
@@ -2958,6 +3323,7 @@
 instance BoxClass VButtonBox
 instance ContainerClass VButtonBox
 instance WidgetClass VButtonBox
+instance ObjectClass VButtonBox
 instance GObjectClass VButtonBox where
   toGObject = GObject . castForeignPtr . unVButtonBox
   unsafeCastGObject = VButtonBox . castForeignPtr . unGObject
@@ -2984,6 +3350,7 @@
 instance BoxClass VBox
 instance ContainerClass VBox
 instance WidgetClass VBox
+instance ObjectClass VBox
 instance GObjectClass VBox where
   toGObject = GObject . castForeignPtr . unVBox
   unsafeCastGObject = VBox . castForeignPtr . unGObject
@@ -3011,6 +3378,7 @@
 instance BoxClass RecentChooserWidget
 instance ContainerClass RecentChooserWidget
 instance WidgetClass RecentChooserWidget
+instance ObjectClass RecentChooserWidget
 instance GObjectClass RecentChooserWidget where
   toGObject = GObject . castForeignPtr . unRecentChooserWidget
   unsafeCastGObject = RecentChooserWidget . castForeignPtr . unGObject
@@ -3038,6 +3406,7 @@
 instance BoxClass ColorSelection
 instance ContainerClass ColorSelection
 instance WidgetClass ColorSelection
+instance ObjectClass ColorSelection
 instance GObjectClass ColorSelection where
   toGObject = GObject . castForeignPtr . unColorSelection
   unsafeCastGObject = ColorSelection . castForeignPtr . unGObject
@@ -3065,6 +3434,7 @@
 instance BoxClass FontSelection
 instance ContainerClass FontSelection
 instance WidgetClass FontSelection
+instance ObjectClass FontSelection
 instance GObjectClass FontSelection where
   toGObject = GObject . castForeignPtr . unFontSelection
   unsafeCastGObject = FontSelection . castForeignPtr . unGObject
@@ -3092,6 +3462,7 @@
 instance BoxClass FileChooserWidget
 instance ContainerClass FileChooserWidget
 instance WidgetClass FileChooserWidget
+instance ObjectClass FileChooserWidget
 instance GObjectClass FileChooserWidget where
   toGObject = GObject . castForeignPtr . unFileChooserWidget
   unsafeCastGObject = FileChooserWidget . castForeignPtr . unGObject
@@ -3118,6 +3489,7 @@
 instance BoxClass HBox
 instance ContainerClass HBox
 instance WidgetClass HBox
+instance ObjectClass HBox
 instance GObjectClass HBox where
   toGObject = GObject . castForeignPtr . unHBox
   unsafeCastGObject = HBox . castForeignPtr . unGObject
@@ -3145,6 +3517,7 @@
 instance BoxClass InfoBar
 instance ContainerClass InfoBar
 instance WidgetClass InfoBar
+instance ObjectClass InfoBar
 instance GObjectClass InfoBar where
   toGObject = GObject . castForeignPtr . unInfoBar
   unsafeCastGObject = InfoBar . castForeignPtr . unGObject
@@ -3156,6 +3529,34 @@
 gTypeInfoBar =
   {# call fun unsafe gtk_info_bar_get_type #}
 
+-- ********************************************************************** Combo
+
+{#pointer *GtkCombo as Combo foreign newtype #} deriving (Eq,Ord)
+
+mkCombo = (Combo, objectUnrefFromMainloop)
+unCombo (Combo o) = o
+
+class HBoxClass o => ComboClass o
+toCombo :: ComboClass o => o -> Combo
+toCombo = unsafeCastGObject . toGObject
+
+instance ComboClass Combo
+instance HBoxClass Combo
+instance BoxClass Combo
+instance ContainerClass Combo
+instance WidgetClass Combo
+instance ObjectClass Combo
+instance GObjectClass Combo where
+  toGObject = GObject . castForeignPtr . unCombo
+  unsafeCastGObject = Combo . castForeignPtr . unGObject
+
+castToCombo :: GObjectClass obj => obj -> Combo
+castToCombo = castTo gTypeCombo "Combo"
+
+gTypeCombo :: GType
+gTypeCombo =
+  {# call fun unsafe gtk_combo_get_type #}
+
 -- ********************************************************** FileChooserButton
 
 {#pointer *GtkFileChooserButton as FileChooserButton foreign newtype #} deriving (Eq,Ord)
@@ -3172,6 +3573,7 @@
 instance BoxClass FileChooserButton
 instance ContainerClass FileChooserButton
 instance WidgetClass FileChooserButton
+instance ObjectClass FileChooserButton
 instance GObjectClass FileChooserButton where
   toGObject = GObject . castForeignPtr . unFileChooserButton
   unsafeCastGObject = FileChooserButton . castForeignPtr . unGObject
@@ -3199,6 +3601,7 @@
 instance BoxClass Statusbar
 instance ContainerClass Statusbar
 instance WidgetClass Statusbar
+instance ObjectClass Statusbar
 instance GObjectClass Statusbar where
   toGObject = GObject . castForeignPtr . unStatusbar
   unsafeCastGObject = Statusbar . castForeignPtr . unGObject
@@ -3210,6 +3613,59 @@
 gTypeStatusbar =
   {# call fun unsafe gtk_statusbar_get_type #}
 
+-- ********************************************************************** CList
+
+{#pointer *GtkCList as CList foreign newtype #} deriving (Eq,Ord)
+
+mkCList = (CList, objectUnrefFromMainloop)
+unCList (CList o) = o
+
+class ContainerClass o => CListClass o
+toCList :: CListClass o => o -> CList
+toCList = unsafeCastGObject . toGObject
+
+instance CListClass CList
+instance ContainerClass CList
+instance WidgetClass CList
+instance ObjectClass CList
+instance GObjectClass CList where
+  toGObject = GObject . castForeignPtr . unCList
+  unsafeCastGObject = CList . castForeignPtr . unGObject
+
+castToCList :: GObjectClass obj => obj -> CList
+castToCList = castTo gTypeCList "CList"
+
+gTypeCList :: GType
+gTypeCList =
+  {# call fun unsafe gtk_clist_get_type #}
+
+-- ********************************************************************** CTree
+
+{#pointer *GtkCTree as CTree foreign newtype #} deriving (Eq,Ord)
+
+mkCTree = (CTree, objectUnrefFromMainloop)
+unCTree (CTree o) = o
+
+class CListClass o => CTreeClass o
+toCTree :: CTreeClass o => o -> CTree
+toCTree = unsafeCastGObject . toGObject
+
+instance CTreeClass CTree
+instance CListClass CTree
+instance ContainerClass CTree
+instance WidgetClass CTree
+instance ObjectClass CTree
+instance GObjectClass CTree where
+  toGObject = GObject . castForeignPtr . unCTree
+  unsafeCastGObject = CTree . castForeignPtr . unGObject
+
+castToCTree :: GObjectClass obj => obj -> CTree
+castToCTree = castTo gTypeCTree "CTree"
+
+gTypeCTree :: GType
+gTypeCTree =
+  {# call fun unsafe gtk_ctree_get_type #}
+
 -- ********************************************************************** Fixed
 
 {#pointer *GtkFixed as Fixed foreign newtype #} deriving (Eq,Ord)
@@ -3224,6 +3680,7 @@
 instance FixedClass Fixed
 instance ContainerClass Fixed
 instance WidgetClass Fixed
+instance ObjectClass Fixed
 instance GObjectClass Fixed where
   toGObject = GObject . castForeignPtr . unFixed
   unsafeCastGObject = Fixed . castForeignPtr . unGObject
@@ -3249,6 +3706,7 @@
 instance PanedClass Paned
 instance ContainerClass Paned
 instance WidgetClass Paned
+instance ObjectClass Paned
 instance GObjectClass Paned where
   toGObject = GObject . castForeignPtr . unPaned
   unsafeCastGObject = Paned . castForeignPtr . unGObject
@@ -3275,6 +3733,7 @@
 instance PanedClass HPaned
 instance ContainerClass HPaned
 instance WidgetClass HPaned
+instance ObjectClass HPaned
 instance GObjectClass HPaned where
   toGObject = GObject . castForeignPtr . unHPaned
   unsafeCastGObject = HPaned . castForeignPtr . unGObject
@@ -3301,6 +3760,7 @@
 instance PanedClass VPaned
 instance ContainerClass VPaned
 instance WidgetClass VPaned
+instance ObjectClass VPaned
 instance GObjectClass VPaned where
   toGObject = GObject . castForeignPtr . unVPaned
   unsafeCastGObject = VPaned . castForeignPtr . unGObject
@@ -3326,6 +3786,7 @@
 instance IconViewClass IconView
 instance ContainerClass IconView
 instance WidgetClass IconView
+instance ObjectClass IconView
 instance GObjectClass IconView where
   toGObject = GObject . castForeignPtr . unIconView
   unsafeCastGObject = IconView . castForeignPtr . unGObject
@@ -3351,6 +3812,7 @@
 instance LayoutClass Layout
 instance ContainerClass Layout
 instance WidgetClass Layout
+instance ObjectClass Layout
 instance GObjectClass Layout where
   toGObject = GObject . castForeignPtr . unLayout
   unsafeCastGObject = Layout . castForeignPtr . unGObject
@@ -3362,6 +3824,32 @@
 gTypeLayout =
   {# call fun unsafe gtk_layout_get_type #}
 
+-- *********************************************************************** List
+
+{#pointer *GtkList as List foreign newtype #} deriving (Eq,Ord)
+
+mkList = (List, objectUnrefFromMainloop)
+unList (List o) = o
+
+class ContainerClass o => ListClass o
+toList :: ListClass o => o -> List
+toList = unsafeCastGObject . toGObject
+
+instance ListClass List
+instance ContainerClass List
+instance WidgetClass List
+instance ObjectClass List
+instance GObjectClass List where
+  toGObject = GObject . castForeignPtr . unList
+  unsafeCastGObject = List . castForeignPtr . unGObject
+
+castToList :: GObjectClass obj => obj -> List
+castToList = castTo gTypeList "List"
+
+gTypeList :: GType
+gTypeList =
+  {# call fun unsafe gtk_list_get_type #}
+
 -- ****************************************************************** MenuShell
 
 {#pointer *GtkMenuShell as MenuShell foreign newtype #} deriving (Eq,Ord)
@@ -3376,6 +3864,7 @@
 instance MenuShellClass MenuShell
 instance ContainerClass MenuShell
 instance WidgetClass MenuShell
+instance ObjectClass MenuShell
 instance GObjectClass MenuShell where
   toGObject = GObject . castForeignPtr . unMenuShell
   unsafeCastGObject = MenuShell . castForeignPtr . unGObject
@@ -3402,6 +3891,7 @@
 instance MenuShellClass Menu
 instance ContainerClass Menu
 instance WidgetClass Menu
+instance ObjectClass Menu
 instance GObjectClass Menu where
   toGObject = GObject . castForeignPtr . unMenu
   unsafeCastGObject = Menu . castForeignPtr . unGObject
@@ -3429,6 +3919,7 @@
 instance MenuShellClass RecentChooserMenu
 instance ContainerClass RecentChooserMenu
 instance WidgetClass RecentChooserMenu
+instance ObjectClass RecentChooserMenu
 instance GObjectClass RecentChooserMenu where
   toGObject = GObject . castForeignPtr . unRecentChooserMenu
   unsafeCastGObject = RecentChooserMenu . castForeignPtr . unGObject
@@ -3455,6 +3946,7 @@
 instance MenuShellClass MenuBar
 instance ContainerClass MenuBar
 instance WidgetClass MenuBar
+instance ObjectClass MenuBar
 instance GObjectClass MenuBar where
   toGObject = GObject . castForeignPtr . unMenuBar
   unsafeCastGObject = MenuBar . castForeignPtr . unGObject
@@ -3480,6 +3972,7 @@
 instance NotebookClass Notebook
 instance ContainerClass Notebook
 instance WidgetClass Notebook
+instance ObjectClass Notebook
 instance GObjectClass Notebook where
   toGObject = GObject . castForeignPtr . unNotebook
   unsafeCastGObject = Notebook . castForeignPtr . unGObject
@@ -3505,6 +3998,7 @@
 instance TableClass Table
 instance ContainerClass Table
 instance WidgetClass Table
+instance ObjectClass Table
 instance GObjectClass Table where
   toGObject = GObject . castForeignPtr . unTable
   unsafeCastGObject = Table . castForeignPtr . unGObject
@@ -3530,6 +4024,7 @@
 instance TextViewClass TextView
 instance ContainerClass TextView
 instance WidgetClass TextView
+instance ObjectClass TextView
 instance GObjectClass TextView where
   toGObject = GObject . castForeignPtr . unTextView
   unsafeCastGObject = TextView . castForeignPtr . unGObject
@@ -3555,6 +4050,7 @@
 instance ToolbarClass Toolbar
 instance ContainerClass Toolbar
 instance WidgetClass Toolbar
+instance ObjectClass Toolbar
 instance GObjectClass Toolbar where
   toGObject = GObject . castForeignPtr . unToolbar
   unsafeCastGObject = Toolbar . castForeignPtr . unGObject
@@ -3580,6 +4076,7 @@
 instance TreeViewClass TreeView
 instance ContainerClass TreeView
 instance WidgetClass TreeView
+instance ObjectClass TreeView
 instance GObjectClass TreeView where
   toGObject = GObject . castForeignPtr . unTreeView
   unsafeCastGObject = TreeView . castForeignPtr . unGObject
@@ -3604,6 +4101,7 @@
 
 instance CalendarClass Calendar
 instance WidgetClass Calendar
+instance ObjectClass Calendar
 instance GObjectClass Calendar where
   toGObject = GObject . castForeignPtr . unCalendar
   unsafeCastGObject = Calendar . castForeignPtr . unGObject
@@ -3628,6 +4126,7 @@
 
 instance CellViewClass CellView
 instance WidgetClass CellView
+instance ObjectClass CellView
 instance GObjectClass CellView where
   toGObject = GObject . castForeignPtr . unCellView
   unsafeCastGObject = CellView . castForeignPtr . unGObject
@@ -3652,6 +4151,7 @@
 
 instance DrawingAreaClass DrawingArea
 instance WidgetClass DrawingArea
+instance ObjectClass DrawingArea
 instance GObjectClass DrawingArea where
   toGObject = GObject . castForeignPtr . unDrawingArea
   unsafeCastGObject = DrawingArea . castForeignPtr . unGObject
@@ -3677,6 +4177,7 @@
 instance SpinnerClass Spinner
 instance DrawingAreaClass Spinner
 instance WidgetClass Spinner
+instance ObjectClass Spinner
 instance GObjectClass Spinner where
   toGObject = GObject . castForeignPtr . unSpinner
   unsafeCastGObject = Spinner . castForeignPtr . unGObject
@@ -3701,6 +4202,7 @@
 
 instance EntryClass Entry
 instance WidgetClass Entry
+instance ObjectClass Entry
 instance GObjectClass Entry where
   toGObject = GObject . castForeignPtr . unEntry
   unsafeCastGObject = Entry . castForeignPtr . unGObject
@@ -3726,6 +4228,7 @@
 instance SpinButtonClass SpinButton
 instance EntryClass SpinButton
 instance WidgetClass SpinButton
+instance ObjectClass SpinButton
 instance GObjectClass SpinButton where
   toGObject = GObject . castForeignPtr . unSpinButton
   unsafeCastGObject = SpinButton . castForeignPtr . unGObject
@@ -3737,6 +4240,83 @@
 gTypeSpinButton =
   {# call fun unsafe gtk_spin_button_get_type #}
 
+-- ********************************************************************** Ruler
+
+{#pointer *GtkRuler as Ruler foreign newtype #} deriving (Eq,Ord)
+
+mkRuler = (Ruler, objectUnrefFromMainloop)
+unRuler (Ruler o) = o
+
+class WidgetClass o => RulerClass o
+toRuler :: RulerClass o => o -> Ruler
+toRuler = unsafeCastGObject . toGObject
+
+instance RulerClass Ruler
+instance WidgetClass Ruler
+instance ObjectClass Ruler
+instance GObjectClass Ruler where
+  toGObject = GObject . castForeignPtr . unRuler
+  unsafeCastGObject = Ruler . castForeignPtr . unGObject
+
+castToRuler :: GObjectClass obj => obj -> Ruler
+castToRuler = castTo gTypeRuler "Ruler"
+
+gTypeRuler :: GType
+gTypeRuler =
+  {# call fun unsafe gtk_ruler_get_type #}
+
+-- ********************************************************************* HRuler
+
+{#pointer *GtkHRuler as HRuler foreign newtype #} deriving (Eq,Ord)
+
+mkHRuler = (HRuler, objectUnrefFromMainloop)
+unHRuler (HRuler o) = o
+
+class RulerClass o => HRulerClass o
+toHRuler :: HRulerClass o => o -> HRuler
+toHRuler = unsafeCastGObject . toGObject
+
+instance HRulerClass HRuler
+instance RulerClass HRuler
+instance WidgetClass HRuler
+instance ObjectClass HRuler
+instance GObjectClass HRuler where
+  toGObject = GObject . castForeignPtr . unHRuler
+  unsafeCastGObject = HRuler . castForeignPtr . unGObject
+
+castToHRuler :: GObjectClass obj => obj -> HRuler
+castToHRuler = castTo gTypeHRuler "HRuler"
+
+gTypeHRuler :: GType
+gTypeHRuler =
+  {# call fun unsafe gtk_hruler_get_type #}
+
+-- ********************************************************************* VRuler
+
+{#pointer *GtkVRuler as VRuler foreign newtype #} deriving (Eq,Ord)
+
+mkVRuler = (VRuler, objectUnrefFromMainloop)
+unVRuler (VRuler o) = o
+
+class RulerClass o => VRulerClass o
+toVRuler :: VRulerClass o => o -> VRuler
+toVRuler = unsafeCastGObject . toGObject
+
+instance VRulerClass VRuler
+instance RulerClass VRuler
+instance WidgetClass VRuler
+instance ObjectClass VRuler
+instance GObjectClass VRuler where
+  toGObject = GObject . castForeignPtr . unVRuler
+  unsafeCastGObject = VRuler . castForeignPtr . unGObject
+
+castToVRuler :: GObjectClass obj => obj -> VRuler
+castToVRuler = castTo gTypeVRuler "VRuler"
+
+gTypeVRuler :: GType
+gTypeVRuler =
+  {# call fun unsafe gtk_vruler_get_type #}
+
 -- ********************************************************************** Range
 
 {#pointer *GtkRange as Range foreign newtype #} deriving (Eq,Ord)
@@ -3750,6 +4330,7 @@
 
 instance RangeClass Range
 instance WidgetClass Range
+instance ObjectClass Range
 instance GObjectClass Range where
   toGObject = GObject . castForeignPtr . unRange
   unsafeCastGObject = Range . castForeignPtr . unGObject
@@ -3775,6 +4356,7 @@
 instance ScaleClass Scale
 instance RangeClass Scale
 instance WidgetClass Scale
+instance ObjectClass Scale
 instance GObjectClass Scale where
   toGObject = GObject . castForeignPtr . unScale
   unsafeCastGObject = Scale . castForeignPtr . unGObject
@@ -3801,6 +4383,7 @@
 instance ScaleClass HScale
 instance RangeClass HScale
 instance WidgetClass HScale
+instance ObjectClass HScale
 instance GObjectClass HScale where
   toGObject = GObject . castForeignPtr . unHScale
   unsafeCastGObject = HScale . castForeignPtr . unGObject
@@ -3827,6 +4410,7 @@
 instance ScaleClass VScale
 instance RangeClass VScale
 instance WidgetClass VScale
+instance ObjectClass VScale
 instance GObjectClass VScale where
   toGObject = GObject . castForeignPtr . unVScale
   unsafeCastGObject = VScale . castForeignPtr . unGObject
@@ -3852,6 +4436,7 @@
 instance ScrollbarClass Scrollbar
 instance RangeClass Scrollbar
 instance WidgetClass Scrollbar
+instance ObjectClass Scrollbar
 instance GObjectClass Scrollbar where
   toGObject = GObject . castForeignPtr . unScrollbar
   unsafeCastGObject = Scrollbar . castForeignPtr . unGObject
@@ -3878,6 +4463,7 @@
 instance ScrollbarClass HScrollbar
 instance RangeClass HScrollbar
 instance WidgetClass HScrollbar
+instance ObjectClass HScrollbar
 instance GObjectClass HScrollbar where
   toGObject = GObject . castForeignPtr . unHScrollbar
   unsafeCastGObject = HScrollbar . castForeignPtr . unGObject
@@ -3904,6 +4490,7 @@
 instance ScrollbarClass VScrollbar
 instance RangeClass VScrollbar
 instance WidgetClass VScrollbar
+instance ObjectClass VScrollbar
 instance GObjectClass VScrollbar where
   toGObject = GObject . castForeignPtr . unVScrollbar
   unsafeCastGObject = VScrollbar . castForeignPtr . unGObject
@@ -3928,6 +4515,7 @@
 
 instance SeparatorClass Separator
 instance WidgetClass Separator
+instance ObjectClass Separator
 instance GObjectClass Separator where
   toGObject = GObject . castForeignPtr . unSeparator
   unsafeCastGObject = Separator . castForeignPtr . unGObject
@@ -3953,6 +4541,7 @@
 instance HSeparatorClass HSeparator
 instance SeparatorClass HSeparator
 instance WidgetClass HSeparator
+instance ObjectClass HSeparator
 instance GObjectClass HSeparator where
   toGObject = GObject . castForeignPtr . unHSeparator
   unsafeCastGObject = HSeparator . castForeignPtr . unGObject
@@ -3978,6 +4567,7 @@
 instance VSeparatorClass VSeparator
 instance SeparatorClass VSeparator
 instance WidgetClass VSeparator
+instance ObjectClass VSeparator
 instance GObjectClass VSeparator where
   toGObject = GObject . castForeignPtr . unVSeparator
   unsafeCastGObject = VSeparator . castForeignPtr . unGObject
@@ -4002,6 +4592,7 @@
 
 instance InvisibleClass Invisible
 instance WidgetClass Invisible
+instance ObjectClass Invisible
 instance GObjectClass Invisible where
   toGObject = GObject . castForeignPtr . unInvisible
   unsafeCastGObject = Invisible . castForeignPtr . unGObject
@@ -4013,6 +4604,31 @@
 gTypeInvisible =
   {# call fun unsafe gtk_invisible_get_type #}
 
+-- ******************************************************************** Preview
+
+{#pointer *GtkPreview as Preview foreign newtype #} deriving (Eq,Ord)
+
+mkPreview = (Preview, objectUnrefFromMainloop)
+unPreview (Preview o) = o
+
+class WidgetClass o => PreviewClass o
+toPreview :: PreviewClass o => o -> Preview
+toPreview = unsafeCastGObject . toGObject
+
+instance PreviewClass Preview
+instance WidgetClass Preview
+instance ObjectClass Preview
+instance GObjectClass Preview where
+  toGObject = GObject . castForeignPtr . unPreview
+  unsafeCastGObject = Preview . castForeignPtr . unGObject
+
+castToPreview :: GObjectClass obj => obj -> Preview
+castToPreview = castTo gTypePreview "Preview"
+
+gTypePreview :: GType
+gTypePreview =
+  {# call fun unsafe gtk_preview_get_type #}
+
 -- **************************************************************** ProgressBar
 
 {#pointer *GtkProgressBar as ProgressBar foreign newtype #} deriving (Eq,Ord)
@@ -4026,6 +4642,7 @@
 
 instance ProgressBarClass ProgressBar
 instance WidgetClass ProgressBar
+instance ObjectClass ProgressBar
 instance GObjectClass ProgressBar where
   toGObject = GObject . castForeignPtr . unProgressBar
   unsafeCastGObject = ProgressBar . castForeignPtr . unGObject
@@ -4037,30 +4654,6 @@
 gTypeProgressBar =
   {# call fun unsafe gtk_progress_bar_get_type #}
 
--- ******************************************************************* LevelBar
-
-{#pointer *GtkLevelBar as LevelBar foreign newtype #} deriving (Eq,Ord)
-
-mkLevelBar = (LevelBar, objectUnrefFromMainloop)
-unLevelBar (LevelBar o) = o
-
-class WidgetClass o => LevelBarClass o
-toLevelBar :: LevelBarClass o => o -> LevelBar
-toLevelBar = unsafeCastGObject . toGObject
-
-instance LevelBarClass LevelBar
-instance WidgetClass LevelBar
-instance GObjectClass LevelBar where
-  toGObject = GObject . castForeignPtr . unLevelBar
-  unsafeCastGObject = LevelBar . castForeignPtr . unGObject
-
-castToLevelBar :: GObjectClass obj => obj -> LevelBar
-castToLevelBar = castTo gTypeLevelBar "LevelBar"
-
-gTypeLevelBar :: GType
-gTypeLevelBar =
-  {# call fun unsafe gtk_level_bar_get_type #}
-
 -- ***************************************************************** Adjustment
 
 {#pointer *GtkAdjustment as Adjustment foreign newtype #} deriving (Eq,Ord)
@@ -4068,11 +4661,12 @@
 mkAdjustment = (Adjustment, objectUnrefFromMainloop)
 unAdjustment (Adjustment o) = o
 
-class GObjectClass o => AdjustmentClass o
+class ObjectClass o => AdjustmentClass o
 toAdjustment :: AdjustmentClass o => o -> Adjustment
 toAdjustment = unsafeCastGObject . toGObject
 
 instance AdjustmentClass Adjustment
+instance ObjectClass Adjustment
 instance GObjectClass Adjustment where
   toGObject = GObject . castForeignPtr . unAdjustment
   unsafeCastGObject = Adjustment . castForeignPtr . unGObject
@@ -4091,11 +4685,12 @@
 mkIMContext = (IMContext, objectUnrefFromMainloop)
 unIMContext (IMContext o) = o
 
-class GObjectClass o => IMContextClass o
+class ObjectClass o => IMContextClass o
 toIMContext :: IMContextClass o => o -> IMContext
 toIMContext = unsafeCastGObject . toGObject
 
 instance IMContextClass IMContext
+instance ObjectClass IMContext
 instance GObjectClass IMContext where
   toGObject = GObject . castForeignPtr . unIMContext
   unsafeCastGObject = IMContext . castForeignPtr . unGObject
@@ -4120,6 +4715,7 @@
 
 instance IMMulticontextClass IMMulticontext
 instance IMContextClass IMMulticontext
+instance ObjectClass IMMulticontext
 instance GObjectClass IMMulticontext where
   toGObject = GObject . castForeignPtr . unIMMulticontext
   unsafeCastGObject = IMMulticontext . castForeignPtr . unGObject
@@ -4144,6 +4740,7 @@
 
 instance IMContextSimpleClass IMContextSimple
 instance IMContextClass IMContextSimple
+instance ObjectClass IMContextSimple
 instance GObjectClass IMContextSimple where
   toGObject = GObject . castForeignPtr . unIMContextSimple
   unsafeCastGObject = IMContextSimple . castForeignPtr . unGObject
@@ -4155,6 +4752,54 @@
 gTypeIMContextSimple =
   {# call fun unsafe gtk_im_context_simple_get_type #}
 
+-- **************************************************************** ItemFactory
+
+{#pointer *GtkItemFactory as ItemFactory foreign newtype #} deriving (Eq,Ord)
+
+mkItemFactory = (ItemFactory, objectUnrefFromMainloop)
+unItemFactory (ItemFactory o) = o
+
+class ObjectClass o => ItemFactoryClass o
+toItemFactory :: ItemFactoryClass o => o -> ItemFactory
+toItemFactory = unsafeCastGObject . toGObject
+
+instance ItemFactoryClass ItemFactory
+instance ObjectClass ItemFactory
+instance GObjectClass ItemFactory where
+  toGObject = GObject . castForeignPtr . unItemFactory
+  unsafeCastGObject = ItemFactory . castForeignPtr . unGObject
+
+castToItemFactory :: GObjectClass obj => obj -> ItemFactory
+castToItemFactory = castTo gTypeItemFactory "ItemFactory"
+
+gTypeItemFactory :: GType
+gTypeItemFactory =
+  {# call fun unsafe gtk_item_factory_get_type #}
+
+-- ******************************************************************* Tooltips
+
+{#pointer *GtkTooltips as Tooltips foreign newtype #} deriving (Eq,Ord)
+
+mkTooltips = (Tooltips, objectUnrefFromMainloop)
+unTooltips (Tooltips o) = o
+
+class ObjectClass o => TooltipsClass o
+toTooltips :: TooltipsClass o => o -> Tooltips
+toTooltips = unsafeCastGObject . toGObject
+
+instance TooltipsClass Tooltips
+instance ObjectClass Tooltips
+instance GObjectClass Tooltips where
+  toGObject = GObject . castForeignPtr . unTooltips
+  unsafeCastGObject = Tooltips . castForeignPtr . unGObject
+
+castToTooltips :: GObjectClass obj => obj -> Tooltips
+castToTooltips = castTo gTypeTooltips "Tooltips"
+
+gTypeTooltips :: GType
+gTypeTooltips =
+  {# call fun unsafe gtk_tooltips_get_type #}
+
 -- ************************************************************* TreeViewColumn
 
 {#pointer *GtkTreeViewColumn as TreeViewColumn foreign newtype #} deriving (Eq,Ord)
@@ -4162,11 +4807,12 @@
 mkTreeViewColumn = (TreeViewColumn, objectUnrefFromMainloop)
 unTreeViewColumn (TreeViewColumn o) = o
 
-class GObjectClass o => TreeViewColumnClass o
+class ObjectClass o => TreeViewColumnClass o
 toTreeViewColumn :: TreeViewColumnClass o => o -> TreeViewColumn
 toTreeViewColumn = unsafeCastGObject . toGObject
 
 instance TreeViewColumnClass TreeViewColumn
+instance ObjectClass TreeViewColumn
 instance GObjectClass TreeViewColumn where
   toGObject = GObject . castForeignPtr . unTreeViewColumn
   unsafeCastGObject = TreeViewColumn . castForeignPtr . unGObject
@@ -4185,11 +4831,12 @@
 mkCellRenderer = (CellRenderer, objectUnrefFromMainloop)
 unCellRenderer (CellRenderer o) = o
 
-class GObjectClass o => CellRendererClass o
+class ObjectClass o => CellRendererClass o
 toCellRenderer :: CellRendererClass o => o -> CellRenderer
 toCellRenderer = unsafeCastGObject . toGObject
 
 instance CellRendererClass CellRenderer
+instance ObjectClass CellRenderer
 instance GObjectClass CellRenderer where
   toGObject = GObject . castForeignPtr . unCellRenderer
   unsafeCastGObject = CellRenderer . castForeignPtr . unGObject
@@ -4214,6 +4861,7 @@
 
 instance CellRendererSpinnerClass CellRendererSpinner
 instance CellRendererClass CellRendererSpinner
+instance ObjectClass CellRendererSpinner
 instance GObjectClass CellRendererSpinner where
   toGObject = GObject . castForeignPtr . unCellRendererSpinner
   unsafeCastGObject = CellRendererSpinner . castForeignPtr . unGObject
@@ -4238,6 +4886,7 @@
 
 instance CellRendererPixbufClass CellRendererPixbuf
 instance CellRendererClass CellRendererPixbuf
+instance ObjectClass CellRendererPixbuf
 instance GObjectClass CellRendererPixbuf where
   toGObject = GObject . castForeignPtr . unCellRendererPixbuf
   unsafeCastGObject = CellRendererPixbuf . castForeignPtr . unGObject
@@ -4262,6 +4911,7 @@
 
 instance CellRendererTextClass CellRendererText
 instance CellRendererClass CellRendererText
+instance ObjectClass CellRendererText
 instance GObjectClass CellRendererText where
   toGObject = GObject . castForeignPtr . unCellRendererText
   unsafeCastGObject = CellRendererText . castForeignPtr . unGObject
@@ -4287,6 +4937,7 @@
 instance CellRendererAccelClass CellRendererAccel
 instance CellRendererTextClass CellRendererAccel
 instance CellRendererClass CellRendererAccel
+instance ObjectClass CellRendererAccel
 instance GObjectClass CellRendererAccel where
   toGObject = GObject . castForeignPtr . unCellRendererAccel
   unsafeCastGObject = CellRendererAccel . castForeignPtr . unGObject
@@ -4312,6 +4963,7 @@
 instance CellRendererSpinClass CellRendererSpin
 instance CellRendererTextClass CellRendererSpin
 instance CellRendererClass CellRendererSpin
+instance ObjectClass CellRendererSpin
 instance GObjectClass CellRendererSpin where
   toGObject = GObject . castForeignPtr . unCellRendererSpin
   unsafeCastGObject = CellRendererSpin . castForeignPtr . unGObject
@@ -4337,6 +4989,7 @@
 instance CellRendererComboClass CellRendererCombo
 instance CellRendererTextClass CellRendererCombo
 instance CellRendererClass CellRendererCombo
+instance ObjectClass CellRendererCombo
 instance GObjectClass CellRendererCombo where
   toGObject = GObject . castForeignPtr . unCellRendererCombo
   unsafeCastGObject = CellRendererCombo . castForeignPtr . unGObject
@@ -4361,6 +5014,7 @@
 
 instance CellRendererToggleClass CellRendererToggle
 instance CellRendererClass CellRendererToggle
+instance ObjectClass CellRendererToggle
 instance GObjectClass CellRendererToggle where
   toGObject = GObject . castForeignPtr . unCellRendererToggle
   unsafeCastGObject = CellRendererToggle . castForeignPtr . unGObject
@@ -4385,6 +5039,7 @@
 
 instance CellRendererProgressClass CellRendererProgress
 instance CellRendererClass CellRendererProgress
+instance ObjectClass CellRendererProgress
 instance GObjectClass CellRendererProgress where
   toGObject = GObject . castForeignPtr . unCellRendererProgress
   unsafeCastGObject = CellRendererProgress . castForeignPtr . unGObject
@@ -4403,11 +5058,12 @@
 mkFileFilter = (FileFilter, objectUnrefFromMainloop)
 unFileFilter (FileFilter o) = o
 
-class GObjectClass o => FileFilterClass o
+class ObjectClass o => FileFilterClass o
 toFileFilter :: FileFilterClass o => o -> FileFilter
 toFileFilter = unsafeCastGObject . toGObject
 
 instance FileFilterClass FileFilter
+instance ObjectClass FileFilter
 instance GObjectClass FileFilter where
   toGObject = GObject . castForeignPtr . unFileFilter
   unsafeCastGObject = FileFilter . castForeignPtr . unGObject
@@ -4426,11 +5082,12 @@
 mkBuilder = (Builder, objectUnrefFromMainloop)
 unBuilder (Builder o) = o
 
-class GObjectClass o => BuilderClass o
+class ObjectClass o => BuilderClass o
 toBuilder :: BuilderClass o => o -> Builder
 toBuilder = unsafeCastGObject . toGObject
 
 instance BuilderClass Builder
+instance ObjectClass Builder
 instance GObjectClass Builder where
   toGObject = GObject . castForeignPtr . unBuilder
   unsafeCastGObject = Builder . castForeignPtr . unGObject
@@ -4442,75 +5099,6 @@
 gTypeBuilder =
   {# call fun unsafe gtk_builder_get_type #}
 
--- *************************************************************** StyleContext
-
-{#pointer *GtkStyleContext as StyleContext foreign newtype #} deriving (Eq,Ord)
-
-mkStyleContext = (StyleContext, objectUnrefFromMainloop)
-unStyleContext (StyleContext o) = o
-
-class GObjectClass o => StyleContextClass o
-toStyleContext :: StyleContextClass o => o -> StyleContext
-toStyleContext = unsafeCastGObject . toGObject
-
-instance StyleContextClass StyleContext
-instance GObjectClass StyleContext where
-  toGObject = GObject . castForeignPtr . unStyleContext
-  unsafeCastGObject = StyleContext . castForeignPtr . unGObject
-
-castToStyleContext :: GObjectClass obj => obj -> StyleContext
-castToStyleContext = castTo gTypeStyleContext "StyleContext"
-
-gTypeStyleContext :: GType
-gTypeStyleContext =
-  {# call fun unsafe gtk_style_context_get_type #}
-
--- ************************************************************** StyleProvider
-
-{#pointer *GtkStyleProvider as StyleProvider foreign newtype #} deriving (Eq,Ord)
-
-mkStyleProvider = (StyleProvider, objectUnrefFromMainloop)
-unStyleProvider (StyleProvider o) = o
-
-class GObjectClass o => StyleProviderClass o
-toStyleProvider :: StyleProviderClass o => o -> StyleProvider
-toStyleProvider = unsafeCastGObject . toGObject
-
-instance StyleProviderClass StyleProvider
-instance GObjectClass StyleProvider where
-  toGObject = GObject . castForeignPtr . unStyleProvider
-  unsafeCastGObject = StyleProvider . castForeignPtr . unGObject
-
-castToStyleProvider :: GObjectClass obj => obj -> StyleProvider
-castToStyleProvider = castTo gTypeStyleProvider "StyleProvider"
-
-gTypeStyleProvider :: GType
-gTypeStyleProvider =
-  {# call fun unsafe gtk_style_provider_get_type #}
-
--- **************************************************************** CssProvider
-
-{#pointer *GtkCssProvider as CssProvider foreign newtype #} deriving (Eq,Ord)
-
-mkCssProvider = (CssProvider, objectUnrefFromMainloop)
-unCssProvider (CssProvider o) = o
-
-class GObjectClass o => CssProviderClass o
-toCssProvider :: CssProviderClass o => o -> CssProvider
-toCssProvider = unsafeCastGObject . toGObject
-
-instance CssProviderClass CssProvider
-instance GObjectClass CssProvider where
-  toGObject = GObject . castForeignPtr . unCssProvider
-  unsafeCastGObject = CssProvider . castForeignPtr . unGObject
-
-castToCssProvider :: GObjectClass obj => obj -> CssProvider
-castToCssProvider = castTo gTypeCssProvider "CssProvider"
-
-gTypeCssProvider :: GType
-gTypeCssProvider =
-  {# call fun unsafe gtk_css_provider_get_type #}
-
 -- ***************************************************************** CellLayout
 
 {#pointer *GtkCellLayout as CellLayout foreign newtype #} deriving (Eq,Ord)
@@ -5161,4 +5749,27 @@
 gTypeFileChooser :: GType
 gTypeFileChooser =
   {# call fun unsafe gtk_file_chooser_get_type #}
+
+-- ************************************************************************* GC
+
+{#pointer *GdkGC as GC foreign newtype #} deriving (Eq,Ord)
+
+mkGC = (GC, objectUnrefFromMainloop)
+unGC (GC o) = o
+
+class GObjectClass o => GCClass o
+toGC :: GCClass o => o -> GC
+toGC = unsafeCastGObject . toGObject
+
+instance GCClass GC
+instance GObjectClass GC where
+  toGObject = GObject . castForeignPtr . unGC
+  unsafeCastGObject = GC . castForeignPtr . unGObject
+
+castToGC :: GObjectClass obj => obj -> GC
+castToGC = castTo gTypeGC "GC"
+
+gTypeGC :: GType
+gTypeGC =
+  {# call fun unsafe gdk_gc_get_type #}
 
diff --git a/Gtk2HsSetup.hs b/Gtk2HsSetup.hs
--- a/Gtk2HsSetup.hs
+++ b/Gtk2HsSetup.hs
@@ -429,15 +429,10 @@
   let modDeps = zipWith (ModDep True []) expMods mExpFiles++
                 zipWith (ModDep False []) othMods mOthFiles
   modDeps <- mapM extractDeps modDeps
-  let (expMods, othMods) = span mdExposed $ sortTopological modDeps
-      badOther = map (fromMaybe "<no file>" . mdLocation) $
-                 filter (not . mdExposed) expMods
-  unless (null badOther) $
-    die ("internal chs modules "++intercalate "," badOther++
-         " depend on exposed chs modules; cabal needs to build internal modules first")
+  let (othMods, expMods) = span (not . mdExposed) $ reverse $ sortTopological modDeps
   return pd { PD.library = Just lib {
-    PD.exposedModules = map mdOriginal expMods,
-    PD.libBuildInfo = bi { PD.otherModules = map mdOriginal othMods }
+    PD.exposedModules = map mdOriginal (reverse expMods),
+    PD.libBuildInfo = bi { PD.otherModules = map mdOriginal (reverse othMods) }
   }}
 
 data ModDep = ModDep {
diff --git a/SetupWrapper.hs b/SetupWrapper.hs
--- a/SetupWrapper.hs
+++ b/SetupWrapper.hs
@@ -18,7 +18,7 @@
 
 import System.Environment
 import System.Process
-import System.Exit
+import System.Exit (ExitCode(..), exitWith)
 import System.FilePath
 import System.Directory
 import qualified Control.Exception as Exception
diff --git a/demo/embedded/Embedded.hs b/demo/embedded/Embedded.hs
--- a/demo/embedded/Embedded.hs
+++ b/demo/embedded/Embedded.hs
@@ -12,6 +12,7 @@
 import Control.Monad
 import Control.Monad.Trans
 import Control.Concurrent
+import Data.Text (unpack)
 
 import Graphics.UI.Gtk
 import Graphics.UI.Gtk.Gdk.DrawWindow
@@ -38,7 +39,7 @@
   window <- windowNew
   windowSetPosition window WinPosCenter
   windowSetDefaultSize window 600 400
-  windowSetTitle window "Press `m` to new tab, press `q` exit."
+  set window [windowTitle := "Press `m` to new tab, press `q` exit."]
   on window objectDestroy mainQuit
 
   -- Create notebook to contain GtkSocekt.
@@ -49,7 +50,7 @@
   window `on` keyPressEvent $ tryEvent $ do
     keyName <- eventKeyName
     liftIO $
-      case keyName of
+      case unpack keyName of
         "m" -> do
                -- Create new GtkSocket.
                socket <- socketNew
diff --git a/gtk.cabal b/gtk.cabal
--- a/gtk.cabal
+++ b/gtk.cabal
@@ -1,5 +1,5 @@
 Name:           gtk
-Version:        0.13.4
+Version:        0.13.6
 License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
