diff --git a/Graphics/UI/Gtk/Abstract/Object.chs b/Graphics/UI/Gtk/Abstract/Object.chs
--- a/Graphics/UI/Gtk/Abstract/Object.chs
+++ b/Graphics/UI/Gtk/Abstract/Object.chs
@@ -126,7 +126,8 @@
 
 {#pointer GWeakNotify#}
 
-foreign import ccall "wrapper" mkDestructor :: IO () -> IO GWeakNotify
+foreign import ccall "wrapper" mkDestructor
+  :: (Ptr () -> Ptr GObject -> IO ()) -> IO GWeakNotify
 
 -- | Attach a callback that will be called after the
 -- destroy hooks have been called
@@ -134,7 +135,7 @@
 objectWeakref :: ObjectClass o => o -> IO () -> IO GWeakNotify
 objectWeakref obj uFun = do
   funPtrContainer <- newIORef nullFunPtr
-  uFunPtr <- mkDestructor $ do
+  uFunPtr <- mkDestructor $ \_ _ -> do
     uFun
     funPtr <- readIORef funPtrContainer
     freeHaskellFunPtr funPtr
diff --git a/Graphics/UI/Gtk/Entry/Entry.chs b/Graphics/UI/Gtk/Entry/Entry.chs
--- a/Graphics/UI/Gtk/Entry/Entry.chs
+++ b/Graphics/UI/Gtk/Entry/Entry.chs
@@ -78,6 +78,10 @@
   entrySetCompletion,
   entryGetCompletion,
 #endif
+#if GTK_CHECK_VERSION (2,18,0)
+  entryGetBuffer,
+  entrySetBuffer,
+#endif
 #if GTK_CHECK_VERSION(2,20,0)
   entryGetIconWindow,
   entryGetTextWindow,
@@ -104,6 +108,9 @@
   entryAlignment,
   entryCompletion,
 #endif
+#if GTK_CHECK_VERSION (2,18,0)
+  entryBuffer,
+#endif
 
 -- * Signals
   entryActivate,
@@ -157,6 +164,9 @@
 import Graphics.UI.Gtk.Gdk.EventM	(EventM, EButton, EKey)
 import Control.Monad.Reader             ( ask )
 import Control.Monad.Trans              ( liftIO )
+#if GTK_CHECK_VERSION (2,18,0)
+import Graphics.UI.Gtk.Entry.EntryBuffer
+#endif
 {#import Graphics.UI.Gtk.Types#}
 {#import Graphics.UI.Gtk.Signals#}
 
@@ -429,6 +439,23 @@
     (toEntry self)
 #endif
 
+#if GTK_CHECK_VERSION(2,18,0)
+-- | Get the 'EntryBuffer' object which holds the text for this widget.
+entryGetBuffer :: EntryClass self => self
+  -> IO EntryBuffer
+entryGetBuffer self =
+  makeNewGObject mkEntryBuffer $
+  {# call gtk_entry_get_buffer #}
+    (toEntry self)
+
+-- | Set the 'EntryBuffer' object which holds the text for this widget.
+entrySetBuffer :: (EntryClass self, EntryBufferClass buffer) => self
+  -> buffer -> IO ()
+entrySetBuffer self =
+  {# call gtk_entry_set_buffer #}
+    (toEntry self) . toEntryBuffer
+#endif
+
 #if GTK_CHECK_VERSION(2,20,0)
 -- | Returns the 'Window' which contains the entry's icon at @iconPos@. This function is useful when
 -- drawing something to the entry in an 'eventExpose' callback because it enables the callback to
@@ -622,6 +649,15 @@
   entryGetCompletion
   entrySetCompletion
 #endif
+
+#if GTK_CHECK_VERSION(2,18,0)
+entryBuffer :: (EntryClass self, EntryBufferClass buffer) =>
+  ReadWriteAttr self EntryBuffer buffer
+entryBuffer = newAttr
+  entryGetBuffer
+  entrySetBuffer
+#endif
+
 
 --------------------
 -- Signals
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
@@ -639,20 +639,24 @@
 
 
 -- | Execute an event handler and assume it handled the event unless it
---   threw a pattern match exception.
+--   threw a pattern match exception or calls mzero (e.g. via guard).
 tryEvent :: EventM any () -> EventM any Bool
 tryEvent act = do
   ptr <- ask
   liftIO $ (runReaderT (act >> return True) ptr)
 #if __GLASGOW_HASKELL__ >= 610
     `catches` [ Handler (\ (PatternMatchFail _) -> return False)
-              , Handler (\ e -> if isUserError e && "Pattern" `isPrefixOf` ioeGetErrorString e
+              , Handler (\ e -> if isUserError e &&
+                                   ("Pattern" `isPrefixOf` ioeGetErrorString e ||
+                                    "mzero" == ioeGetErrorString e)
                                 then return False
                                 else throw e) ]
 #else
     `catch` (\e -> case e of
                IOException e
                  | "user error (Pattern" `isPrefixOf` show e ->
+                   return False
+                 | "user error (mzero" `isPrefixOf` show e ->
                    return False
                PatternMatchFail _ -> return False
                _ -> throw e)
diff --git a/Graphics/UI/Gtk/Gdk/Pixbuf.chs b/Graphics/UI/Gtk/Gdk/Pixbuf.chs
--- a/Graphics/UI/Gtk/Gdk/Pixbuf.chs
+++ b/Graphics/UI/Gtk/Gdk/Pixbuf.chs
@@ -69,6 +69,7 @@
 
 -- * Constructors
   pixbufNew,
+  pixbufNewFromData,
   pixbufNewFromFile,
 #if GTK_CHECK_VERSION(2,4,0)
   pixbufNewFromFileAtSize,
@@ -401,6 +402,19 @@
     {#call pixbuf_new#} ((fromIntegral . fromEnum) colorspace)
       (fromBool hasAlpha) (fromIntegral bitsPerSample) (fromIntegral width)
       (fromIntegral height)
+
+pixbufNewFromData :: Ptr CUChar -> Colorspace -> Bool -> Int -> Int -> Int -> Int -> IO Pixbuf
+pixbufNewFromData imData cSpace hasAlpha bitsPerSample width height rowStride
+  = wrapNewGObject mkPixbuf $
+     {#call pixbuf_new_from_data #}
+       imData
+       (fromIntegral . fromEnum $ cSpace)
+       (fromBool hasAlpha)
+       (fromIntegral bitsPerSample)
+       (fromIntegral width)
+       (fromIntegral height)
+       (fromIntegral rowStride)
+       nullFunPtr nullPtr
 
 -- | Create a new image from a String.
 --
diff --git a/Graphics/UI/Gtk/General/Clipboard.chs b/Graphics/UI/Gtk/General/Clipboard.chs
--- a/Graphics/UI/Gtk/General/Clipboard.chs
+++ b/Graphics/UI/Gtk/General/Clipboard.chs
@@ -260,7 +260,7 @@
                               -- data succeeded.
 clipboardSetWithData self targets getFunc clearFunc = do
   gFunPtr <- mkClipboardGetFunc
-    (\_ sPtr info -> runReaderT (getFunc info) sPtr >> return ())
+    (\_ sPtr info _ -> runReaderT (getFunc info) sPtr >> return ())
   cFunPtr <- mkClipboardClearFunc
     (\_ _ -> clearFunc)
   res <- withTargetEntries targets $ \nTargets targets ->
@@ -282,7 +282,7 @@
 {#pointer ClipboardClearFunc#}
 
 foreign import ccall "wrapper" mkClipboardGetFunc ::
-  (Ptr Clipboard -> Ptr () -> {#type guint#} -> IO ()) -> IO ClipboardGetFunc
+  (Ptr Clipboard -> Ptr () -> {#type guint#} -> Ptr () -> IO ()) -> IO ClipboardGetFunc
 
 foreign import ccall "wrapper" mkClipboardClearFunc ::
   (Ptr Clipboard -> Ptr () -> IO ()) -> IO ClipboardClearFunc
@@ -313,7 +313,7 @@
                               -- ignored.
 clipboardSetWithOwner self targets getFunc clearFunc owner = do
   gFunPtr <- mkClipboardGetFunc
-    (\_ sPtr info -> runReaderT (getFunc info) sPtr >> return ())
+    (\_ sPtr info _ -> runReaderT (getFunc info) sPtr >> return ())
   cFunPtr <- mkClipboardClearFunc
     (\_ _ -> clearFunc)
   res <- withTargetEntries targets $ \nTargets targets ->
@@ -404,7 +404,7 @@
 clipboardRequestContents self (Atom target) callback = do
   cbRef <- newIORef nullFunPtr
   cbPtr <- mkClipboardReceivedFunc
-    (\_ sPtr -> do
+    (\_ sPtr _ -> do
       freeHaskellFunPtr =<< readIORef cbRef
       runReaderT callback sPtr
       return ())
@@ -418,7 +418,7 @@
 {#pointer ClipboardReceivedFunc#}
 
 foreign import ccall "wrapper" mkClipboardReceivedFunc ::
-  (Ptr Clipboard -> Ptr () -> IO ()) -> IO ClipboardReceivedFunc
+  (Ptr Clipboard -> Ptr () -> Ptr () -> IO ()) -> IO ClipboardReceivedFunc
 
 -- %hash c:7bb1 d:4ef1
 -- | Requests the contents of the clipboard as text. When the text is later
@@ -439,7 +439,7 @@
 clipboardRequestText self callback = do
   cbRef <- newIORef nullFunPtr
   cbPtr <- mkClipboardTextReceivedFunc
-    (\_ sPtr -> do
+    (\_ sPtr _ -> do
       freeHaskellFunPtr =<< readIORef cbRef
       mStr <- if sPtr==nullPtr then return Nothing else
         liftM Just $ peekUTFString sPtr
@@ -453,7 +453,7 @@
 {#pointer ClipboardTextReceivedFunc#}
 
 foreign import ccall "wrapper" mkClipboardTextReceivedFunc ::
-  (Ptr Clipboard -> CString -> IO ()) -> IO ClipboardTextReceivedFunc
+  (Ptr Clipboard -> CString -> Ptr () -> IO ()) -> IO ClipboardTextReceivedFunc
 
 
 #if GTK_CHECK_VERSION(2,6,0)
@@ -477,7 +477,7 @@
 clipboardRequestImage self callback = do
   cbRef <- newIORef nullFunPtr
   cbPtr <- mkClipboardImageReceivedFunc
-    (\_ sPtr -> do
+    (\_ sPtr _ -> do
       freeHaskellFunPtr =<< readIORef cbRef
       mPixbuf <- maybeNull (makeNewGObject mkPixbuf) (return sPtr)
       callback mPixbuf)
@@ -490,7 +490,7 @@
 {#pointer ClipboardImageReceivedFunc#}
 
 foreign import ccall "wrapper" mkClipboardImageReceivedFunc ::
-  (Ptr Clipboard -> Ptr Pixbuf -> IO ()) -> IO ClipboardImageReceivedFunc
+  (Ptr Clipboard -> Ptr Pixbuf -> Ptr () -> IO ()) -> IO ClipboardImageReceivedFunc
 
 #endif
 
@@ -513,7 +513,7 @@
 clipboardRequestTargets self callback = do
   cbRef <- newIORef nullFunPtr
   cbPtr <- mkClipboardTargetsReceivedFunc
-    (\_ tPtr len -> do
+    (\_ tPtr len _ -> do
       -- We must free Haskell pointer *in* the callback to avoid segfault.
       freeHaskellFunPtr =<< readIORef cbRef
       mTargets <- if tPtr==nullPtr then return Nothing else
@@ -528,7 +528,7 @@
 {#pointer ClipboardTargetsReceivedFunc#}
 
 foreign import ccall "wrapper" mkClipboardTargetsReceivedFunc ::
-  (Ptr Clipboard -> Ptr (Ptr ()) -> {#type gint#} -> IO ()) -> IO ClipboardTargetsReceivedFunc
+  (Ptr Clipboard -> Ptr (Ptr ()) -> {#type gint#} -> Ptr () -> IO ()) -> IO ClipboardTargetsReceivedFunc
 
 #if GTK_CHECK_VERSION(2,10,0)
 -- %hash c:5601 d:d6a6
@@ -552,10 +552,10 @@
 clipboardRequestRichText self buffer callback = do
   cbRef <- newIORef nullFunPtr
   cbPtr <- mkClipboardRichTextReceivedFunc
-    (\_ tPtr sPtr len -> do
+    (\_ tPtr sPtr len _ -> do
       freeHaskellFunPtr =<< readIORef cbRef
       mRes <- if sPtr==nullPtr then return Nothing else liftM Just $ do
-        str <- peekUTFStringLen (sPtr,fromIntegral len)
+        str <- peekUTFStringLen (castPtr sPtr,fromIntegral len)
         return (Atom tPtr, str)
       callback mRes)
   writeIORef cbRef cbPtr
@@ -568,7 +568,7 @@
 {#pointer ClipboardRichTextReceivedFunc#}
 
 foreign import ccall "wrapper" mkClipboardRichTextReceivedFunc ::
-  (Ptr Clipboard -> Ptr () -> CString -> {#type gsize#} -> IO ()) ->
+  (Ptr Clipboard -> Ptr () -> Ptr CUChar -> {#type gsize#} -> Ptr () -> IO ()) ->
   IO ClipboardRichTextReceivedFunc
 #endif
 #endif
diff --git a/Graphics/UI/Gtk/General/General.chs b/Graphics/UI/Gtk/General/General.chs
--- a/Graphics/UI/Gtk/General/General.chs
+++ b/Graphics/UI/Gtk/General/General.chs
@@ -202,7 +202,7 @@
 --   their arguments from the main loop, that is, from the OS thread of Gtk,
 --   thereby ensuring that any Gtk and OS function can be called.
 --
-{#fun unsafe gdk_threads_enter as threadsEnter {} -> `()' #}
+{#fun gdk_threads_enter as threadsEnter {} -> `()' #}
 
 -- | Release the global Gtk lock.
 --
diff --git a/Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs b/Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs
--- a/Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs
+++ b/Graphics/UI/Gtk/MenuComboToolbar/ComboBox.chs
@@ -493,17 +493,17 @@
   {# call gtk_combo_box_set_row_separator_func #}
     (toComboBox self) nullFunPtr nullPtr nullFunPtr
 comboBoxSetRowSeparatorSource self (Just (model, extract)) = do
-  funPtr <- mkRowSeparatorFunc $ \_ iterPtr -> do
+  funPtr <- mkRowSeparatorFunc $ \_ iterPtr _ -> do
         iter <- peek iterPtr
         value <- customStoreGetRow model iter
-        return (extract value)
+        return (fromBool $ extract value)
   {# call gtk_combo_box_set_row_separator_func #}
     (toComboBox self) funPtr (castFunPtrToPtr funPtr) destroyFunPtr
 
 {#pointer TreeViewRowSeparatorFunc#}
 
 foreign import ccall "wrapper" mkRowSeparatorFunc ::
-  (Ptr TreeModel -> Ptr TreeIter -> IO Bool) -> IO TreeViewRowSeparatorFunc
+  (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO {#type gboolean #}) -> IO TreeViewRowSeparatorFunc
 
 -- %hash c:5bf8
 -- | Sets whether the popup menu should have a tearoff menu item.
diff --git a/Graphics/UI/Gtk/MenuComboToolbar/MenuItem.chs b/Graphics/UI/Gtk/MenuComboToolbar/MenuItem.chs
--- a/Graphics/UI/Gtk/MenuComboToolbar/MenuItem.chs
+++ b/Graphics/UI/Gtk/MenuComboToolbar/MenuItem.chs
@@ -76,6 +76,12 @@
   menuItemNewWithMnemonic,
 
 -- * Methods
+#if GTK_CHECK_VERSION(2,16,0)
+  menuItemSetLabel,
+  menuItemGetLabel,
+  menuItemSetUseUnderline,
+  menuItemGetUseUnderline,
+#endif
   menuItemSetSubmenu,
   menuItemGetSubmenu,
   menuItemRemoveSubmenu,
@@ -89,6 +95,10 @@
 -- * Attributes
   menuItemSubmenu,
   menuItemRightJustified,
+#if GTK_CHECK_VERSION(2,16,0)
+  menuItemLabel,
+  menuItemUseUnderline,
+#endif
 
 -- * Signals
   menuItemActivateItem,
@@ -163,7 +173,36 @@
 
 --------------------
 -- Methods
+#if GTK_CHECK_VERSION(2,16,0)
+-- | Sets text on the MenuItem label
 
+menuItemSetLabel :: (MenuItemClass self) => self -> String -> IO ()
+menuItemSetLabel self label =
+  withUTFString label $ {# call gtk_menu_item_set_label #} (toMenuItem self)
+
+-- | Gets text on the MenuItem label
+menuItemGetLabel :: (MenuItemClass self) => self -> IO String
+menuItemGetLabel self =
+  {# call gtk_menu_item_get_label #}
+    (toMenuItem self)
+  >>= \strPtr -> if strPtr == nullPtr
+                   then return ""
+                   else peekUTFString strPtr
+
+-- | If True, an underline in the text indicates the next character should be used for the mnemonic accelerator key.
+--
+menuItemSetUseUnderline :: (MenuItemClass self) => self -> Bool -> IO ()
+menuItemSetUseUnderline self =
+  {# call gtk_menu_item_set_use_underline #} (toMenuItem self) . fromBool
+
+-- | Checks if an underline in the text indicates the next character should be used for the mnemonic accelerator key.
+--
+menuItemGetUseUnderline :: (MenuItemClass self) => self -> IO Bool
+menuItemGetUseUnderline self =
+  liftM toBool $ {# call gtk_menu_item_get_use_underline #}
+    (toMenuItem self)
+
+#endif
 -- | Sets the item's submenu, or changes it.
 --
 menuItemSetSubmenu :: (MenuItemClass self, MenuClass submenu) => self -> submenu -> IO ()
@@ -278,6 +317,22 @@
   menuItemGetRightJustified
   menuItemSetRightJustified
 
+#if GTK_CHECK_VERSION(2,16,0)
+-- | \'label\' property. See 'menuItemSetLabel' and 'menuItemGetLabel'
+--
+menuItemLabel :: MenuItemClass self => Attr self String
+menuItemLabel = newAttr
+  menuItemGetLabel
+  menuItemSetLabel
+
+-- | \'useUnderline\' property. See 'menuItemSetUseUnderline' and 
+-- 'menuItemGetUseEUnderline'
+--
+menuItemUseUnderline :: MenuItemClass self => Attr self Bool
+menuItemUseUnderline = newAttr
+  menuItemGetUseUnderline
+  menuItemSetUseUnderline
+#endif
 --------------------
 -- Signals
 
diff --git a/Graphics/UI/Gtk/Misc/Tooltip.chs b/Graphics/UI/Gtk/Misc/Tooltip.chs
--- a/Graphics/UI/Gtk/Misc/Tooltip.chs
+++ b/Graphics/UI/Gtk/Misc/Tooltip.chs
@@ -34,8 +34,8 @@
 -- | 'Tooltip' belongs to the new tooltips API that was introduced in Gtk+
 -- 2.12 and which deprecates the old 'Tooltips' API.
 --
--- Basic tooltips can be realized simply by using 'widgetSetTooltipText' or
--- 'widgetSetTooltipMarkup' without any explicit tooltip object.
+-- Basic tooltips can be realized simply by using 'widgetTooltipText' or
+-- 'widgetTooltipMarkup' without any explicit tooltip object.
 --
 -- When you need a tooltip with a little more fancy contents, like adding an
 -- image, or you want the tooltip to have different contents per 'TreeView' row
diff --git a/Graphics/UI/Gtk/ModelView/CustomStore.chs b/Graphics/UI/Gtk/ModelView/CustomStore.chs
--- a/Graphics/UI/Gtk/ModelView/CustomStore.chs
+++ b/Graphics/UI/Gtk/ModelView/CustomStore.chs
@@ -239,7 +239,7 @@
         customTreeDragSourceIface = fromMaybe dummyDragSource mDragSource,
         customTreeDragDestIface = fromMaybe dummyDragDest mDragDest }
   privPtr <- newStablePtr priv
-  liftM con $ makeNewGObject (CustomStore, objectUnref) $
+  liftM con $ wrapNewGObject (CustomStore, objectUnref) $
     gtk2hs_store_new implPtr privPtr
 
 foreign import ccall unsafe "Gtk2HsStore.h gtk2hs_store_new"
diff --git a/Graphics/UI/Gtk/ModelView/TreeModel.chs b/Graphics/UI/Gtk/ModelView/TreeModel.chs
--- a/Graphics/UI/Gtk/ModelView/TreeModel.chs
+++ b/Graphics/UI/Gtk/ModelView/TreeModel.chs
@@ -427,7 +427,7 @@
 {#pointer TreeModelForeachFunc#}
 
 foreign import ccall "wrapper"  mkTreeModelForeachFunc ::
-  (Ptr () -> Ptr () -> Ptr TreeIter -> Ptr () -> IO CInt) ->
+  (Ptr TreeModel -> Ptr NativeTreePath -> Ptr TreeIter -> Ptr () -> IO CInt) ->
   IO TreeModelForeachFunc
 
 #if GTK_CHECK_VERSION(2,2,0)
diff --git a/Graphics/UI/Gtk/ModelView/TreeModelFilter.chs b/Graphics/UI/Gtk/ModelView/TreeModelFilter.chs
--- a/Graphics/UI/Gtk/ModelView/TreeModelFilter.chs
+++ b/Graphics/UI/Gtk/ModelView/TreeModelFilter.chs
@@ -160,7 +160,7 @@
 {#pointer TreeModelFilterVisibleFunc #}
 
 foreign import ccall "wrapper" mkTreeModelFilterVisibleFunc ::
-  (Ptr TreeModelFilter -> Ptr TreeIter -> Ptr () -> IO {#type gboolean#}) ->
+  (Ptr TreeModel -> Ptr TreeIter -> Ptr () -> IO {#type gboolean#}) ->
   IO TreeModelFilterVisibleFunc
 
 -- %hash c:a56d d:b42e
diff --git a/Graphics/UI/Gtk/ModelView/TreeSelection.chs b/Graphics/UI/Gtk/ModelView/TreeSelection.chs
--- a/Graphics/UI/Gtk/ModelView/TreeSelection.chs
+++ b/Graphics/UI/Gtk/ModelView/TreeSelection.chs
@@ -151,7 +151,7 @@
 treeSelectionSetSelectFunction :: TreeSelectionClass self => self
  -> TreeSelectionCB -> IO ()
 treeSelectionSetSelectFunction ts fun = do
-  fPtr <- mkTreeSelectionFunc (\_ _ tp _ -> do
+  fPtr <- mkTreeSelectionFunc (\_ _ tp _ _ -> do
     path <- peekTreePath (castPtr tp)
     liftM fromBool $ fun path
     )
@@ -168,7 +168,7 @@
 {#pointer TreeSelectionFunc#}
 
 foreign import ccall "wrapper"  mkTreeSelectionFunc ::
-  (Ptr () -> Ptr () -> Ptr TreePath -> Ptr () -> IO CInt)->
+  (Ptr TreeSelection -> Ptr TreeModel -> Ptr NativeTreePath -> {#type gint#} -> Ptr () -> IO CInt)->
   IO TreeSelectionFunc
 
 -- | Retrieve the 'TreeView' widget that this 'TreeSelection' works on.
@@ -199,7 +199,7 @@
  -> TreeSelectionForeachCB
  -> IO ()
 treeSelectionSelectedForeach self fun = do
-  fPtr <- mkTreeSelectionForeachFunc (\_ _ iterPtr -> do
+  fPtr <- mkTreeSelectionForeachFunc (\_ _ iterPtr _ -> do
     -- make a deep copy of the iterator. This makes it possible to store this
     -- iterator in Haskell land somewhere. The TreeModel parameter is not
     -- passed to the function due to performance reasons. But since it is
@@ -219,7 +219,7 @@
 {#pointer TreeSelectionForeachFunc#}
 
 foreign import ccall "wrapper"  mkTreeSelectionForeachFunc ::
-  (Ptr () -> Ptr () -> Ptr TreeIter -> IO ()) -> IO TreeSelectionForeachFunc
+  (Ptr TreeModel -> Ptr NativeTreePath -> Ptr TreeIter -> Ptr () -> IO ()) -> IO TreeSelectionForeachFunc
 
 #if GTK_CHECK_VERSION(2,2,0)
 -- | Creates a list of paths of all selected rows.
diff --git a/Graphics/UI/Gtk/ModelView/TreeView.chs b/Graphics/UI/Gtk/ModelView/TreeView.chs
--- a/Graphics/UI/Gtk/ModelView/TreeView.chs
+++ b/Graphics/UI/Gtk/ModelView/TreeView.chs
@@ -582,7 +582,7 @@
 {#pointer TreeViewColumnDropFunc#}
 
 foreign import ccall "wrapper" mkTreeViewColumnDropFunc ::
-  (Ptr () -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr TreeViewColumn ->
+  (Ptr TreeView -> Ptr TreeViewColumn -> Ptr TreeViewColumn -> Ptr TreeViewColumn ->
   Ptr () -> IO {#type gboolean#}) -> IO TreeViewColumnDropFunc
 
 -- | Scroll to a coordinate.
@@ -798,7 +798,7 @@
 {#pointer TreeViewMappingFunc#}
 
 foreign import ccall "wrapper" mkTreeViewMappingFunc ::
-  (Ptr () -> Ptr NativeTreePath -> Ptr () -> IO ()) ->
+  (Ptr TreeView -> Ptr NativeTreePath -> Ptr () -> IO ()) ->
   IO TreeViewMappingFunc
 
 -- | Check if row is expanded.
diff --git a/Graphics/UI/Gtk/Multiline/TextBuffer.chs b/Graphics/UI/Gtk/Multiline/TextBuffer.chs
--- a/Graphics/UI/Gtk/Multiline/TextBuffer.chs
+++ b/Graphics/UI/Gtk/Multiline/TextBuffer.chs
@@ -1251,16 +1251,26 @@
 
 -- | A 'Pixbuf' is inserted into the buffer.
 --
+-- * See note in 'bufferInsertText'.
+--
 insertPixbuf :: TextBufferClass self => Signal self (TextIter -> Pixbuf -> IO ())
 insertPixbuf = Signal (connect_BOXED_OBJECT__NONE "insert-pixbuf" mkTextIterCopy)
 
 -- | The 'insertChildAnchor' signal is emitted to insert a 'TextChildAnchor' in a 'TextBuffer'. 
 -- Insertion actually occurs in the default handler.
 --
+-- * See note in 'bufferInsertText'.
+--
 insertChildAnchor :: TextBufferClass self => Signal self (TextIter -> TextChildAnchor -> IO ())
 insertChildAnchor = Signal (connect_BOXED_OBJECT__NONE "insert-child-anchor" mkTextIterCopy)
 
--- | Some text was inserted.
+-- | Some text is inserted. Insertion actually occurs in the default handler.
+--
+-- * The function connected to this handler may not modify the buffer since
+--   this would invalidate the iterator. If this function replaces the
+--   default handler, it needs to stop the emission of this signal in order
+--   to prevent the default handler from running. If additional text should
+--   be inserted, this can be done using the 'after' function to connect.
 --
 bufferInsertText :: TextBufferClass self => Signal self (TextIter -> String -> IO ())
 bufferInsertText = Signal $ \after obj handler ->
diff --git a/Graphics/UI/Gtk/Multiline/TextIter.chs b/Graphics/UI/Gtk/Multiline/TextIter.chs
--- a/Graphics/UI/Gtk/Multiline/TextIter.chs
+++ b/Graphics/UI/Gtk/Multiline/TextIter.chs
@@ -797,7 +797,7 @@
 {#pointer TextCharPredicate#}
 
 foreign import ccall "wrapper" mkTextCharPredicate ::
-  ({#type gunichar#} -> Ptr () -> {#type gboolean#}) -> IO TextCharPredicate
+  ({#type gunichar#} -> Ptr () -> IO {#type gboolean#}) -> IO TextCharPredicate
 
 -- | Move 'TextIter' forward until a
 -- predicate function returns True.
@@ -810,7 +810,7 @@
 textIterForwardFindChar :: TextIter -> (Char -> Bool) -> Maybe TextIter ->
                            IO Bool
 textIterForwardFindChar ti pred limit = do
-  fPtr <- mkTextCharPredicate (\c _ -> fromBool $ pred (chr (fromIntegral c)))
+  fPtr <- mkTextCharPredicate (\c _ -> return $ fromBool $ pred (chr (fromIntegral c)))
   res <- liftM toBool $ {#call text_iter_forward_find_char#} 
     ti fPtr nullPtr (fromMaybe (TextIter nullForeignPtr) limit)
   freeHaskellFunPtr fPtr
@@ -827,7 +827,7 @@
 textIterBackwardFindChar :: TextIter -> (Char -> Bool) -> Maybe TextIter ->
                             IO Bool
 textIterBackwardFindChar ti pred limit = do
-  fPtr <- mkTextCharPredicate (\c _ -> fromBool $ pred (chr (fromIntegral c)))
+  fPtr <- mkTextCharPredicate (\c _ -> return $ fromBool $ pred (chr (fromIntegral c)))
   res <- liftM toBool $ {#call text_iter_backward_find_char#} 
     ti fPtr nullPtr (fromMaybe (TextIter nullForeignPtr) limit)
   freeHaskellFunPtr fPtr
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
@@ -820,12 +820,8 @@
   ) where
 
 import Foreign.ForeignPtr (ForeignPtr, castForeignPtr, unsafeForeignPtrToPtr)
-#if __GLASGOW_HASKELL__>=704
 import Foreign.C.Types    (CULong(..), CUInt(..))
-#else
-import Foreign.C.Types    (CULong, CUInt)
-#endif
-import System.Glib.GType	(GType, typeInstanceIsA)
+import System.Glib.GType  (GType, typeInstanceIsA)
 {#import System.Glib.GObject#}
 import Graphics.UI.Gtk.General.Threading
 
diff --git a/Graphics/UI/Gtk/Windows/Assistant.chs b/Graphics/UI/Gtk/Windows/Assistant.chs
--- a/Graphics/UI/Gtk/Windows/Assistant.chs
+++ b/Graphics/UI/Gtk/Windows/Assistant.chs
@@ -274,7 +274,7 @@
 {#pointer AssistantPageFunc#}
 
 foreign import ccall "wrapper" mkAssistantPageFunc ::
-  ({#type glong#} -> Ptr () -> IO {#type glong#})
+  ({#type gint#} -> Ptr () -> IO {#type gint#})
   -> IO AssistantPageFunc
 
 -- | Sets the page type for @page@. The page type determines the page behavior
diff --git a/demo/demos.txt b/demo/demos.txt
--- a/demo/demos.txt
+++ b/demo/demos.txt
@@ -93,6 +93,8 @@
 Feature request: avoid svgviewer: user error (Pattern match failure in do expression at SvgViewer.hs:11:2-9)
   when not giving any parameter
 
+textdrop: a minimal sample program showing how to become a drag-n-drop destination
+
 treelist: some examples showing how to use ListView and TreeView widgets; requires the glade package
 
 unicode: Example of an international dialog box (in arabic)
diff --git a/gtk.cabal b/gtk.cabal
--- a/gtk.cabal
+++ b/gtk.cabal
@@ -1,5 +1,5 @@
 Name:           gtk
-Version:        0.12.3.1
+Version:        0.12.4
 License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
