[gtkada] GtkAda-2.2.X with Gtk+-2.4 -- More information

Jeffrey Creem jeff at thecreems.com
Wed Jun 16 04:10:47 CEST 2004


There was a thread a few weeks back about this. GtkAda does not
build/install against Gtk+-2.4. Since a
patch did not appear from the person who was going to look at it I thought
I'd take a quick look. I had suspected something (hopefully) trivial in the
C portion of the binding but this turned out to be a little tricky to fix.

The problem is that GtkAda contains a copy of the GtkExtra widgets. GtkExtra
contains a a widget called
gtkcombobox. The problem is that Gtk+-2.4.2 has its own gtkcombobox with the
exact same name and exact same
include file name but it is not really source compatible with the old
GtkExtra version of the widget.

It looks like there are probably about 3 choices here.

1) Disable access to the old GtkExtra style gtkcombobox widget (and all of
its children)
2) Modify the misc_extra.c and GtkAda code to use the Gtk+-2.4 GtkCombobox
3) Modify the local gtkextra c code and associated misc_extra and Ada code
to avoid the name collisions.

1 is obviously a poor choice because it breaks source compatibility with
older GtkAda releases
2 looks like it would be difficult to do as well because I see no obvious
way to use the official Gtk+-2.4.2 combobox to provide all of the features
of the old GtkExtra combobox
3 is not really techincally difficult however it has a few drawbacks
  a) I dont see any good way to correct it without renaming a .c and .h file
in the gtkextra directory. (note that there
      are probably some non good ways of avoiding the rename...but they are
ugly). The only ugly thing about the
      file rename approach is it makes any fix non-cvs-patch friendly
  b) It continues to make the GtkExtra combobox exist when (perhaps) people
should move to use the real
      one....

In any case I did come up with an approach that works (renaming
gtkcombobox.h and gtkcombobox.c in the
gtkextra directory to gtkextracombobox.h and gtkextracombobox.c and then
using a similar approach on macros
and typedefs of inserting an "extra" to make the name unique).

With these changes in place things compile and the testgtk application seems
to run ok (This is a Solaris host)

If anyone is interested I can create the patches.

Also found and fixed a problem that prevented GCC 3.4 from compiling
gtkplot3d (in gtkextra) but it looks like that
already is in CVS.




More information about the gtkada mailing list