--- gtkentry.c.old      Sun Jan 11 13:25:11 1998
+++ gtkentry.c  Sun Jan 11 14:23:01 1998
@@ -1760,7 +1760,7 @@
    new_text_length = entry->text_max_length - entry->text_length;

  /* Don't insert anything, if there was nothing to insert. */
-  if (new_text_length == 0)
+  if (new_text_length <= 0)
    return;

  start_pos = *position;
@@ -2104,4 +2104,13 @@
{
  gtk_selection_convert (GTK_WIDGET(entry),
                        clipboard_atom, ctext_atom, event->time);
+}
+
+void
+gtk_entry_set_max_length (GtkEntry *entry, guint16 max)
+{
+  g_return_if_fail (entry != NULL);
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+
+  entry->text_max_length = max;
}
--- gtkentry.h.old      Sun Jan 11 13:25:03 1998
+++ gtkentry.h  Sun Jan 11 13:27:45 1998
@@ -79,6 +79,9 @@
guint      gtk_entry_get_type       (void);
GtkWidget* gtk_entry_new            (void);
GtkWidget* gtk_entry_new_with_max_length (guint16   max);
+/* If entry->text is already > max it's up to you to change it */
+void       gtk_entry_set_max_length (GtkEntry      *entry,
+                                    guint16        max);
void       gtk_entry_set_text       (GtkEntry      *entry,
                                    const gchar   *text);
void       gtk_entry_append_text    (GtkEntry      *entry,
--- gtktoolbar.c.old    Sun Jan 11 13:42:09 1998
+++ gtktoolbar.c        Sun Jan 11 14:56:53 1998
@@ -363,7 +363,8 @@
gtk_toolbar_add(GtkContainer *container,
               GtkWidget    *widget)
{
-       g_warning("gtk_toolbar_add: use gtk_toolbar_add_item() instead!");
+       /* g_warning("gtk_toolbar_add: use gtk_toolbar_add_item() instead!");*/
+       gtk_toolbar_append_widget(GTK_TOOLBAR(container), NULL, widget);
}

static void
@@ -389,7 +390,7 @@
       }
}

-void
+GtkWidget*
gtk_toolbar_append_item(GtkToolbar      *toolbar,
                       const char      *text,
                       const char      *tooltip_text,
@@ -397,11 +398,11 @@
                       GtkSignalFunc    callback,
                       gpointer         user_data)
{
-       gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon,
+       return gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon,
                               callback, user_data, toolbar->num_children);
}

-void
+GtkWidget*
gtk_toolbar_prepend_item(GtkToolbar      *toolbar,
                        const char      *text,
                        const char      *tooltip_text,
@@ -409,11 +410,11 @@
                        GtkSignalFunc    callback,
                        gpointer         user_data)
{
-       gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon,
+       return gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon,
                               callback, user_data, 0);
}

-void
+GtkWidget*
gtk_toolbar_insert_item(GtkToolbar      *toolbar,
                       const char      *text,
                       const char      *tooltip_text,
@@ -425,8 +426,8 @@
       Child     *child;
       GtkWidget *vbox;

-       g_return_if_fail(toolbar != NULL);
-       g_return_if_fail(GTK_IS_TOOLBAR(toolbar));
+       g_return_val_if_fail(toolbar != NULL, NULL);
+       g_return_val_if_fail(GTK_IS_TOOLBAR(toolbar), NULL);

       child = g_new(Child, 1);

@@ -499,6 +500,8 @@

       if (GTK_WIDGET_VISIBLE(child->button) && GTK_WIDGET_VISIBLE(toolbar))
               gtk_widget_queue_resize(child->button);
+
+       return child->button;
}

void
@@ -530,6 +533,59 @@
}

