GNOME Bugzilla – Bug 102298
Build fails against gtk+-2.2
Last modified: 2004-12-22 21:47:04 UTC
gtkmm doesn't build against gtk+-2.2.0, the build fails with the following error: treeview.cc: In static member function `static void Gtk::TreeView_Class::class_init_function(void*, void*)': treeview.cc:891: invalid conversion from `void (*)(GtkTreeView*)' to `gboolean (*)(GtkTreeView*)' Here is a patch to make it build. Thanks. <patch> diff -rc gtkmm-2.0.2/gtk/src/gtk_signals.defs gtkmm-2.0.2.patched/gtk/src/gtk_signals.defs *** gtkmm-2.0.2/gtk/src/gtk_signals.defs Mon Apr 15 14:30:41 2002 --- gtkmm-2.0.2.patched/gtk/src/gtk_signals.defs Wed Jan 1 00:17:21 2003 *************** *** 15851,15869 **** (define-signal select-all (of-object "GtkTreeView") ! (return-type "void") (when "last") ) (define-signal unselect-all (of-object "GtkTreeView") ! (return-type "void") (when "last") ) (define-signal select-cursor-row (of-object "GtkTreeView") ! (return-type "void") (when "last") (parameters '("gboolean" "p0") --- 15851,15869 ---- (define-signal select-all (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") ) (define-signal unselect-all (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") ) (define-signal select-cursor-row (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") (parameters '("gboolean" "p0") *************** *** 15872,15884 **** (define-signal toggle-cursor-row (of-object "GtkTreeView") ! (return-type "void") (when "last") ) (define-signal expand-collapse-cursor-row (of-object "GtkTreeView") ! (return-type "void") (when "last") (parameters '("gboolean" "p0") --- 15872,15884 ---- (define-signal toggle-cursor-row (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") ) (define-signal expand-collapse-cursor-row (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") (parameters '("gboolean" "p0") *************** *** 15889,15901 **** (define-signal select-cursor-parent (of-object "GtkTreeView") ! (return-type "void") (when "last") ) (define-signal start-interactive-search (of-object "GtkTreeView") ! (return-type "void") (when "last") ) --- 15889,15901 ---- (define-signal select-cursor-parent (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") ) (define-signal start-interactive-search (of-object "GtkTreeView") ! (return-type "gboolean") (when "last") ) diff -rc gtkmm-2.0.2/gtk/src/treeview.hg gtkmm-2.0.2.patched/gtk/src/treeview.hg *** gtkmm-2.0.2/gtk/src/treeview.hg Sat Nov 30 09:02:08 2002 --- gtkmm-2.0.2.patched/gtk/src/treeview.hg Wed Jan 1 00:17:47 2003 *************** *** 332,344 **** _WRAP_SIGNAL(void columns_changed(), "columns-changed") _WRAP_SIGNAL(bool move_cursor(MovementStep step, int count), "move-cursor") ! _WRAP_SIGNAL(void select_all(), "select-all") ! _WRAP_SIGNAL(void unselect_all(), "unselect-all") ! _WRAP_SIGNAL(void select_cursor_row(bool start_editing), "select-cursor-row") ! _WRAP_SIGNAL(void toggle_cursor_row(), "toggle-cursor-row") ! _WRAP_SIGNAL(void expand_collapse_cursor_row(bool logical, bool expand, bool open_all), "expand-collapse-cursor-row") ! _WRAP_SIGNAL(void select_cursor_parent(), "select-cursor-parent") ! _WRAP_SIGNAL(void start_interactive_search(), "start-interactive-search") _WRAP_PROPERTY("model", Glib::RefPtr<TreeModel>) --- 332,344 ---- _WRAP_SIGNAL(void columns_changed(), "columns-changed") _WRAP_SIGNAL(bool move_cursor(MovementStep step, int count), "move-cursor") ! _WRAP_SIGNAL(bool select_all(), "select-all") ! _WRAP_SIGNAL(bool unselect_all(), "unselect-all") ! _WRAP_SIGNAL(bool select_cursor_row(bool start_editing), "select-cursor-row") ! _WRAP_SIGNAL(bool toggle_cursor_row(), "toggle-cursor-row") ! _WRAP_SIGNAL(bool expand_collapse_cursor_row(bool logical, bool expand, bool open_all), "expand-collapse-cursor-row") ! _WRAP_SIGNAL(bool select_cursor_parent(), "select-cursor-parent") ! _WRAP_SIGNAL(bool start_interactive_search(), "start-interactive-search") _WRAP_PROPERTY("model", Glib::RefPtr<TreeModel>)
I'm sorry, an API/ABI change like this won't go into gtkmm-2.0 -- apart from the problem that it breaks the build with GTK+ 2.0. As stated in the gtkmm-2.1.2 announcement, this is a known problem, only the combinations GTK+ 2.0/gtkmm 2.0 and GTK+ 2.2/gtkmm 2.1 work. Thus I recommend to get the latest gtkmm 2.1 -- it's API/ABI stable as well, and gtkmm 2.2 is soon to be released.
P.S.: gtkmm 2.1.3 will be released today, so you can save some download and build time if you wait a few hours :)