GNOME Bugzilla – Bug 759603
gtkmm build broken by recent GtkBorder change
Last modified: 2015-12-17 19:49:21 UTC
After this commit: https://git.gnome.org/browse/gtk+/commit/?id=a6e4de28842002e7bfdf73def26c4c52d9f9126a gtkmm now fails to build with: ../gtkmm/border.h:32:40: error: conflicting declaration ‘typedef struct _GtkBorder GtkBorder’ extern "C" { typedef struct _GtkBorder GtkBorder; }
Created attachment 317585 [details] [review] gtk+ patch reverting the GtkBorder = GdkBorder change To be applied to GTK+. It mostly reverts the old change that caused this and the breakage in WebKit.
Thanks, Mathias. This fixes the gtkmm build: https://git.gnome.org/browse/gtkmm/commit/?id=5e6b1912b0ed627dccb16b2cf00547cfeeb7654f It is a little odd that GtkBorder, a boxed type, with *_get_type(), copy() and free() functions, is now just a typedef to a raw struct. Is this intentional?
https://git.gnome.org/browse/gtk+/commit/?id=5190d010d95010a845715c719c3b85a75e0c513a reverted GtkBorder back to what it was before.
Yes, sorry. Murray, could you please revert the gtkmm commit? I didn't anticipate such an innocuous change could cause these problems...
Done. Note that it wasn't a big problem for gtkmm. We don't mind a little minor API breakage as long as there's no ABI breakage.
(In reply to Murray Cumming from comment #2) > Thanks, Mathias. This fixes the gtkmm build: > https://git.gnome.org/browse/gtkmm/commit/ > ?id=5e6b1912b0ed627dccb16b2cf00547cfeeb7654f > > It is a little odd that GtkBorder, a boxed type, with *_get_type(), copy() > and free() functions, is now just a typedef to a raw struct. Is this > intentional? Not sure I follow. A boxed type is by definition just a raw struct (with copy and free). Anyway, its all resolved now
(In reply to Matthias Clasen from comment #6) > (In reply to Murray Cumming from comment #2) > > Thanks, Mathias. This fixes the gtkmm build: > > https://git.gnome.org/browse/gtkmm/commit/ > > ?id=5e6b1912b0ed627dccb16b2cf00547cfeeb7654f > > > > It is a little odd that GtkBorder, a boxed type, with *_get_type(), copy() > > and free() functions, is now just a typedef to a raw struct. Is this > > intentional? > > Not sure I follow. A boxed type is by definition just a raw struct (with > copy and free). But GdkBorder didn't have those functions, or a GType. You couldn't do to a GdkBorder what you could do to a GtkBorder, so they weren't really the same.