summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@nuclecu.unam.mx>1998-03-14 16:09:36 +0000
committerArturo Espinosa <unammx@src.gnome.org>1998-03-14 16:09:36 +0000
commit6e7f4a99e9a8f1118e6522e581891bf49ba2557a (patch)
treeae53b8946657a9af852c65172438ce5c12089f6d /gtk
parentcfd3a5136985d84973c15c9fcb3e509223f28b44 (diff)
downloadgdk-pixbuf-6e7f4a99e9a8f1118e6522e581891bf49ba2557a.tar.gz
Moved the gtk_signal_connect of the specified callback into the big
1998-03-14 Federico Mena Quintero <federico@nuclecu.unam.mx> * gtk/gtktoolbar.c (gtk_toolbar_insert_element): Moved the gtk_signal_connect of the specified callback into the big switch() for buttons. We don't want to connect to the "clicked" signal of a custom widget or a space element, because it may not have one. (gtk_toolbar_insert_element): Extra sanity check; if the type is GTK_TOOLBAR_CHILD_WIDGET, then the specified widget must not be NULL.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtktoolbar.c398
1 files changed, 205 insertions, 193 deletions
diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c
index 796d3a2c5..f22f59a2f 100644
--- a/gtk/gtktoolbar.c
+++ b/gtk/gtktoolbar.c
@@ -183,7 +183,7 @@ static void
gtk_toolbar_destroy (GtkObject *object)
{
GtkToolbar *toolbar;
- GList *children;
+ GList *children;
g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (object));
@@ -195,7 +195,7 @@ gtk_toolbar_destroy (GtkObject *object)
for (children = toolbar->children; children; children = children->next)
{
- GtkToolbarChild *child;
+ GtkToolbarChild *child;
child = children->data;
@@ -221,8 +221,8 @@ static void
gtk_toolbar_map (GtkWidget *widget)
{
GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
+ GList *children;
+ GtkToolbarChild *child;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (widget));
@@ -244,8 +244,8 @@ static void
gtk_toolbar_unmap (GtkWidget *widget)
{
GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
+ GList *children;
+ GtkToolbarChild *child;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (widget));
@@ -267,10 +267,10 @@ static void
gtk_toolbar_draw (GtkWidget *widget,
GdkRectangle *area)
{
- GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
- GdkRectangle child_area;
+ GtkToolbar *toolbar;
+ GList *children;
+ GtkToolbarChild *child;
+ GdkRectangle child_area;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (widget));
@@ -294,10 +294,10 @@ static gint
gtk_toolbar_expose (GtkWidget *widget,
GdkEventExpose *event)
{
- GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
- GdkEventExpose child_event;
+ GtkToolbar *toolbar;
+ GList *children;
+ GtkToolbarChild *child;
+ GdkEventExpose child_event;
g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_TOOLBAR (widget), FALSE);
@@ -328,11 +328,11 @@ gtk_toolbar_size_request (GtkWidget *widget,
GtkRequisition *requisition)
{
GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
- gint nbuttons;
- gint button_maxw, button_maxh;
- gint widget_maxw, widget_maxh;
+ GList *children;
+ GtkToolbarChild *child;
+ gint nbuttons;
+ gint button_maxw, button_maxh;
+ gint widget_maxw, widget_maxh;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (widget));
@@ -416,11 +416,11 @@ static void
gtk_toolbar_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
- GtkToolbar *toolbar;
- GList *children;
+ GtkToolbar *toolbar;
+ GList *children;
GtkToolbarChild *child;
- GtkAllocation alloc;
- gint border_width;
+ GtkAllocation alloc;
+ gint border_width;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (widget));
@@ -455,6 +455,7 @@ gtk_toolbar_size_allocate (GtkWidget *widget,
case GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
if (!GTK_WIDGET_VISIBLE (child->widget))
break;
+
alloc.width = toolbar->button_maxw;
alloc.height = toolbar->button_maxh;
@@ -475,6 +476,7 @@ gtk_toolbar_size_allocate (GtkWidget *widget,
case GTK_TOOLBAR_CHILD_WIDGET:
if (!GTK_WIDGET_VISIBLE (child->widget))
break;
+
alloc.width = child->widget->requisition.width;
alloc.height = child->widget->requisition.height;
@@ -514,8 +516,8 @@ gtk_toolbar_remove (GtkContainer *container,
GtkWidget *widget)
{
GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
+ GList *children;
+ GtkToolbarChild *child;
g_return_if_fail (container != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (container));
@@ -553,8 +555,8 @@ gtk_toolbar_foreach (GtkContainer *container,
gpointer callback_data)
{
GtkToolbar *toolbar;
- GList *children;
- GtkToolbarChild *child;
+ GList *children;
+ GtkToolbarChild *child;
g_return_if_fail (container != NULL);
g_return_if_fail (GTK_IS_TOOLBAR (container));
@@ -580,11 +582,11 @@ gtk_toolbar_append_item (GtkToolbar *toolbar,
GtkSignalFunc callback,
gpointer user_data)
{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- toolbar->num_children);
+ return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
+ NULL, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data,
+ toolbar->num_children);
}
GtkWidget *
@@ -596,11 +598,11 @@ gtk_toolbar_prepend_item (GtkToolbar *toolbar,
GtkSignalFunc callback,
gpointer user_data)
{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- 0);
+ return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
+ NULL, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data,
+ 0);
}
GtkWidget *
@@ -613,42 +615,42 @@ gtk_toolbar_insert_item (GtkToolbar *toolbar,
gpointer user_data,
gint position)
{
- return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
- NULL, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- position);
+ return gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_BUTTON,
+ NULL, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data,
+ position);
}
void
gtk_toolbar_append_space (GtkToolbar *toolbar)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- toolbar->num_children);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
+ NULL, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ toolbar->num_children);
}
void
gtk_toolbar_prepend_space (GtkToolbar *toolbar)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- 0);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
+ NULL, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ 0);
}
void
gtk_toolbar_insert_space (GtkToolbar *toolbar,
gint position)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
- NULL, NULL,
- NULL, NULL,
- NULL, NULL, NULL,
- position);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_SPACE,
+ NULL, NULL,
+ NULL, NULL,
+ NULL, NULL, NULL,
+ position);
}
void
@@ -657,11 +659,11 @@ gtk_toolbar_append_widget (GtkToolbar *toolbar,
const gchar *tooltip_text,
const gchar *tooltip_private_text)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- toolbar->num_children);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
+ widget, NULL,
+ tooltip_text, tooltip_private_text,
+ NULL, NULL, NULL,
+ toolbar->num_children);
}
void
@@ -670,11 +672,11 @@ gtk_toolbar_prepend_widget (GtkToolbar *toolbar,
const gchar *tooltip_text,
const gchar *tooltip_private_text)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- toolbar->num_children);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
+ widget, NULL,
+ tooltip_text, tooltip_private_text,
+ NULL, NULL, NULL,
+ toolbar->num_children);
}
void
@@ -684,147 +686,157 @@ gtk_toolbar_insert_widget (GtkToolbar *toolbar,
const char *tooltip_private_text,
gint position)
{
- gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
- widget, NULL,
- tooltip_text, tooltip_private_text,
- NULL, NULL, NULL,
- position);
-}
-
-GtkWidget *gtk_toolbar_append_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GtkSignalFunc callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element(toolbar, type, widget, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data,
- toolbar->num_children);
-}
-
-GtkWidget *gtk_toolbar_prepend_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GtkSignalFunc callback,
- gpointer user_data)
-{
- return gtk_toolbar_insert_element(toolbar, type, widget, text,
- tooltip_text, tooltip_private_text,
- icon, callback, user_data, 0);
-}
-
-GtkWidget *gtk_toolbar_insert_element (GtkToolbar *toolbar,
- GtkToolbarChildType type,
- GtkWidget *widget,
- const char *text,
- const char *tooltip_text,
- const char *tooltip_private_text,
- GtkWidget *icon,
- GtkSignalFunc callback,
- gpointer user_data,
- gint position)
-{
- GtkToolbarChild *child;
- GtkWidget *vbox;
-
- g_return_val_if_fail (toolbar != NULL, NULL);
- g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), NULL);
-
- child = g_new (GtkToolbarChild, 1);
- child->type = type;
- child->icon = NULL;
- child->label = NULL;
-
- switch (type) {
- case GTK_TOOLBAR_CHILD_SPACE:
- child->widget = NULL;
- break;
- case GTK_TOOLBAR_CHILD_WIDGET:
- child->widget = widget;
- break;
- case GTK_TOOLBAR_CHILD_BUTTON:
- case GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
- case GTK_TOOLBAR_CHILD_RADIOBUTTON:
- if (type == GTK_TOOLBAR_CHILD_BUTTON) {
- child->widget = gtk_button_new ();
- } else if (type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON) {
- child->widget = gtk_toggle_button_new ();
- gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON(child->widget),
- FALSE);
- } else {
- child->widget =
- gtk_radio_button_new(
- widget
- ? gtk_radio_button_group(GTK_RADIO_BUTTON(widget))
- : NULL);
- gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON(child->widget),
- FALSE);
+ gtk_toolbar_insert_element (toolbar, GTK_TOOLBAR_CHILD_WIDGET,
+ widget, NULL,
+ tooltip_text, tooltip_private_text,
+ NULL, NULL, NULL,
+ position);
+}
+
+GtkWidget *
+gtk_toolbar_append_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data)
+{
+ return gtk_toolbar_insert_element (toolbar, type, widget, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data,
+ toolbar->num_children);
+}
+
+GtkWidget *
+gtk_toolbar_prepend_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data)
+{
+ return gtk_toolbar_insert_element (toolbar, type, widget, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data, 0);
+}
+
+GtkWidget *
+gtk_toolbar_insert_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data,
+ gint position)
+{
+ GtkToolbarChild *child;
+ GtkWidget *vbox;
+
+ g_return_val_if_fail (toolbar != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), NULL);
+ g_return_val_if_fail ((type != GTK_TOOLBAR_CHILD_WIDGET) || (widget != NULL), NULL);
+
+ child = g_new (GtkToolbarChild, 1);
+ child->type = type;
+ child->icon = NULL;
+ child->label = NULL;
+
+ switch (type)
+ {
+ case GTK_TOOLBAR_CHILD_SPACE:
+ child->widget = NULL;
+ break;
+
+ case GTK_TOOLBAR_CHILD_WIDGET:
+ child->widget = widget;
+ break;
+
+ case GTK_TOOLBAR_CHILD_BUTTON:
+ case GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
+ case GTK_TOOLBAR_CHILD_RADIOBUTTON:
+ if (type == GTK_TOOLBAR_CHILD_BUTTON)
+ child->widget = gtk_button_new ();
+ else if (type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
+ {
+ child->widget = gtk_toggle_button_new ();
+ gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child->widget),
+ FALSE);
+ }
+ else
+ {
+ child->widget = gtk_radio_button_new (widget
+ ? gtk_radio_button_group (GTK_RADIO_BUTTON (widget))
+ : NULL);
+ gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child->widget), FALSE);
}
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (child->widget), vbox);
- gtk_widget_show (vbox);
-
- if (icon) {
- child->icon = GTK_WIDGET (icon);
- gtk_box_pack_start (GTK_BOX (vbox), child->icon, FALSE, FALSE, 0);
- if (toolbar->style != GTK_TOOLBAR_TEXT)
- gtk_widget_show (child->icon);
+
+ if (callback)
+ gtk_signal_connect (GTK_OBJECT (child->widget), "clicked",
+ callback, user_data);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (child->widget), vbox);
+ gtk_widget_show (vbox);
+
+ if (icon)
+ {
+ child->icon = GTK_WIDGET (icon);
+ gtk_box_pack_start (GTK_BOX (vbox), child->icon, FALSE, FALSE, 0);
+ if (toolbar->style != GTK_TOOLBAR_TEXT)
+ gtk_widget_show (child->icon);
}
- if (text) {
- child->label = gtk_label_new (text);
- gtk_box_pack_start (GTK_BOX (vbox), child->label, FALSE, FALSE, 0);
- if (toolbar->style != GTK_TOOLBAR_ICONS)
- gtk_widget_show (child->label);
+ if (text)
+ {
+ child->label = gtk_label_new (text);
+ gtk_box_pack_start (GTK_BOX (vbox), child->label, FALSE, FALSE, 0);
+ if (toolbar->style != GTK_TOOLBAR_ICONS)
+ gtk_widget_show (child->label);
}
- gtk_widget_show (child->widget);
- break;
- default:
- g_assert_not_reached ();
- }
+ gtk_widget_show (child->widget);
+ break;
- if (callback)
- gtk_signal_connect (GTK_OBJECT (child->widget), "clicked",
- callback, user_data);
+ default:
+ g_assert_not_reached ();
+ }
- if (tooltip_text)
- gtk_tooltips_set_tip (toolbar->tooltips, child->widget,
- tooltip_text, tooltip_private_text);
+ if ((type != GTK_TOOLBAR_CHILD_SPACE) && tooltip_text)
+ gtk_tooltips_set_tip (toolbar->tooltips, child->widget,
+ tooltip_text, tooltip_private_text);
- toolbar->children = g_list_insert (toolbar->children, child, position);
- toolbar->num_children++;
+ toolbar->children = g_list_insert (toolbar->children, child, position);
+ toolbar->num_children++;
- if (type != GTK_TOOLBAR_CHILD_SPACE)
- gtk_widget_set_parent (child->widget, GTK_WIDGET (toolbar));
+ if (type != GTK_TOOLBAR_CHILD_SPACE)
+ gtk_widget_set_parent (child->widget, GTK_WIDGET (toolbar));
- if (type != GTK_TOOLBAR_CHILD_SPACE && GTK_WIDGET_VISIBLE (toolbar))
+ if ((type != GTK_TOOLBAR_CHILD_SPACE) && GTK_WIDGET_VISIBLE (toolbar))
{
- if (GTK_WIDGET_REALIZED (toolbar)
- && !GTK_WIDGET_REALIZED (child->widget))
- gtk_widget_realize (child->widget);
+ if (GTK_WIDGET_REALIZED (toolbar)
+ && !GTK_WIDGET_REALIZED (child->widget))
+ gtk_widget_realize (child->widget);
- if (GTK_WIDGET_MAPPED (toolbar)
- && !GTK_WIDGET_MAPPED (child->widget))
- gtk_widget_map (child->widget);
+ if (GTK_WIDGET_MAPPED (toolbar)
+ && !GTK_WIDGET_MAPPED (child->widget))
+ gtk_widget_map (child->widget);
}
- if (GTK_WIDGET_VISIBLE (toolbar) &&
- (type == GTK_TOOLBAR_CHILD_SPACE ||
- GTK_WIDGET_VISIBLE (child->widget)))
- gtk_widget_queue_resize (GTK_WIDGET (toolbar));
+ if (GTK_WIDGET_VISIBLE (toolbar) &&
+ ((type == GTK_TOOLBAR_CHILD_SPACE) ||
+ GTK_WIDGET_VISIBLE (child->widget)))
+ gtk_widget_queue_resize (GTK_WIDGET (toolbar));
- return child->widget;
+ return child->widget;
}
void