--- 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",