diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-07-03 06:24:04 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-07-03 06:24:04 +0000 |
commit | 1d1b9c7abec5a5b505f2009e969c018b0906a467 (patch) | |
tree | d837deb2453f43119b254a5871116b53c1146d4b | |
parent | 1d6b47e3fa5bd30083f48f98b68eee78a0455cc7 (diff) | |
download | gdk-pixbuf-1d1b9c7abec5a5b505f2009e969c018b0906a467.tar.gz |
Hmm, when committing my vertical menubar patch, I forgot the
2005-07-03 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkimagemenuitem.c: Hmm, when committing my vertical
menubar patch, I forgot the GtkImageMenuItem changes. And I
managed to do 2 releases without noticing that...
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 4 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 4 | ||||
-rw-r--r-- | gtk/gtkimagemenuitem.c | 87 |
4 files changed, 80 insertions, 19 deletions
@@ -1,5 +1,9 @@ 2005-07-03 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkimagemenuitem.c: Hmm, when committing my vertical + menubar patch, I forgot the GtkImageMenuItem changes. And I + managed to do 2 releases without noticing that... + * gtk/gtksettings.c (gtk_settings_class_init): Correct the blurb for the icon-sizes setting. String change. (#309355, Benjamin Berg) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 9f8c07212..a5366b249 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2005-07-03 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkimagemenuitem.c: Hmm, when committing my vertical + menubar patch, I forgot the GtkImageMenuItem changes. And I + managed to do 2 releases without noticing that... + * gtk/gtksettings.c (gtk_settings_class_init): Correct the blurb for the icon-sizes setting. String change. (#309355, Benjamin Berg) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 9f8c07212..a5366b249 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2005-07-03 Matthias Clasen <mclasen@redhat.com> + * gtk/gtkimagemenuitem.c: Hmm, when committing my vertical + menubar patch, I forgot the GtkImageMenuItem changes. And I + managed to do 2 releases without noticing that... + * gtk/gtksettings.c (gtk_settings_class_init): Correct the blurb for the icon-sizes setting. String change. (#309355, Benjamin Berg) diff --git a/gtk/gtkimagemenuitem.c b/gtk/gtkimagemenuitem.c index fc88fba8b..a8dcb1031 100644 --- a/gtk/gtkimagemenuitem.c +++ b/gtk/gtkimagemenuitem.c @@ -31,6 +31,7 @@ #include "gtkstock.h" #include "gtkiconfactory.h" #include "gtkimage.h" +#include "gtkmenubar.h" #include "gtkcontainer.h" #include "gtkwindow.h" #include "gtkprivate.h" @@ -208,24 +209,35 @@ gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item, gint *requisition) { GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (menu_item); + GtkPackDirection pack_dir; + + if (GTK_IS_MENU_BAR (GTK_WIDGET (menu_item)->parent)) + pack_dir = gtk_menu_bar_get_child_pack_direction (GTK_MENU_BAR (GTK_WIDGET (menu_item)->parent)); + else + pack_dir = GTK_PACK_DIRECTION_LTR; *requisition = 0; if (image_menu_item->image && show_image (image_menu_item)) { GtkRequisition image_requisition; - + guint toggle_spacing; gtk_widget_get_child_requisition (image_menu_item->image, &image_requisition); - if (image_requisition.width > 0) + gtk_widget_style_get (GTK_WIDGET (menu_item), + "toggle-spacing", &toggle_spacing, + NULL); + + if (pack_dir == GTK_PACK_DIRECTION_LTR || pack_dir == GTK_PACK_DIRECTION_RTL) { - guint toggle_spacing; - gtk_widget_style_get (GTK_WIDGET (menu_item), - "toggle-spacing", &toggle_spacing, - NULL); - - *requisition = image_requisition.width + toggle_spacing; + if (image_requisition.width > 0) + *requisition = image_requisition.width + toggle_spacing; + } + else + { + if (image_requisition.height > 0) + *requisition = image_requisition.height + toggle_spacing; } } } @@ -236,8 +248,15 @@ gtk_image_menu_item_size_request (GtkWidget *widget, GtkRequisition *requisition) { GtkImageMenuItem *image_menu_item; + gint child_width = 0; gint child_height = 0; + GtkPackDirection pack_dir; + if (GTK_IS_MENU_BAR (widget->parent)) + pack_dir = gtk_menu_bar_get_child_pack_direction (GTK_MENU_BAR (widget->parent)); + else + pack_dir = GTK_PACK_DIRECTION_LTR; + image_menu_item = GTK_IMAGE_MENU_ITEM (widget); if (image_menu_item->image && @@ -249,6 +268,7 @@ gtk_image_menu_item_size_request (GtkWidget *widget, gtk_widget_size_request (image_menu_item->image, &child_requisition); + child_width = child_requisition.width; child_height = child_requisition.height; } @@ -257,7 +277,11 @@ gtk_image_menu_item_size_request (GtkWidget *widget, /* not done with height since that happens via the * toggle_size_request */ - requisition->height = MAX (requisition->height, child_height); + if (pack_dir == GTK_PACK_DIRECTION_LTR || pack_dir == GTK_PACK_DIRECTION_RTL) + requisition->height = MAX (requisition->height, child_height); + else + requisition->width = MAX (requisition->width, child_width); + /* Note that GtkMenuShell always size requests before * toggle_size_request, so toggle_size_request will be able to use @@ -270,6 +294,12 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtkImageMenuItem *image_menu_item; + GtkPackDirection pack_dir; + + if (GTK_IS_MENU_BAR (widget->parent)) + pack_dir = gtk_menu_bar_get_child_pack_direction (GTK_MENU_BAR (widget->parent)); + else + pack_dir = GTK_PACK_DIRECTION_LTR; image_menu_item = GTK_IMAGE_MENU_ITEM (widget); @@ -294,25 +324,44 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget, gtk_widget_get_child_requisition (image_menu_item->image, &child_requisition); - offset = GTK_CONTAINER (image_menu_item)->border_width + - widget->style->xthickness; - - if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) + if (pack_dir == GTK_PACK_DIRECTION_LTR || + pack_dir == GTK_PACK_DIRECTION_RTL) { - x = offset + horizontal_padding + + offset = GTK_CONTAINER (image_menu_item)->border_width + + widget->style->xthickness; + + if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == + (pack_dir == GTK_PACK_DIRECTION_LTR)) + x = offset + horizontal_padding + + (GTK_MENU_ITEM (image_menu_item)->toggle_size - + toggle_spacing - child_requisition.width) / 2; + else + x = widget->allocation.width - offset - horizontal_padding - + GTK_MENU_ITEM (image_menu_item)->toggle_size + toggle_spacing + (GTK_MENU_ITEM (image_menu_item)->toggle_size - toggle_spacing - child_requisition.width) / 2; + + y = (widget->allocation.height - child_requisition.height) / 2; } else { - x = widget->allocation.width - offset - horizontal_padding - + offset = GTK_CONTAINER (image_menu_item)->border_width + + widget->style->ythickness; + + if ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) == + (pack_dir == GTK_PACK_DIRECTION_TTB)) + y = offset + horizontal_padding + + (GTK_MENU_ITEM (image_menu_item)->toggle_size - + toggle_spacing - child_requisition.height) / 2; + else + y = widget->allocation.height - offset - horizontal_padding - GTK_MENU_ITEM (image_menu_item)->toggle_size + toggle_spacing + (GTK_MENU_ITEM (image_menu_item)->toggle_size - - toggle_spacing - child_requisition.width) / 2; - } - - y = (widget->allocation.height - child_requisition.height) / 2; + toggle_spacing - child_requisition.height) / 2; + x = (widget->allocation.width - child_requisition.width) / 2; + } + child_allocation.width = child_requisition.width; child_allocation.height = child_requisition.height; child_allocation.x = widget->allocation.x + MAX (x, 0); |