void
+gtk_toolbar_append_widget (GtkToolbar *toolbar, const char* tooltip_text, GtkWidget *widget)
+{
+       gtk_toolbar_insert_widget(toolbar, tooltip_text, widget, toolbar->num_children);
+}
+
+void
+gtk_toolbar_prepend_widget (GtkToolbar *toolbar, const char* tooltip_text, GtkWidget *widget)
+{
+       gtk_toolbar_insert_widget(toolbar, tooltip_text, widget, 0);
+}
+
+void
+gtk_toolbar_insert_widget (GtkToolbar *toolbar, const char* tooltip_text,
+       GtkWidget *widget, gint position)
+{
+       Child     *child;
+
+       g_return_if_fail(toolbar != NULL);
+       g_return_if_fail(GTK_IS_TOOLBAR(toolbar));
+       g_return_if_fail(widget != NULL);
+       g_return_if_fail(GTK_IS_WIDGET(widget));
+
+       child = g_new(Child, 1);
+
+       child->button = widget;
+       child->label = NULL;
+       child->icon = NULL;
+
+       if (tooltip_text)
+               gtk_tooltips_set_tips(toolbar->tooltips, child->button, tooltip_text);
+
+       gtk_widget_show(child->button);
+
+       toolbar->children = g_list_insert(toolbar->children, child, position);
+       toolbar->num_children++;
+
+       gtk_widget_set_parent(child->button, GTK_WIDGET(toolbar));
+
+       if (GTK_WIDGET_VISIBLE(toolbar)) {
+               if (GTK_WIDGET_REALIZED(toolbar)
+                   && !GTK_WIDGET_REALIZED(child->button))
+                       gtk_widget_realize(child->button);
+
+               if (GTK_WIDGET_MAPPED(toolbar)
+                   && !GTK_WIDGET_MAPPED(child->button))
+                       gtk_widget_map(child->button);
+       }
+
+       if (GTK_WIDGET_VISIBLE(child->button) && GTK_WIDGET_VISIBLE(toolbar))
+               gtk_widget_queue_resize(child->button);
+}
+
+void
gtk_toolbar_set_orientation(GtkToolbar     *toolbar,
                           GtkOrientation  orientation)
{
@@ -614,28 +670,28 @@
                       if (child)
                               switch (style) {
                                       case GTK_TOOLBAR_ICONS:
-                                               if (!GTK_WIDGET_VISIBLE(child->icon))
+                                               if (child->icon && !GTK_WIDGET_VISIBLE(child->icon))
                                                       gtk_widget_show(child->icon);

-                                               if (GTK_WIDGET_VISIBLE(child->label))
+                                               if (child->label && GTK_WIDGET_VISIBLE(child->label))
                                                       gtk_widget_hide(child->label);

                                               break;

                                       case GTK_TOOLBAR_TEXT:
-                                               if (GTK_WIDGET_VISIBLE(child->icon))
+                                               if (child->icon && GTK_WIDGET_VISIBLE(child->icon))
                                                       gtk_widget_hide(child->icon);

-                                               if (!GTK_WIDGET_VISIBLE(child->label))
+                                               if (child->label && !GTK_WIDGET_VISIBLE(child->label))
                                                       gtk_widget_show(child->label);

                                               break;

                                       case GTK_TOOLBAR_BOTH:
-                                               if (!GTK_WIDGET_VISIBLE(child->icon))
+                                               if (child->icon && !GTK_WIDGET_VISIBLE(child->icon))
                                                       gtk_widget_show(child->icon);

-                                               if (!GTK_WIDGET_VISIBLE(child->label))
+                                               if (child->label && !GTK_WIDGET_VISIBLE(child->label))
                                                       gtk_widget_show(child->label);

                                               break;
--- gtktoolbar.h.old    Sun Jan 11 13:42:02 1998
+++ gtktoolbar.h        Sun Jan 11 13:54:29 1998
@@ -73,19 +73,19 @@
GtkWidget *gtk_toolbar_new             (GtkOrientation   orientation,
                                       GtkToolbarStyle  style);

-void       gtk_toolbar_append_item     (GtkToolbar      *toolbar,
+GtkWidget *gtk_toolbar_append_item     (GtkToolbar      *toolbar,
                                       const char      *text,
                                       const char      *tooltip_text,
                                       GtkPixmap       *icon,
                                       GtkSignalFunc    callback,
                                       gpointer         user_data);
-void       gtk_toolbar_prepend_item    (GtkToolbar      *toolbar,
+GtkWidget *gtk_toolbar_prepend_item    (GtkToolbar      *toolbar,
                                       const char      *text,
                                       const char      *tooltip_text,
                                       GtkPixmap       *icon,
                                       GtkSignalFunc    callback,
                                       gpointer         user_data);
-void       gtk_toolbar_insert_item     (GtkToolbar      *toolbar,
+GtkWidget *gtk_toolbar_insert_item     (GtkToolbar      *toolbar,
                                       const char      *text,
                                       const char      *tooltip_text,
                                       GtkPixmap       *icon,
@@ -95,6 +95,16 @@
void       gtk_toolbar_append_space    (GtkToolbar      *toolbar);
void       gtk_toolbar_prepend_space   (GtkToolbar      *toolbar);
void       gtk_toolbar_insert_space    (GtkToolbar      *toolbar,
+                                       gint             position);
+void       gtk_toolbar_append_widget   (GtkToolbar      *toolbar,
+                                       const char      *tooltip_text,
+                                       GtkWidget       *widget);
+void       gtk_toolbar_prepend_widget  (GtkToolbar      *toolbar,
+                                       const char      *tooltip_text,
+                                       GtkWidget       *widget);
+void       gtk_toolbar_insert_widget   (GtkToolbar      *toolbar,
+                                       const char      *tooltip_text,
+                                       GtkWidget       *widget,
                                       gint             position);

void       gtk_toolbar_set_orientation (GtkToolbar      *toolbar,
--- testgtk.c.old       Sun Jan 11 14:13:27 1998
+++ testgtk.c   Sun Jan 11 14:15:54 1998
@@ -632,6 +632,7 @@
{
  static GtkWidget *window = NULL;
  GtkWidget *toolbar;
+  GtkWidget *entry;

  if (!window)
    {
@@ -681,6 +682,9 @@
                              (GtkSignalFunc) set_toolbar_both, toolbar);

      gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
+
+      entry = gtk_entry_new();
+      gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar), "Useless tooltip", entry);

      gtk_toolbar_append_item (GTK_TOOLBAR (toolbar),
                              "Small", "Use small spaces",