forked from AuroraMiddleware/gtk
Fixed GtkMenuItem to reserve the actual arrow size and spacing
GtkMenuItem was reserving arrow size based on it's requested height, now base the submenu arrow size on the actual arrow size and spacing.
This commit is contained in:
parent
26c3f1a26d
commit
c690402446
@ -1355,7 +1355,6 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
|
|||||||
if (child)
|
if (child)
|
||||||
{
|
{
|
||||||
GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item);
|
GtkMenuItemPrivate *priv = GET_PRIVATE (menu_item);
|
||||||
GtkRequisition child_requisition;
|
|
||||||
GtkStyle *style;
|
GtkStyle *style;
|
||||||
guint horizontal_padding;
|
guint horizontal_padding;
|
||||||
guint border_width;
|
guint border_width;
|
||||||
@ -1396,12 +1395,20 @@ gtk_menu_item_size_allocate (GtkWidget *widget,
|
|||||||
child_allocation.x += allocation->x;
|
child_allocation.x += allocation->x;
|
||||||
child_allocation.y += allocation->y;
|
child_allocation.y += allocation->y;
|
||||||
|
|
||||||
gtk_widget_get_preferred_size (child, &child_requisition, NULL);
|
|
||||||
if ((menu_item->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator)
|
if ((menu_item->submenu && !GTK_IS_MENU_BAR (parent)) || priv->reserve_indicator)
|
||||||
{
|
{
|
||||||
|
guint arrow_spacing;
|
||||||
|
gint arrow_size;
|
||||||
|
|
||||||
|
gtk_widget_style_get (widget,
|
||||||
|
"arrow-spacing", &arrow_spacing,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
get_arrow_size (widget, child, &arrow_size);
|
||||||
|
|
||||||
if (direction == GTK_TEXT_DIR_RTL)
|
if (direction == GTK_TEXT_DIR_RTL)
|
||||||
child_allocation.x += child_requisition.height;
|
child_allocation.x += arrow_size + arrow_spacing;
|
||||||
child_allocation.width -= child_requisition.height;
|
child_allocation.width -= arrow_size + arrow_spacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (child_allocation.width < 1)
|
if (child_allocation.width < 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user