diff options
author | Arturo Espinosa <unammx@src.gnome.org> | 1997-12-23 00:35:48 +0000 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1997-12-23 00:35:48 +0000 |
commit | b44565f3e4730ada4d9d238707fc0d882d197092 (patch) | |
tree | e381d0e26a433ffb582f607a021a8ba1fb7793d4 /gtk/gtktoolbar.c | |
parent | 4da7b2f2efee93706132eb79a886fd78126787bf (diff) | |
download | gtk+-b44565f3e4730ada4d9d238707fc0d882d197092.tar.gz |
Demo works fine. I have to add the missing functions for setting the toolbar's
parameters on the fly. - Federico
Diffstat (limited to 'gtk/gtktoolbar.c')
-rw-r--r-- | gtk/gtktoolbar.c | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c index b295c0ce41..55c20480a1 100644 --- a/gtk/gtktoolbar.c +++ b/gtk/gtktoolbar.c @@ -46,6 +46,9 @@ static void gtk_toolbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation); static void gtk_toolbar_add (GtkContainer *container, GtkWidget *widget); +static void gtk_toolbar_foreach (GtkContainer *container, + GtkCallback callback, + gpointer callback_data); static GtkContainerClass *parent_class; @@ -93,6 +96,7 @@ gtk_toolbar_class_init(GtkToolbarClass *class) widget_class->size_allocate = gtk_toolbar_size_allocate; container_class->add = gtk_toolbar_add; + container_class->foreach = gtk_toolbar_foreach; } static void @@ -105,6 +109,7 @@ gtk_toolbar_init(GtkToolbar *toolbar) toolbar->orientation = GTK_ORIENTATION_HORIZONTAL; toolbar->style = GTK_TOOLBAR_ICONS; toolbar->space_size = DEFAULT_SPACE_SIZE; + toolbar->tooltips = gtk_tooltips_new(); } GtkWidget * @@ -134,6 +139,8 @@ gtk_toolbar_destroy(GtkObject *object) toolbar = GTK_TOOLBAR(object); + gtk_tooltips_unref(toolbar->tooltips); /* XXX: do I have to unref the tooltips? */ + for (children = toolbar->children; children; children = children->next) { child = children->data; @@ -313,22 +320,51 @@ gtk_toolbar_add(GtkContainer *container, g_warning("gtk_toolbar_add: use gtk_toolbar_add_item() instead!"); } +static void +gtk_toolbar_foreach(GtkContainer *container, + GtkCallback callback, + gpointer callback_data) +{ + GtkToolbar *toolbar; + GList *children; + Child *child; + + g_return_if_fail(container != NULL); + g_return_if_fail(GTK_IS_TOOLBAR(container)); + g_return_if_fail(callback != NULL); + + toolbar = GTK_TOOLBAR(container); + + for (children = toolbar->children; children; children = children->next) { + child = children->data; + + if (child) + (*callback) (child->button, callback_data); + } +} + void gtk_toolbar_append_item(GtkToolbar *toolbar, const char *text, const char *tooltip_text, - GtkPixmap *icon) + GtkPixmap *icon, + GtkSignalFunc callback, + gpointer user_data) { - gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon, toolbar->num_children); + gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon, + callback, user_data, toolbar->num_children); } void gtk_toolbar_prepend_item(GtkToolbar *toolbar, const char *text, const char *tooltip_text, - GtkPixmap *icon) + GtkPixmap *icon, + GtkSignalFunc callback, + gpointer user_data) { - gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon, 0); + gtk_toolbar_insert_item(toolbar, text, tooltip_text, icon, + callback, user_data, 0); } void @@ -336,6 +372,8 @@ gtk_toolbar_insert_item(GtkToolbar *toolbar, const char *text, const char *tooltip_text, GtkPixmap *icon, + GtkSignalFunc callback, + gpointer user_data, gint position) { Child *child; @@ -348,6 +386,10 @@ gtk_toolbar_insert_item(GtkToolbar *toolbar, child->button = gtk_button_new(); + if (callback) + gtk_signal_connect(GTK_OBJECT(child->button), "clicked", + callback, user_data); + if (text) child->label = gtk_label_new(text); else @@ -432,6 +474,7 @@ gtk_toolbar_insert_space(GtkToolbar *toolbar, /* NULL child means it is a space in the toolbar, rather than a button */ toolbar->children = g_list_insert(toolbar->children, NULL, position); + toolbar->num_children++; if (GTK_WIDGET_VISIBLE(toolbar)) gtk_widget_queue_resize(GTK_WIDGET(toolbar)); |