P_("The horizontal alignment of the label"),
0.0,
1.0,
- 0.5,
+ 0.0,
GTK_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_LABEL_YALIGN,
* of the widget. A value of 0.0 represents left alignment;
* 1.0 represents right alignment.
* @yalign: The y alignment of the label. A value of 0.0 aligns under
- * the frame; 1.0 aligns above the frame.
+ * the frame; 1.0 aligns above the frame. If the values are exactly
+ * 0.0 or 1.0 the gap in the frame won't be painted because the label
+ * will be completely above or below the frame.
*
* Sets the alignment of the frame widget's label. The
* default values for a newly created frame are 0.0 and 0.5.
else
xalign = 1 - frame->label_xalign;
- height_extra = MAX (0, child_requisition.height - widget->style->ythickness);
- height_extra *= (1 - frame->label_yalign);
+ height_extra = MAX (0, child_requisition.height - widget->style->ythickness)
+ - frame->label_yalign * child_requisition.height;
y -= height_extra;
height += height_extra;
x2 = widget->style->xthickness + (frame->child_allocation.width - child_requisition.width - 2 * LABEL_PAD - 2 * LABEL_SIDE_PAD) * xalign + LABEL_SIDE_PAD;
-
- gtk_paint_shadow_gap (widget->style, widget->window,
- widget->state, frame->shadow_type,
- area, widget, "frame",
- x, y, width, height,
- GTK_POS_TOP,
- x2, child_requisition.width + 2 * LABEL_PAD);
+ /* If the label is completely over or under the frame we can omit the gap */
+ if (frame->label_yalign == 0.0 || frame->label_yalign == 1.0)
+ gtk_paint_shadow (widget->style, widget->window,
+ widget->state, frame->shadow_type,
+ area, widget, "frame",
+ x, y, width, height);
+ else
+ gtk_paint_shadow_gap (widget->style, widget->window,
+ widget->state, frame->shadow_type,
+ area, widget, "frame",
+ x, y, width, height,
+ GTK_POS_TOP,
+ x2, child_requisition.width + 2 * LABEL_PAD);
}
else
gtk_paint_shadow (widget->style, widget->window,
requisition->width = child_requisition.width + 2 * LABEL_PAD + 2 * LABEL_SIDE_PAD;
requisition->height =
- MAX (0, child_requisition.height - GTK_WIDGET (widget)->style->ythickness);
+ MAX (0, child_requisition.height - widget->style->ythickness);
}
else
{
child_allocation.x = frame->child_allocation.x + LABEL_SIDE_PAD +
(frame->child_allocation.width - child_requisition.width - 2 * LABEL_PAD - 2 * LABEL_SIDE_PAD) * xalign + LABEL_PAD;
- child_allocation.width = child_requisition.width;
+ child_allocation.width = MIN (child_requisition.width, new_allocation.width - 2 * LABEL_PAD - 2 * LABEL_SIDE_PAD);
child_allocation.y = frame->child_allocation.y - MAX (child_requisition.height, widget->style->ythickness);
child_allocation.height = child_requisition.height;