From 80560b9d3dc597ec0db1acb94f9d08a0ac192b51 Mon Sep 17 00:00:00 2001 From: Soeren Sandmann Date: Fri, 18 Jul 2003 16:25:31 +0000 Subject: [PATCH] By popular request give toolbuttons a border. Fri Jul 18 18:43:01 2003 Soeren Sandmann By popular request give toolbuttons a border. * gtk/gtktoolitem.c (gtk_tool_item_size_allocate): (gtk_tool_item_size_request): don't request and allocate a border around the child * gtk/gtktoolbutton.c (gtk_tool_button_size_allocate): (gtk_tool_button_size_request): remove these functions * gtk/gtktoolbar.c (gtk_toolbar_size_request): (gtk_toolbar_size_allocate): request and allocate a border if we have a shadow. --- ChangeLog | 18 ++++++++++++++ ChangeLog.pre-2-10 | 18 ++++++++++++++ ChangeLog.pre-2-4 | 18 ++++++++++++++ ChangeLog.pre-2-6 | 18 ++++++++++++++ ChangeLog.pre-2-8 | 18 ++++++++++++++ gtk/gtktoolbar.c | 52 ++++++++++++++++++++++++++++++++++++----- gtk/gtktoolbutton.c | 57 --------------------------------------------- gtk/gtktoolitem.c | 11 ++++----- 8 files changed, 140 insertions(+), 70 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8b860f119d..436c95f05e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +Fri Jul 18 18:43:01 2003 Soeren Sandmann + + By popular request give toolbuttons a border. + + * gtk/gtktoolitem.c + (gtk_tool_item_size_allocate): + (gtk_tool_item_size_request): don't request and allocate a border + around the child + + * gtk/gtktoolbutton.c + (gtk_tool_button_size_allocate): + (gtk_tool_button_size_request): remove these functions + + * gtk/gtktoolbar.c + (gtk_toolbar_size_request): + (gtk_toolbar_size_allocate): request and allocate a border if we + have a shadow. + Thu Jul 17 19:24:51 2003 Kristian Rietveld Merged from stable. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 8b860f119d..436c95f05e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,21 @@ +Fri Jul 18 18:43:01 2003 Soeren Sandmann + + By popular request give toolbuttons a border. + + * gtk/gtktoolitem.c + (gtk_tool_item_size_allocate): + (gtk_tool_item_size_request): don't request and allocate a border + around the child + + * gtk/gtktoolbutton.c + (gtk_tool_button_size_allocate): + (gtk_tool_button_size_request): remove these functions + + * gtk/gtktoolbar.c + (gtk_toolbar_size_request): + (gtk_toolbar_size_allocate): request and allocate a border if we + have a shadow. + Thu Jul 17 19:24:51 2003 Kristian Rietveld Merged from stable. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 8b860f119d..436c95f05e 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,21 @@ +Fri Jul 18 18:43:01 2003 Soeren Sandmann + + By popular request give toolbuttons a border. + + * gtk/gtktoolitem.c + (gtk_tool_item_size_allocate): + (gtk_tool_item_size_request): don't request and allocate a border + around the child + + * gtk/gtktoolbutton.c + (gtk_tool_button_size_allocate): + (gtk_tool_button_size_request): remove these functions + + * gtk/gtktoolbar.c + (gtk_toolbar_size_request): + (gtk_toolbar_size_allocate): request and allocate a border if we + have a shadow. + Thu Jul 17 19:24:51 2003 Kristian Rietveld Merged from stable. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 8b860f119d..436c95f05e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,21 @@ +Fri Jul 18 18:43:01 2003 Soeren Sandmann + + By popular request give toolbuttons a border. + + * gtk/gtktoolitem.c + (gtk_tool_item_size_allocate): + (gtk_tool_item_size_request): don't request and allocate a border + around the child + + * gtk/gtktoolbutton.c + (gtk_tool_button_size_allocate): + (gtk_tool_button_size_request): remove these functions + + * gtk/gtktoolbar.c + (gtk_toolbar_size_request): + (gtk_toolbar_size_allocate): request and allocate a border if we + have a shadow. + Thu Jul 17 19:24:51 2003 Kristian Rietveld Merged from stable. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 8b860f119d..436c95f05e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,21 @@ +Fri Jul 18 18:43:01 2003 Soeren Sandmann + + By popular request give toolbuttons a border. + + * gtk/gtktoolitem.c + (gtk_tool_item_size_allocate): + (gtk_tool_item_size_request): don't request and allocate a border + around the child + + * gtk/gtktoolbutton.c + (gtk_tool_button_size_allocate): + (gtk_tool_button_size_request): remove these functions + + * gtk/gtktoolbar.c + (gtk_toolbar_size_request): + (gtk_toolbar_size_allocate): request and allocate a border if we + have a shadow. + Thu Jul 17 19:24:51 2003 Kristian Rietveld Merged from stable. diff --git a/gtk/gtktoolbar.c b/gtk/gtktoolbar.c index a2e74800e8..40be993ff6 100644 --- a/gtk/gtktoolbar.c +++ b/gtk/gtktoolbar.c @@ -162,6 +162,7 @@ static void gtk_toolbar_arrow_button_clicked (GtkWidget *bu static void gtk_toolbar_update_button_relief (GtkToolbar *toolbar); static GtkReliefStyle get_button_relief (GtkToolbar *toolbar); static gint get_internal_padding (GtkToolbar *toolbar); +static GtkShadowType get_shadow_type (GtkToolbar *toolbar); static void gtk_toolbar_remove_tool_item (GtkToolbar *toolbar, GtkToolItem *item); static gboolean gtk_toolbar_popup_menu (GtkWidget *toolbar); @@ -733,14 +734,10 @@ gtk_toolbar_expose (GtkWidget *widget, if (GTK_WIDGET_DRAWABLE (widget)) { - GtkShadowType shadow_type; - - gtk_widget_style_get (widget, "shadow_type", &shadow_type, NULL); - gtk_paint_box (widget->style, widget->window, GTK_WIDGET_STATE (widget), - shadow_type, + get_shadow_type (toolbar), &event->area, widget, "toolbar", border_width + widget->allocation.x, border_width + widget->allocation.y, @@ -884,6 +881,12 @@ gtk_toolbar_size_request (GtkWidget *widget, requisition->width += 2 * (ipadding + GTK_CONTAINER (toolbar)->border_width); requisition->height += 2 * (ipadding + GTK_CONTAINER (toolbar)->border_width); + + if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) + { + requisition->width += 2 * widget->style->xthickness; + requisition->height += 2 * widget->style->ythickness; + } toolbar->button_maxw = max_homogeneous_child_width; toolbar->button_maxh = max_homogeneous_child_height; @@ -979,12 +982,24 @@ gtk_toolbar_size_allocate (GtkWidget *widget, available_size = size = allocation->width - 2 * border_width; short_size = allocation->height - 2 * border_width; arrow_size = arrow_requisition.width; + + if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) + { + available_size -= 2 * widget->style->xthickness; + short_size -= 2 * widget->style->ythickness; + } } else { available_size = size = allocation->height - 2 * border_width; short_size = allocation->width - 2 * border_width; arrow_size = arrow_requisition.height; + + if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) + { + available_size -= 2 * widget->style->ythickness; + short_size -= 2 * widget->style->xthickness; + } } n_items = g_list_length (priv->items); @@ -1015,7 +1030,8 @@ gtk_toolbar_size_allocate (GtkWidget *widget, GtkAllocation *allocation = &(allocations[n_items - i - 1]); gint item_size; - if (!gtk_tool_item_get_pack_end (item) || !toolbar_item_visible (toolbar, item)) + if (!gtk_tool_item_get_pack_end (item) || + !toolbar_item_visible (toolbar, item)) continue; item_size = get_item_size (toolbar, GTK_WIDGET (item)); @@ -1173,12 +1189,24 @@ gtk_toolbar_size_allocate (GtkWidget *widget, { allocations[i].x += allocation->x; allocations[i].y += allocation->y; + + if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) + { + allocations[i].x += widget->style->xthickness; + allocations[i].y += widget->style->ythickness; + } } if (need_arrow) { arrow_allocation.x += allocation->x; arrow_allocation.y += allocation->y; + + if (get_shadow_type (toolbar) != GTK_SHADOW_NONE) + { + arrow_allocation.x += widget->style->xthickness; + arrow_allocation.y += widget->style->ythickness; + } } /* finally allocate the items */ @@ -2022,6 +2050,18 @@ get_internal_padding (GtkToolbar *toolbar) return ipadding; } +static GtkShadowType +get_shadow_type (GtkToolbar *toolbar) +{ + GtkShadowType shadow_type; + + gtk_widget_style_get (GTK_WIDGET (toolbar), + "shadow_type", &shadow_type, + NULL); + + return shadow_type; +} + static gboolean gtk_toolbar_check_old_api (GtkToolbar *toolbar) { diff --git a/gtk/gtktoolbutton.c b/gtk/gtktoolbutton.c index 23199edd87..cb46fbdb1c 100644 --- a/gtk/gtktoolbutton.c +++ b/gtk/gtktoolbutton.c @@ -54,10 +54,6 @@ enum { static void gtk_tool_button_init (GtkToolButton *button, GtkToolButtonClass *klass); static void gtk_tool_button_class_init (GtkToolButtonClass *klass); -static void gtk_tool_button_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_tool_button_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); static void gtk_tool_button_set_property (GObject *object, guint prop_id, const GValue *value, @@ -134,9 +130,6 @@ gtk_tool_button_class_init (GtkToolButtonClass *klass) object_class->get_property = gtk_tool_button_get_property; object_class->finalize = gtk_tool_button_finalize; - widget_class->size_request = gtk_tool_button_size_request; - widget_class->size_allocate = gtk_tool_button_size_allocate; - tool_item_class->create_menu_proxy = gtk_tool_button_create_menu_proxy; tool_item_class->toolbar_reconfigured = gtk_tool_button_toolbar_reconfigured; @@ -241,56 +234,6 @@ gtk_tool_button_init (GtkToolButton *button, gtk_widget_show (button->priv->button); } -static void -gtk_tool_button_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkWidget *child = GTK_BIN (widget)->child; - - if (child && GTK_WIDGET_VISIBLE (child)) - { - gtk_widget_size_request (child, requisition); - } - else - { - requisition->width = 0; - requisition->height = 0; - } - - requisition->width += GTK_CONTAINER (widget)->border_width * 2; - requisition->height += GTK_CONTAINER (widget)->border_width * 2; -} - -static void -gtk_tool_button_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkToolItem *toolitem = GTK_TOOL_ITEM (widget); - GtkAllocation child_allocation; - gint border_width; - GtkWidget *child = GTK_BIN (widget)->child; - - widget->allocation = *allocation; - border_width = GTK_CONTAINER (widget)->border_width; - - if (gtk_tool_item_get_use_drag_window (toolitem) && GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (_gtk_tool_item_get_drag_window (toolitem), - widget->allocation.x + border_width, - widget->allocation.y + border_width, - widget->allocation.width - border_width * 2, - widget->allocation.height - border_width * 2); - - if (child && GTK_WIDGET_VISIBLE (child)) - { - child_allocation.x = allocation->x + border_width; - child_allocation.y = allocation->y + border_width; - child_allocation.width = allocation->width - 2 * border_width; - child_allocation.height = allocation->height - 2 * border_width; - - gtk_widget_size_allocate (child, &child_allocation); - } -} - static void gtk_tool_button_construct_contents (GtkToolItem *tool_item) { diff --git a/gtk/gtktoolitem.c b/gtk/gtktoolitem.c index b52553dc1d..b7658816e2 100644 --- a/gtk/gtktoolitem.c +++ b/gtk/gtktoolitem.c @@ -400,13 +400,10 @@ gtk_tool_item_size_allocate (GtkWidget *widget, if (child && GTK_WIDGET_VISIBLE (child)) { - gint xthickness = widget->style->xthickness; - gint ythickness = widget->style->ythickness; - - child_allocation.x = allocation->x + border_width + xthickness; - child_allocation.y = allocation->y + border_width + ythickness; - child_allocation.width = allocation->width - 2 * (xthickness + border_width); - child_allocation.height = allocation->height - 2 * (ythickness + border_width); + child_allocation.x = allocation->x + border_width; + child_allocation.y = allocation->y + border_width; + child_allocation.width = allocation->width - 2 * border_width; + child_allocation.height = allocation->height - 2 * border_width; gtk_widget_size_allocate (child, &child_allocation); }