use gtk_widget_get_child_requisition() instead of accessing
2004-06-03 Michael Natterer <mitch@gimp.org> * gtk/gtkimagemenuitem.c: use gtk_widget_get_child_requisition() instead of accessing item->image->allocation.width/height directly. Makes widgets which only have a requisition set using gtk_widget_set_size_request() work and fixes bug #142789.
This commit is contained in:
committed by
Michael Natterer
parent
ceebc5e983
commit
f48ad7c0cc
@ -1,3 +1,10 @@
|
|||||||
|
2004-06-03 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* gtk/gtkimagemenuitem.c: use gtk_widget_get_child_requisition()
|
||||||
|
instead of accessing item->image->allocation.width/height
|
||||||
|
directly. Makes widgets which only have a requisition set using
|
||||||
|
gtk_widget_set_size_request() work and fixes bug #142789.
|
||||||
|
|
||||||
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
||||||
|
|||||||
@ -1,3 +1,10 @@
|
|||||||
|
2004-06-03 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* gtk/gtkimagemenuitem.c: use gtk_widget_get_child_requisition()
|
||||||
|
instead of accessing item->image->allocation.width/height
|
||||||
|
directly. Makes widgets which only have a requisition set using
|
||||||
|
gtk_widget_set_size_request() work and fixes bug #142789.
|
||||||
|
|
||||||
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
||||||
|
|||||||
@ -1,3 +1,10 @@
|
|||||||
|
2004-06-03 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* gtk/gtkimagemenuitem.c: use gtk_widget_get_child_requisition()
|
||||||
|
instead of accessing item->image->allocation.width/height
|
||||||
|
directly. Makes widgets which only have a requisition set using
|
||||||
|
gtk_widget_set_size_request() work and fixes bug #142789.
|
||||||
|
|
||||||
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
||||||
|
|||||||
@ -1,3 +1,10 @@
|
|||||||
|
2004-06-03 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* gtk/gtkimagemenuitem.c: use gtk_widget_get_child_requisition()
|
||||||
|
instead of accessing item->image->allocation.width/height
|
||||||
|
directly. Makes widgets which only have a requisition set using
|
||||||
|
gtk_widget_set_size_request() work and fixes bug #142789.
|
||||||
|
|
||||||
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
Thu Jun 3 08:07:59 2004 Soeren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
* gtk/gtkmenu.c: Revert previous commit. It caused the problem
|
||||||
|
|||||||
@ -220,16 +220,19 @@ gtk_image_menu_item_toggle_size_request (GtkMenuItem *menu_item,
|
|||||||
|
|
||||||
if (image_menu_item->image && show_image (image_menu_item))
|
if (image_menu_item->image && show_image (image_menu_item))
|
||||||
{
|
{
|
||||||
guint image_width = image_menu_item->image->requisition.width;
|
GtkRequisition image_requisition;
|
||||||
|
|
||||||
if (image_width > 0)
|
gtk_widget_get_child_requisition (image_menu_item->image,
|
||||||
|
&image_requisition);
|
||||||
|
|
||||||
|
if (image_requisition.width > 0)
|
||||||
{
|
{
|
||||||
guint toggle_spacing;
|
guint toggle_spacing;
|
||||||
gtk_widget_style_get (GTK_WIDGET (menu_item),
|
gtk_widget_style_get (GTK_WIDGET (menu_item),
|
||||||
"toggle_spacing", &toggle_spacing,
|
"toggle_spacing", &toggle_spacing,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
*requisition = image_width + toggle_spacing;
|
*requisition = image_requisition.width + toggle_spacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,7 +284,8 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget,
|
|||||||
|
|
||||||
if (image_menu_item->image && show_image (image_menu_item))
|
if (image_menu_item->image && show_image (image_menu_item))
|
||||||
{
|
{
|
||||||
gint width, height, x, y, offset;
|
gint x, y, offset;
|
||||||
|
GtkRequisition child_requisition;
|
||||||
GtkAllocation child_allocation;
|
GtkAllocation child_allocation;
|
||||||
guint horizontal_padding, toggle_spacing;
|
guint horizontal_padding, toggle_spacing;
|
||||||
|
|
||||||
@ -294,8 +298,9 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget,
|
|||||||
* come up with a solution that's really better.
|
* come up with a solution that's really better.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
width = image_menu_item->image->requisition.width;
|
gtk_widget_get_child_requisition (image_menu_item->image,
|
||||||
height = image_menu_item->image->requisition.height;
|
&child_requisition);
|
||||||
|
|
||||||
offset = GTK_CONTAINER (image_menu_item)->border_width +
|
offset = GTK_CONTAINER (image_menu_item)->border_width +
|
||||||
widget->style->xthickness;
|
widget->style->xthickness;
|
||||||
|
|
||||||
@ -303,20 +308,20 @@ gtk_image_menu_item_size_allocate (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
x = offset + horizontal_padding +
|
x = offset + horizontal_padding +
|
||||||
(GTK_MENU_ITEM (image_menu_item)->toggle_size -
|
(GTK_MENU_ITEM (image_menu_item)->toggle_size -
|
||||||
toggle_spacing - width) / 2;
|
toggle_spacing - child_requisition.width) / 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = widget->allocation.width - offset - horizontal_padding -
|
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 +
|
||||||
(GTK_MENU_ITEM (image_menu_item)->toggle_size -
|
(GTK_MENU_ITEM (image_menu_item)->toggle_size -
|
||||||
toggle_spacing - width) / 2;
|
toggle_spacing - child_requisition.width) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
y = (widget->allocation.height - height) / 2;
|
y = (widget->allocation.height - child_requisition.height) / 2;
|
||||||
|
|
||||||
child_allocation.width = width;
|
child_allocation.width = child_requisition.width;
|
||||||
child_allocation.height = height;
|
child_allocation.height = child_requisition.height;
|
||||||
child_allocation.x = widget->allocation.x + MAX (x, 0);
|
child_allocation.x = widget->allocation.x + MAX (x, 0);
|
||||||
child_allocation.y = widget->allocation.y + MAX (y, 0);
|
child_allocation.y = widget->allocation.y + MAX (y, 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user