This is a *generality* patch.
Quoting from gtk.info:
GTK provides some unique features. (At least, I know of no other widget
library which provides them). For example, a button does not contain a
label, it contains a child widget, which in most instances will be a
label. However, the child widget can also be a pixmap, image or any
combination possible the programmer desires. This flexibility is adhered
to throughout the library.

So I added gtk_toolbar_(append|prepend|insert)_widget functions
(and fixed the child->(label|icon) == NULL bug): this let us add any
widget to the toolbar. In testgtk I added an entry, for example.
This exposes a bug/feature in the toolbar: all of the children
have the same size (that is the max size of a widget in the toolbar).
This was intended to nicely layout buttons, but we don't want to
limit the toolbar to buttons (hey, think of a word processor toolbar!).
Neverless we still want the *buttons* in the toolbar to have the same
size: I suggest the requisition and allocation functions check the
type of the child widget and make it the same size if it's derived
from "GtkButton". I haven't implemented this yet. Any comments?

The gtk_toolbar_(append|prepend|insert)_item now returns the GtkWidget
they inserted: this is because we'd like to do something more with
the button other than connecting to the clicked signal.
A side effect is that this makes easier to do interpreted languages
wrappers, ie in perl you can write:
       $button = $toolbar->append_item($label, $tooltip, $icon);
       $button->signal_connect('clicked', ...);
.. and there is no need to reimplement the handling of callback
and user_data.
I suggest widget implementors take into account this sort of things:
it's easy to make life easier (changing the return type of a couple
functions!).

The third change is the gtk_entry_set_max_length function that let's
you change any time the text_max_length (why allow it only in
the constructor? this isn't flexible enough fot real applications).

Please mail comments to: [email protected].