forked from AuroraMiddleware/gtk
GtkStyleProperties: Turn border-width into a GtkBorder property.
All current users of this CSS property have been updated to deal with a GtkBorder. Also a 0 border width has been set in the default CSS to ensure GtkStyleContext and GtkThemingEngine always provide a non-NULL pointer for this property.
This commit is contained in:
parent
f7e7201f11
commit
cf0bd12e6c
@ -1448,22 +1448,18 @@ gtk_button_size_allocate (GtkWidget *widget,
|
||||
GtkStateFlags state;
|
||||
GtkWidget *child;
|
||||
|
||||
gint xthickness, ythickness;
|
||||
GtkBorder default_border;
|
||||
GtkBorder inner_border;
|
||||
gint focus_width, border_width;
|
||||
GtkBorder inner_border, *border;
|
||||
gint focus_width;
|
||||
gint focus_pad;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
state = gtk_widget_get_state_flags (widget);
|
||||
|
||||
gtk_style_context_get (context, state,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
xthickness = border_width;
|
||||
ythickness = border_width;
|
||||
|
||||
gtk_button_get_props (button, &default_border, NULL, &inner_border, NULL);
|
||||
gtk_widget_style_get (GTK_WIDGET (widget),
|
||||
"focus-line-width", &focus_width,
|
||||
@ -1482,18 +1478,18 @@ gtk_button_size_allocate (GtkWidget *widget,
|
||||
child = gtk_bin_get_child (GTK_BIN (button));
|
||||
if (child && gtk_widget_get_visible (child))
|
||||
{
|
||||
child_allocation.x = allocation->x + inner_border.left + xthickness;
|
||||
child_allocation.y = allocation->y + inner_border.top + ythickness;
|
||||
child_allocation.x = allocation->x + inner_border.left + border->left;
|
||||
child_allocation.y = allocation->y + inner_border.top + border->top;
|
||||
|
||||
child_allocation.width =
|
||||
allocation->width -
|
||||
xthickness * 2 -
|
||||
(border->left + border->right) -
|
||||
inner_border.left -
|
||||
inner_border.right;
|
||||
|
||||
child_allocation.height =
|
||||
allocation->height -
|
||||
ythickness * 2 -
|
||||
(border->top + border->bottom) -
|
||||
inner_border.top -
|
||||
inner_border.bottom;
|
||||
|
||||
@ -1531,6 +1527,8 @@ gtk_button_size_allocate (GtkWidget *widget,
|
||||
|
||||
gtk_widget_size_allocate (child, &child_allocation);
|
||||
}
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1614,7 +1612,7 @@ _gtk_button_paint (GtkButton *button,
|
||||
gint child_displacement_x;
|
||||
gint child_displacement_y;
|
||||
gboolean displace_focus;
|
||||
gint border_width;
|
||||
GtkBorder *border;
|
||||
|
||||
gtk_widget_style_get (widget,
|
||||
"child-displacement-y", &child_displacement_y,
|
||||
@ -1623,15 +1621,15 @@ _gtk_button_paint (GtkButton *button,
|
||||
NULL);
|
||||
|
||||
gtk_style_context_get (context, state,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
if (interior_focus)
|
||||
{
|
||||
x += border_width + focus_pad;
|
||||
y += border_width + focus_pad;
|
||||
width -= 2 * (border_width + focus_pad);
|
||||
height -= 2 * (border_width + focus_pad);
|
||||
x += border->left + focus_pad;
|
||||
y += border->top + focus_pad;
|
||||
width -= (2 * focus_pad) + border->left + border->right;
|
||||
height -= (2 * focus_pad) + border->top + border->bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1649,6 +1647,8 @@ _gtk_button_paint (GtkButton *button,
|
||||
|
||||
gtk_render_focus (context, cr,
|
||||
x, y, width, height);
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1910,7 +1910,8 @@ gtk_button_get_size (GtkWidget *widget,
|
||||
GtkBorder default_border;
|
||||
GtkBorder inner_border;
|
||||
GtkStateFlags state;
|
||||
gint focus_width, border_width;
|
||||
GtkBorder *border;
|
||||
gint focus_width;
|
||||
gint focus_pad;
|
||||
gint minimum, natural;
|
||||
|
||||
@ -1924,12 +1925,12 @@ gtk_button_get_size (GtkWidget *widget,
|
||||
state = gtk_widget_get_state_flags (GTK_WIDGET (widget));
|
||||
|
||||
gtk_style_context_get (context, state,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
if (orientation == GTK_ORIENTATION_HORIZONTAL)
|
||||
{
|
||||
minimum = (border_width * 2 +
|
||||
minimum = (border->left + border->right +
|
||||
inner_border.left + inner_border.right);
|
||||
|
||||
if (gtk_widget_get_can_default (GTK_WIDGET (widget)))
|
||||
@ -1937,7 +1938,7 @@ gtk_button_get_size (GtkWidget *widget,
|
||||
}
|
||||
else
|
||||
{
|
||||
minimum = (border_width * 2 +
|
||||
minimum = (border->top + border->bottom +
|
||||
inner_border.top + inner_border.bottom);
|
||||
|
||||
if (gtk_widget_get_can_default (GTK_WIDGET (widget)))
|
||||
@ -1966,6 +1967,8 @@ gtk_button_get_size (GtkWidget *widget,
|
||||
|
||||
if (natural_size)
|
||||
*natural_size = natural;
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1739,19 +1739,22 @@ gtk_combo_box_set_popup_widget (GtkComboBox *combo_box,
|
||||
}
|
||||
}
|
||||
|
||||
static gint
|
||||
get_widget_border_thickness (GtkWidget *widget)
|
||||
static void
|
||||
get_widget_border (GtkWidget *widget,
|
||||
GtkBorder *border)
|
||||
{
|
||||
GtkStyleContext *context;
|
||||
gint thickness;
|
||||
GtkBorder *border_width;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
|
||||
gtk_style_context_get (context,
|
||||
gtk_widget_get_state_flags (widget),
|
||||
"border-width", &thickness,
|
||||
"border-width", &border_width,
|
||||
NULL);
|
||||
return thickness;
|
||||
|
||||
*border = *border_width;
|
||||
gtk_border_free (border_width);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1769,7 +1772,8 @@ gtk_combo_box_menu_position_below (GtkMenu *menu,
|
||||
GdkScreen *screen;
|
||||
gint monitor_num;
|
||||
GdkRectangle monitor;
|
||||
|
||||
GtkBorder border;
|
||||
|
||||
/* FIXME: is using the size request here broken? */
|
||||
child = gtk_bin_get_child (GTK_BIN (combo_box));
|
||||
|
||||
@ -1785,9 +1789,8 @@ gtk_combo_box_menu_position_below (GtkMenu *menu,
|
||||
|
||||
gdk_window_get_root_coords (gtk_widget_get_window (child),
|
||||
sx, sy, &sx, &sy);
|
||||
|
||||
if (GTK_SHADOW_NONE != combo_box->priv->shadow_type)
|
||||
sx -= get_widget_border_thickness (GTK_WIDGET (combo_box));
|
||||
get_widget_border (GTK_WIDGET (combo_box), &border);
|
||||
sx -= border.left;
|
||||
|
||||
if (combo_box->priv->popup_fixed_width)
|
||||
gtk_widget_get_preferred_size (GTK_WIDGET (menu), &req, NULL);
|
||||
@ -2477,13 +2480,13 @@ gtk_combo_box_update_requested_width (GtkComboBox *combo_box,
|
||||
&req, NULL); \
|
||||
\
|
||||
if (is_rtl) \
|
||||
child.x = allocation->x + shadow_width; \
|
||||
child.x = allocation->x + border.right; \
|
||||
else \
|
||||
child.x = allocation->x + allocation->width - req.width - shadow_width; \
|
||||
child.x = allocation->x + allocation->width - req.width - border.left; \
|
||||
\
|
||||
child.y = allocation->y + shadow_height; \
|
||||
child.y = allocation->y + border.top; \
|
||||
child.width = req.width; \
|
||||
child.height = allocation->height - 2 * shadow_height; \
|
||||
child.height = allocation->height - (border.top + border.bottom); \
|
||||
child.width = MAX (1, child.width); \
|
||||
child.height = MAX (1, child.height); \
|
||||
\
|
||||
@ -2496,47 +2499,40 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
|
||||
GtkComboBoxPrivate *priv = combo_box->priv;
|
||||
GtkWidget *child_widget;
|
||||
gint shadow_width, shadow_height;
|
||||
gint focus_width, focus_pad;
|
||||
GtkAllocation child;
|
||||
GtkRequisition req;
|
||||
GtkBorder border;
|
||||
gboolean is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL;
|
||||
|
||||
gtk_widget_set_allocation (widget, allocation);
|
||||
child_widget = gtk_bin_get_child (GTK_BIN (widget));
|
||||
get_widget_border (widget, &border);
|
||||
|
||||
gtk_widget_style_get (widget,
|
||||
"focus-line-width", &focus_width,
|
||||
"focus-padding", &focus_pad,
|
||||
NULL);
|
||||
|
||||
if (GTK_SHADOW_NONE != priv->shadow_type)
|
||||
shadow_width = shadow_height = get_widget_border_thickness (widget);
|
||||
else
|
||||
{
|
||||
shadow_width = 0;
|
||||
shadow_height = 0;
|
||||
}
|
||||
|
||||
if (!priv->tree_view)
|
||||
{
|
||||
if (priv->cell_view)
|
||||
{
|
||||
gint xthickness, ythickness;
|
||||
GtkBorder button_border;
|
||||
gint width;
|
||||
guint border_width;
|
||||
|
||||
/* menu mode */
|
||||
allocation->x += shadow_width;
|
||||
allocation->y += shadow_height;
|
||||
allocation->width -= 2 * shadow_width;
|
||||
allocation->height -= 2 * shadow_height;
|
||||
allocation->x += border.left;
|
||||
allocation->y += border.top;
|
||||
allocation->width -= border.left + border.right;
|
||||
allocation->height -= border.top + border.bottom;
|
||||
|
||||
gtk_widget_size_allocate (priv->button, allocation);
|
||||
|
||||
/* set some things ready */
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->button));
|
||||
xthickness = ythickness = get_widget_border_thickness (priv->button);
|
||||
get_widget_border (priv->button, &button_border);
|
||||
|
||||
child.x = allocation->x;
|
||||
child.y = allocation->y;
|
||||
@ -2545,10 +2541,12 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
|
||||
if (!priv->is_cell_renderer)
|
||||
{
|
||||
child.x += border_width + xthickness + focus_width + focus_pad;
|
||||
child.y += border_width + ythickness + focus_width + focus_pad;
|
||||
width -= 2 * (child.x - allocation->x);
|
||||
child.height -= 2 * (child.y - allocation->y);
|
||||
child.x += border_width + button_border.left + focus_width + focus_pad;
|
||||
child.y += border_width + button_border.top + focus_width + focus_pad;
|
||||
width -= (2 * (border_width + focus_width + focus_pad)) +
|
||||
button_border.left + button_border.right;
|
||||
child.height -= (2 * (border_width + focus_width + focus_pad)) +
|
||||
button_border.top + button_border.bottom;
|
||||
}
|
||||
|
||||
|
||||
@ -2574,14 +2572,14 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
{
|
||||
child.x += req.width;
|
||||
child.width = allocation->x + allocation->width
|
||||
- (border_width + xthickness + focus_width + focus_pad)
|
||||
- (border_width + button_border.right + focus_width + focus_pad)
|
||||
- child.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
child.width = child.x;
|
||||
child.x = allocation->x
|
||||
+ border_width + xthickness + focus_width + focus_pad;
|
||||
+ border_width + button_border.left + focus_width + focus_pad;
|
||||
child.width -= child.x;
|
||||
}
|
||||
|
||||
@ -2619,11 +2617,11 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON
|
||||
|
||||
if (is_rtl)
|
||||
child.x = allocation->x + req.width + shadow_width;
|
||||
child.x = allocation->x + req.width + border.right;
|
||||
else
|
||||
child.x = allocation->x + shadow_width;
|
||||
child.y = allocation->y + shadow_height;
|
||||
child.width = allocation->width - req.width - 2 * shadow_width;
|
||||
child.x = allocation->x + border.left;
|
||||
child.y = allocation->y + border.top;
|
||||
child.width = allocation->width - req.width - (border.left + border.right);
|
||||
child.width = MAX (1, child.width);
|
||||
child.height = MAX (1, child.height);
|
||||
gtk_widget_size_allocate (child_widget, &child);
|
||||
@ -2632,11 +2630,7 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
else
|
||||
{
|
||||
/* list mode */
|
||||
|
||||
/* Combobox thickness + border-width */
|
||||
guint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
int delta_x = shadow_width + border_width;
|
||||
int delta_y = shadow_height + border_width;
|
||||
|
||||
/* button */
|
||||
GTK_COMBO_BOX_SIZE_ALLOCATE_BUTTON
|
||||
@ -2653,30 +2647,32 @@ gtk_combo_box_size_allocate (GtkWidget *widget,
|
||||
|
||||
if (priv->cell_view_frame)
|
||||
{
|
||||
child.x += delta_x;
|
||||
child.y += delta_y;
|
||||
child.width = MAX (1, child.width - delta_x * 2);
|
||||
child.height = MAX (1, child.height - delta_y * 2);
|
||||
child.x += border.left + border_width;
|
||||
child.y += border.top + border_width;
|
||||
child.width = MAX (1, child.width - (2 * border_width) - (border.left + border.right));
|
||||
child.height = MAX (1, child.height - (2 * border_width) - (border.top + border.bottom));
|
||||
gtk_widget_size_allocate (priv->cell_view_frame, &child);
|
||||
|
||||
/* the sample */
|
||||
if (priv->has_frame)
|
||||
{
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame));
|
||||
delta_x = delta_y = border_width + get_widget_border_thickness (priv->cell_view_frame);
|
||||
GtkBorder frame_border;
|
||||
|
||||
child.x += delta_x;
|
||||
child.y += delta_y;
|
||||
child.width -= delta_x * 2;
|
||||
child.height -= delta_y * 2;
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame));
|
||||
get_widget_border (priv->cell_view_frame, &frame_border);
|
||||
|
||||
child.x += border_width + frame_border.left;
|
||||
child.y += border_width + frame_border.right;
|
||||
child.width -= (2 * border_width) + frame_border.left + frame_border.right;
|
||||
child.height -= (2 * border_width) + frame_border.top + frame_border.bottom;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
child.x += delta_x;
|
||||
child.y += delta_y;
|
||||
child.width -= delta_x * 2;
|
||||
child.height -= delta_y * 2;
|
||||
child.x += border.left + border_width;
|
||||
child.y += border.top + border_width;
|
||||
child.width -= (2 * border_width) - (border.left + border.right);
|
||||
child.height -= (2 * border_width) - (border.top + border.bottom);
|
||||
}
|
||||
|
||||
if (gtk_widget_get_visible (priv->popup_window))
|
||||
@ -6430,6 +6426,7 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget,
|
||||
gint child_min, child_nat;
|
||||
GtkStyleContext *style_context;
|
||||
GtkStateFlags state;
|
||||
GtkBorder *border;
|
||||
|
||||
child = gtk_bin_get_child (GTK_BIN (widget));
|
||||
|
||||
@ -6451,6 +6448,7 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget,
|
||||
|
||||
gtk_style_context_get (style_context, state,
|
||||
"font", &font_desc,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
context = gtk_widget_get_pango_context (GTK_WIDGET (widget));
|
||||
@ -6472,15 +6470,17 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget,
|
||||
if (priv->cell_view)
|
||||
{
|
||||
gint sep_width, arrow_width;
|
||||
gint border_width, xthickness, xpad;
|
||||
gint border_width, xpad;
|
||||
GtkBorder button_border;
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box));
|
||||
xthickness = get_widget_border_thickness (priv->button);
|
||||
get_widget_border (priv->button, &button_border);
|
||||
|
||||
gtk_widget_get_preferred_width (priv->separator, &sep_width, NULL);
|
||||
gtk_widget_get_preferred_width (priv->arrow, &arrow_width, NULL);
|
||||
|
||||
xpad = 2*(border_width + xthickness + focus_width + focus_pad);
|
||||
xpad = 2 * (border_width + focus_width + focus_pad) +
|
||||
button_border.left + button_border.right;
|
||||
|
||||
minimum_width = child_min + sep_width + arrow_width + xpad;
|
||||
natural_width = child_nat + sep_width + arrow_width + xpad;
|
||||
@ -6512,8 +6512,12 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget,
|
||||
{
|
||||
if (priv->has_frame)
|
||||
{
|
||||
gint border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame));
|
||||
gint xpad = 2 * (border_width + get_widget_border_thickness (priv->cell_view_frame));
|
||||
gint border_width, xpad;
|
||||
GtkBorder frame_border;
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame));
|
||||
get_widget_border (priv->cell_view_frame, &frame_border);
|
||||
xpad = (2 * border_width) + frame_border.left + frame_border.right;
|
||||
|
||||
minimum_width += xpad;
|
||||
natural_width += xpad;
|
||||
@ -6528,14 +6532,9 @@ gtk_combo_box_get_preferred_width (GtkWidget *widget,
|
||||
natural_width += button_nat_width;
|
||||
}
|
||||
|
||||
if (GTK_SHADOW_NONE != priv->shadow_type)
|
||||
{
|
||||
gint thickness;
|
||||
|
||||
thickness = get_widget_border_thickness (GTK_WIDGET (widget));
|
||||
minimum_width += 2 * thickness;
|
||||
natural_width += 2 * thickness;
|
||||
}
|
||||
minimum_width += border->left + border->right;
|
||||
natural_width += border->left + border->right;
|
||||
gtk_border_free (border);
|
||||
|
||||
if (minimum_size)
|
||||
*minimum_size = minimum_width;
|
||||
@ -6580,16 +6579,15 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
||||
gint focus_width, focus_pad;
|
||||
gint min_height, nat_height;
|
||||
gint size;
|
||||
GtkBorder border;
|
||||
|
||||
gtk_widget_style_get (GTK_WIDGET (widget),
|
||||
"focus-line-width", &focus_width,
|
||||
"focus-padding", &focus_pad,
|
||||
NULL);
|
||||
|
||||
size = avail_size;
|
||||
|
||||
if (GTK_SHADOW_NONE != priv->shadow_type)
|
||||
size -= get_widget_border_thickness (widget);
|
||||
get_widget_border (widget, &border);
|
||||
size = avail_size - border.left;
|
||||
|
||||
if (!priv->tree_view)
|
||||
{
|
||||
@ -6598,10 +6596,11 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
||||
{
|
||||
/* calculate x/y padding and separator/arrow size */
|
||||
gint sep_width, arrow_width, sep_height, arrow_height;
|
||||
gint border_width, xthickness, ythickness, xpad, ypad;
|
||||
gint border_width, xpad, ypad;
|
||||
GtkBorder button_border;
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (combo_box));
|
||||
xthickness = ythickness = get_widget_border_thickness (priv->button);
|
||||
get_widget_border (priv->button, &button_border);
|
||||
|
||||
gtk_widget_get_preferred_width (priv->separator, &sep_width, NULL);
|
||||
gtk_widget_get_preferred_width (priv->arrow, &arrow_width, NULL);
|
||||
@ -6610,8 +6609,10 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
||||
gtk_widget_get_preferred_height_for_width (priv->arrow,
|
||||
arrow_width, &arrow_height, NULL);
|
||||
|
||||
xpad = 2*(border_width + xthickness + focus_width + focus_pad);
|
||||
ypad = 2*(border_width + ythickness + focus_width + focus_pad);
|
||||
xpad = 2 * (border_width + focus_width + focus_pad) +
|
||||
button_border.left + button_border.right;
|
||||
ypad = 2 * (border_width + focus_width + focus_pad) +
|
||||
button_border.top + button_border.bottom;
|
||||
|
||||
size -= sep_width + arrow_width + xpad;
|
||||
|
||||
@ -6653,14 +6654,14 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
||||
|
||||
if (priv->cell_view_frame && priv->has_frame)
|
||||
{
|
||||
GtkBorder frame_border;
|
||||
gint border_width;
|
||||
gint thickness;
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (priv->cell_view_frame));
|
||||
thickness = get_widget_border_thickness (GTK_WIDGET (priv->cell_view_frame));
|
||||
get_widget_border (GTK_WIDGET (priv->cell_view_frame), &frame_border);
|
||||
|
||||
xpad = 2 * (border_width + thickness);
|
||||
ypad = 2 * (border_width + thickness);
|
||||
xpad = (2 * border_width) + border.left + frame_border.right;
|
||||
ypad = (2 * border_width) + border.top + frame_border.bottom;
|
||||
}
|
||||
|
||||
size -= but_width;
|
||||
@ -6676,14 +6677,8 @@ gtk_combo_box_get_preferred_height_for_width (GtkWidget *widget,
|
||||
nat_height += ypad;
|
||||
}
|
||||
|
||||
if (GTK_SHADOW_NONE != priv->shadow_type)
|
||||
{
|
||||
gint thickness;
|
||||
|
||||
thickness = get_widget_border_thickness (widget);
|
||||
min_height += 2 * thickness;
|
||||
nat_height += 2 * thickness;
|
||||
}
|
||||
min_height += border.top + border.bottom;
|
||||
nat_height += border.top + border.bottom;
|
||||
|
||||
if (minimum_size)
|
||||
*minimum_size = min_height;
|
||||
|
@ -3501,7 +3501,8 @@ gtk_css_provider_get_default (void)
|
||||
" background-color: @bg_color;\n"
|
||||
" color: @fg_color;\n"
|
||||
" border-color: shade (@bg_color, 0.6);\n"
|
||||
" padding: 2 2; \n"
|
||||
" padding: 2;\n"
|
||||
" border-width: 0;\n"
|
||||
"}\n"
|
||||
"\n"
|
||||
"*:prelight {\n"
|
||||
|
130
gtk/gtkmenu.c
130
gtk/gtkmenu.c
@ -2363,20 +2363,23 @@ get_arrows_border (GtkMenu *menu,
|
||||
border->left = border->right = 0;
|
||||
}
|
||||
|
||||
static gint
|
||||
get_menu_border_thickness (GtkWidget *widget)
|
||||
static void
|
||||
get_menu_border (GtkWidget *widget,
|
||||
GtkBorder *border)
|
||||
{
|
||||
GtkStyleContext *context;
|
||||
GtkStateFlags state;
|
||||
gint thickness;
|
||||
GtkBorder *border_width;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
state = gtk_widget_get_state_flags (widget);
|
||||
|
||||
gtk_style_context_get (context, state,
|
||||
"border-width", &thickness,
|
||||
"border-width", &border_width,
|
||||
NULL);
|
||||
return thickness;
|
||||
|
||||
*border = *border_width;
|
||||
gtk_border_free (border_width);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2387,14 +2390,14 @@ gtk_menu_realize (GtkWidget *widget)
|
||||
GdkWindow *window;
|
||||
GdkWindowAttr attributes;
|
||||
gint attributes_mask;
|
||||
gint border_width, thickness;
|
||||
gint border_width;
|
||||
GtkMenu *menu;
|
||||
GtkMenuPrivate *priv;
|
||||
GtkWidget *child;
|
||||
GList *children;
|
||||
guint vertical_padding;
|
||||
guint horizontal_padding;
|
||||
GtkBorder arrow_border;
|
||||
GtkBorder arrow_border, border;
|
||||
|
||||
g_return_if_fail (GTK_IS_MENU (widget));
|
||||
|
||||
@ -2423,7 +2426,7 @@ gtk_menu_realize (GtkWidget *widget)
|
||||
gtk_widget_set_window (widget, window);
|
||||
gdk_window_set_user_data (window, widget);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &border);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
|
||||
@ -2434,16 +2437,21 @@ gtk_menu_realize (GtkWidget *widget)
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
|
||||
attributes.x = border_width + thickness + horizontal_padding;
|
||||
attributes.y = border_width + thickness + vertical_padding;
|
||||
attributes.width = MAX (1, allocation.width - attributes.x * 2);
|
||||
attributes.height = MAX (1, allocation.height - attributes.y * 2);
|
||||
attributes.x = border_width + border.left + horizontal_padding;
|
||||
attributes.y = border_width + border.top + vertical_padding;
|
||||
attributes.width = allocation.width -
|
||||
(2 * (border_width + horizontal_padding)) - border.left - border.right;
|
||||
attributes.height = allocation.height -
|
||||
(2 * (border_width + vertical_padding)) - border.top - border.bottom;
|
||||
|
||||
get_arrows_border (menu, &arrow_border);
|
||||
attributes.y += arrow_border.top;
|
||||
attributes.height -= arrow_border.top;
|
||||
attributes.height -= arrow_border.bottom;
|
||||
|
||||
attributes.width = MAX (1, attributes.width);
|
||||
attributes.height = MAX (1, attributes.height);
|
||||
|
||||
menu->view_window = gdk_window_new (window,
|
||||
&attributes, attributes_mask);
|
||||
gdk_window_set_user_data (menu->view_window, menu);
|
||||
@ -2452,8 +2460,13 @@ gtk_menu_realize (GtkWidget *widget)
|
||||
|
||||
attributes.x = 0;
|
||||
attributes.y = 0;
|
||||
attributes.width = MAX (1, allocation.width - (border_width + thickness + horizontal_padding) * 2);
|
||||
attributes.height = MAX (1, priv->requested_height - (border_width + thickness + vertical_padding) * 2);
|
||||
attributes.width = allocation.width + (2 * (border_width + horizontal_padding)) +
|
||||
border.left + border.right;
|
||||
attributes.height = priv->requested_height - (2 * (border_width + vertical_padding)) +
|
||||
border.top + border.bottom;
|
||||
|
||||
attributes.width = MAX (1, attributes.width);
|
||||
attributes.height = MAX (1, attributes.height);
|
||||
|
||||
menu->bin_window = gdk_window_new (menu->view_window,
|
||||
&attributes, attributes_mask);
|
||||
@ -2641,11 +2654,12 @@ gtk_menu_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation child_allocation;
|
||||
GtkMenuPrivate *priv;
|
||||
GList *children;
|
||||
gint x, y, i, thickness;
|
||||
gint x, y, i;
|
||||
gint width, height;
|
||||
guint border_width;
|
||||
guint vertical_padding;
|
||||
guint horizontal_padding;
|
||||
GtkBorder border;
|
||||
|
||||
g_return_if_fail (GTK_IS_MENU (widget));
|
||||
g_return_if_fail (allocation != NULL);
|
||||
@ -2661,7 +2675,7 @@ gtk_menu_size_allocate (GtkWidget *widget,
|
||||
"horizontal-padding", &horizontal_padding,
|
||||
NULL);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &border);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (menu));
|
||||
|
||||
g_free (priv->heights);
|
||||
@ -2672,15 +2686,17 @@ gtk_menu_size_allocate (GtkWidget *widget,
|
||||
NULL);
|
||||
|
||||
/* refresh our cached height request */
|
||||
priv->requested_height = (border_width + vertical_padding + thickness) * 2;
|
||||
priv->requested_height = (2 * (border_width + vertical_padding)) +
|
||||
border.top + border.bottom;
|
||||
for (i = 0; i < priv->heights_length; i++)
|
||||
priv->requested_height += priv->heights[i];
|
||||
|
||||
x = border_width + thickness + horizontal_padding;
|
||||
y = border_width + thickness + vertical_padding;
|
||||
|
||||
width = MAX (1, allocation->width - x * 2);
|
||||
height = MAX (1, allocation->height - y * 2);
|
||||
x = border_width + border.left + horizontal_padding;
|
||||
y = border_width + border.top + vertical_padding;
|
||||
width = allocation->width - (2 * (border_width + horizontal_padding)) -
|
||||
border.left - border.right;
|
||||
height = allocation->height - (2 * (border_width + vertical_padding)) -
|
||||
border.top - border.bottom;
|
||||
|
||||
if (menu_shell->active)
|
||||
gtk_menu_scroll_to (menu, menu->scroll_offset);
|
||||
@ -2695,6 +2711,9 @@ gtk_menu_size_allocate (GtkWidget *widget,
|
||||
height -= arrow_border.bottom;
|
||||
}
|
||||
|
||||
width = MAX (1, width);
|
||||
height = MAX (1, height);
|
||||
|
||||
if (gtk_widget_get_realized (widget))
|
||||
{
|
||||
gdk_window_move_resize (gtk_widget_get_window (widget),
|
||||
@ -2820,7 +2839,7 @@ get_arrows_visible_area (GtkMenu *menu,
|
||||
guint vertical_padding;
|
||||
guint horizontal_padding;
|
||||
gint scroll_arrow_height;
|
||||
gint thickness;
|
||||
GtkBorder menu_border;
|
||||
|
||||
gtk_widget_style_get (widget,
|
||||
"vertical-padding", &vertical_padding,
|
||||
@ -2829,10 +2848,10 @@ get_arrows_visible_area (GtkMenu *menu,
|
||||
"arrow-placement", &arrow_placement,
|
||||
NULL);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &menu_border);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
border->x = border_width + thickness + horizontal_padding;
|
||||
border->y = border_width + thickness + vertical_padding;
|
||||
border->x = border_width + menu_border.left + horizontal_padding;
|
||||
border->y = border_width + menu_border.top + vertical_padding;
|
||||
border->width = gdk_window_get_width (gtk_widget_get_window (widget));
|
||||
border->height = gdk_window_get_height (gtk_widget_get_window (widget));
|
||||
|
||||
@ -2880,7 +2899,7 @@ get_arrows_visible_area (GtkMenu *menu,
|
||||
lower->x = lower->y = lower->width = lower->height = 0;
|
||||
}
|
||||
|
||||
*arrow_space = scroll_arrow_height - 2 * thickness;
|
||||
*arrow_space = scroll_arrow_height - menu_border.top - menu_border.bottom;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -2894,8 +2913,9 @@ gtk_menu_draw (GtkWidget *widget,
|
||||
GdkRectangle upper;
|
||||
GdkRectangle lower;
|
||||
GdkWindow *window;
|
||||
gint arrow_space, thickness;
|
||||
gint arrow_space;
|
||||
GtkStateFlags state;
|
||||
GtkBorder menu_border;
|
||||
|
||||
menu = GTK_MENU (widget);
|
||||
priv = gtk_menu_get_private (menu);
|
||||
@ -2904,9 +2924,7 @@ gtk_menu_draw (GtkWidget *widget,
|
||||
state = gtk_widget_get_state_flags (widget);
|
||||
|
||||
get_arrows_visible_area (menu, &border, &upper, &lower, &arrow_space);
|
||||
gtk_style_context_get (context, state,
|
||||
"border-width", &thickness,
|
||||
NULL);
|
||||
get_menu_border (widget, &menu_border);
|
||||
|
||||
if (gtk_cairo_should_draw_window (cr, gtk_widget_get_window (widget)))
|
||||
{
|
||||
@ -2940,7 +2958,7 @@ gtk_menu_draw (GtkWidget *widget,
|
||||
|
||||
gtk_render_arrow (context, cr, 0,
|
||||
upper.x + (upper.width - arrow_size) / 2,
|
||||
upper.y + thickness + (arrow_space - arrow_size) / 2,
|
||||
upper.y + menu_border.top + (arrow_space - arrow_size) / 2,
|
||||
arrow_size);
|
||||
|
||||
gtk_style_context_restore (context);
|
||||
@ -2960,7 +2978,7 @@ gtk_menu_draw (GtkWidget *widget,
|
||||
|
||||
gtk_render_arrow (context, cr, G_PI,
|
||||
lower.x + (lower.width - arrow_size) / 2,
|
||||
lower.y + thickness + (arrow_space - arrow_size) / 2,
|
||||
lower.y + menu_border.top + (arrow_space - arrow_size) / 2,
|
||||
arrow_size);
|
||||
|
||||
gtk_style_context_restore (context);
|
||||
@ -3023,9 +3041,10 @@ gtk_menu_get_preferred_width (GtkWidget *widget,
|
||||
guint max_toggle_size;
|
||||
guint max_accel_width;
|
||||
guint horizontal_padding;
|
||||
guint border_width, thickness;
|
||||
guint border_width;
|
||||
gint child_min, child_nat;
|
||||
gint min_width, nat_width;
|
||||
GtkBorder border;
|
||||
|
||||
menu = GTK_MENU (widget);
|
||||
menu_shell = GTK_MENU_SHELL (widget);
|
||||
@ -3118,11 +3137,13 @@ gtk_menu_get_preferred_width (GtkWidget *widget,
|
||||
"horizontal-padding", &horizontal_padding,
|
||||
NULL);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &border);
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (menu));
|
||||
min_width += (border_width + horizontal_padding + thickness) * 2;
|
||||
nat_width += (border_width + horizontal_padding + thickness) * 2;
|
||||
|
||||
min_width += (2 * (border_width + horizontal_padding)) +
|
||||
border.left + border.right;
|
||||
nat_width += (2 * (border_width + horizontal_padding)) +
|
||||
border.top + border.bottom;
|
||||
|
||||
menu->toggle_size = max_toggle_size;
|
||||
priv->accel_size = max_accel_width;
|
||||
|
||||
@ -4565,10 +4586,10 @@ gtk_menu_position (GtkMenu *menu,
|
||||
gint space_left, space_right, space_above, space_below;
|
||||
gint needed_width;
|
||||
gint needed_height;
|
||||
gint thickness;
|
||||
GtkBorder border;
|
||||
gboolean rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &border);
|
||||
|
||||
/* The placement of popup menus horizontally works like this (with
|
||||
* RTL in parentheses)
|
||||
@ -4600,7 +4621,7 @@ gtk_menu_position (GtkMenu *menu,
|
||||
/* the amount of space we need to position the menu. Note the
|
||||
* menu is offset "thickness" pixels
|
||||
*/
|
||||
needed_width = requisition.width - thickness;
|
||||
needed_width = requisition.width - border.left;
|
||||
|
||||
if (needed_width <= space_left ||
|
||||
needed_width <= space_right)
|
||||
@ -4609,12 +4630,12 @@ gtk_menu_position (GtkMenu *menu,
|
||||
(!rtl && needed_width > space_right))
|
||||
{
|
||||
/* position left */
|
||||
x = x + thickness - requisition.width + 1;
|
||||
x = x + border.left - requisition.width + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* position right */
|
||||
x = x - thickness;
|
||||
x = x - border.right;
|
||||
}
|
||||
|
||||
/* x is clamped on-screen further down */
|
||||
@ -4653,15 +4674,15 @@ gtk_menu_position (GtkMenu *menu,
|
||||
/* Position vertically. The algorithm is the same as above, but
|
||||
* simpler because we don't have to take RTL into account.
|
||||
*/
|
||||
needed_height = requisition.height - thickness;
|
||||
needed_height = requisition.height - border.top;
|
||||
|
||||
if (needed_height <= space_above ||
|
||||
needed_height <= space_below)
|
||||
{
|
||||
if (needed_height <= space_below)
|
||||
y = y - thickness;
|
||||
y = y - border.top;
|
||||
else
|
||||
y = y + thickness - requisition.height + 1;
|
||||
y = y + border.bottom - requisition.height + 1;
|
||||
|
||||
y = CLAMP (y, monitor.y,
|
||||
monitor.y + monitor.height - requisition.height);
|
||||
@ -4773,11 +4794,11 @@ gtk_menu_scroll_to (GtkMenu *menu,
|
||||
{
|
||||
GtkMenuPrivate *priv;
|
||||
GtkAllocation allocation;
|
||||
GtkBorder arrow_border;
|
||||
GtkBorder arrow_border, border;
|
||||
GtkWidget *widget;
|
||||
gint x, y;
|
||||
gint view_width, view_height;
|
||||
gint border_width, thickness;
|
||||
gint border_width;
|
||||
gint menu_height;
|
||||
guint vertical_padding;
|
||||
guint horizontal_padding;
|
||||
@ -4806,17 +4827,18 @@ gtk_menu_scroll_to (GtkMenu *menu,
|
||||
"horizontal-padding", &horizontal_padding,
|
||||
NULL);
|
||||
|
||||
thickness = get_menu_border_thickness (widget);
|
||||
get_menu_border (widget, &border);
|
||||
double_arrows = get_double_arrows (menu);
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (menu));
|
||||
|
||||
view_width -= (border_width + thickness + horizontal_padding) * 2;
|
||||
view_height -= (border_width + thickness + vertical_padding) * 2;
|
||||
menu_height = priv->requested_height - (border_width + thickness + vertical_padding) * 2;
|
||||
view_width -= (2 * (border_width + horizontal_padding)) + border.left + border.right;
|
||||
view_height -= (2 * (border_width + vertical_padding)) + border.top + border.bottom;
|
||||
menu_height = priv->requested_height - (2 * (border_width + vertical_padding)) -
|
||||
border.top - border.bottom;
|
||||
|
||||
x = border_width + thickness + horizontal_padding;
|
||||
y = border_width + thickness + vertical_padding;
|
||||
x = border_width + border.left + horizontal_padding;
|
||||
y = border_width + border.top + vertical_padding;
|
||||
|
||||
if (double_arrows && !menu->tearoff_active)
|
||||
{
|
||||
|
@ -351,16 +351,17 @@ gtk_menu_bar_size_request (GtkWidget *widget,
|
||||
if (get_shadow_type (menu_bar) != GTK_SHADOW_NONE)
|
||||
{
|
||||
GtkStyleContext *context;
|
||||
gint border_width;
|
||||
GtkBorder *border;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
|
||||
gtk_style_context_get (context, 0,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
requisition->width += border_width * 2;
|
||||
requisition->height += border_width * 2;
|
||||
requisition->width += border->left + border->right;
|
||||
requisition->height += border->top + border->bottom;
|
||||
gtk_border_free (border);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -436,15 +437,17 @@ gtk_menu_bar_size_allocate (GtkWidget *widget,
|
||||
if (get_shadow_type (menu_bar) != GTK_SHADOW_NONE)
|
||||
{
|
||||
GtkStyleContext *context;
|
||||
gint border_width;
|
||||
GtkBorder *border;
|
||||
|
||||
context = gtk_widget_get_style_context (widget);
|
||||
gtk_style_context_get (context, 0,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
child_allocation.x += border_width;
|
||||
child_allocation.y += border_width;
|
||||
child_allocation.x += border->left;
|
||||
child_allocation.y += border->top;
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
if (priv->pack_direction == GTK_PACK_DIRECTION_LTR ||
|
||||
|
@ -130,10 +130,10 @@ gtk_style_properties_class_init (GtkStylePropertiesClass *klass)
|
||||
"Padding",
|
||||
GTK_TYPE_BORDER, 0));
|
||||
gtk_style_properties_register_property (NULL,
|
||||
g_param_spec_int ("border-width",
|
||||
"Border width",
|
||||
"Border width, in pixels",
|
||||
0, G_MAXINT, 0, 0));
|
||||
g_param_spec_boxed ("border-width",
|
||||
"Border width",
|
||||
"Border width, in pixels",
|
||||
GTK_TYPE_BORDER, 0));
|
||||
gtk_style_properties_register_property (NULL,
|
||||
g_param_spec_int ("border-radius",
|
||||
"Border radius",
|
||||
|
@ -876,6 +876,7 @@ gtk_theming_engine_render_check (GtkThemingEngine *engine,
|
||||
GtkStateFlags flags;
|
||||
gint exterior_size, interior_size, thickness, pad;
|
||||
GtkBorderStyle border_style;
|
||||
GtkBorder *border;
|
||||
gint border_width;
|
||||
|
||||
flags = gtk_theming_engine_get_state (engine);
|
||||
@ -886,9 +887,11 @@ gtk_theming_engine_render_check (GtkThemingEngine *engine,
|
||||
"background-color", &bg_color,
|
||||
"border-color", &border_color,
|
||||
"border-style", &border_style,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
border_width = MIN (MIN (border->top, border->bottom),
|
||||
MIN (border->left, border->right));
|
||||
exterior_size = MIN (width, height);
|
||||
|
||||
if (exterior_size % 2 == 0) /* Ensure odd */
|
||||
@ -985,6 +988,7 @@ gtk_theming_engine_render_check (GtkThemingEngine *engine,
|
||||
gdk_rgba_free (fg_color);
|
||||
gdk_rgba_free (bg_color);
|
||||
gdk_rgba_free (border_color);
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -999,6 +1003,7 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine,
|
||||
GdkRGBA *fg_color, *bg_color, *border_color;
|
||||
gint exterior_size, interior_size, pad, thickness, border_width;
|
||||
GtkBorderStyle border_style;
|
||||
GtkBorder *border;
|
||||
gdouble radius;
|
||||
|
||||
flags = gtk_theming_engine_get_state (engine);
|
||||
@ -1011,10 +1016,12 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine,
|
||||
"background-color", &bg_color,
|
||||
"border-color", &border_color,
|
||||
"border-style", &border_style,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
exterior_size = MIN (width, height);
|
||||
border_width = MIN (MIN (border->top, border->bottom),
|
||||
MIN (border->left, border->right));
|
||||
|
||||
if (exterior_size % 2 == 0) /* Ensure odd */
|
||||
exterior_size -= 1;
|
||||
@ -1093,6 +1100,7 @@ gtk_theming_engine_render_option (GtkThemingEngine *engine,
|
||||
gdk_rgba_free (fg_color);
|
||||
gdk_rgba_free (bg_color);
|
||||
gdk_rgba_free (border_color);
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1298,6 +1306,7 @@ render_background_internal (GtkThemingEngine *engine,
|
||||
gboolean running;
|
||||
gdouble progress, alpha = 1;
|
||||
gint radius, border_width;
|
||||
GtkBorder *border;
|
||||
|
||||
flags = gtk_theming_engine_get_state (engine);
|
||||
cairo_save (cr);
|
||||
@ -1305,11 +1314,13 @@ render_background_internal (GtkThemingEngine *engine,
|
||||
gtk_theming_engine_get (engine, flags,
|
||||
"background-image", &pattern,
|
||||
"background-color", &bg_color,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
"border-radius", &radius,
|
||||
NULL);
|
||||
|
||||
running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress);
|
||||
border_width = MIN (MIN (border->top, border->bottom),
|
||||
MIN (border->left, border->right));
|
||||
|
||||
_cairo_round_rectangle_sides (cr, (gdouble) radius,
|
||||
x, y, width, height,
|
||||
@ -1527,6 +1538,7 @@ render_background_internal (GtkThemingEngine *engine,
|
||||
cairo_restore (cr);
|
||||
|
||||
gdk_rgba_free (bg_color);
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1543,7 +1555,8 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
|
||||
gboolean running;
|
||||
gdouble progress, alpha = 1;
|
||||
GtkJunctionSides junction;
|
||||
gint radius, border_width;
|
||||
GtkBorder *border;
|
||||
gint radius;
|
||||
|
||||
junction = gtk_theming_engine_get_junction_sides (engine);
|
||||
|
||||
@ -1557,20 +1570,19 @@ gtk_theming_engine_render_background (GtkThemingEngine *engine,
|
||||
}
|
||||
|
||||
gtk_theming_engine_get (engine, flags,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
NULL);
|
||||
|
||||
if (border_width > 0)
|
||||
{
|
||||
x += border_width;
|
||||
y += border_width;
|
||||
width -= 2 * border_width;
|
||||
height -= 2 * border_width;
|
||||
}
|
||||
x += border->left;
|
||||
y += border->top;
|
||||
width -= border->left + border->right;
|
||||
height -= border->top + border->bottom;
|
||||
|
||||
render_background_internal (engine, cr,
|
||||
x, y, width, height,
|
||||
junction);
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
/* Renders the small triangle on corners so
|
||||
@ -1612,16 +1624,19 @@ render_frame_internal (GtkThemingEngine *engine,
|
||||
gint border_width, radius;
|
||||
gdouble progress, d1, d2, m;
|
||||
gboolean running;
|
||||
GtkBorder *border;
|
||||
|
||||
state = gtk_theming_engine_get_state (engine);
|
||||
gtk_theming_engine_get (engine, state,
|
||||
"border-color", &border_color,
|
||||
"border-style", &border_style,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
"border-radius", &radius,
|
||||
NULL);
|
||||
|
||||
running = gtk_theming_engine_state_is_running (engine, GTK_STATE_PRELIGHT, &progress);
|
||||
border_width = MIN (MIN (border->top, border->bottom),
|
||||
MIN (border->left, border->right));
|
||||
|
||||
if (running)
|
||||
{
|
||||
@ -1770,6 +1785,8 @@ render_frame_internal (GtkThemingEngine *engine,
|
||||
|
||||
if (border_color)
|
||||
gdk_rgba_free (border_color);
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2202,14 +2219,18 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
|
||||
GtkStateFlags state;
|
||||
gint border_width, radius;
|
||||
gdouble x0, y0, x1, y1, xc, yc, wc, hc;
|
||||
GtkBorder *border;
|
||||
|
||||
state = gtk_theming_engine_get_state (engine);
|
||||
junction = gtk_theming_engine_get_junction_sides (engine);
|
||||
gtk_theming_engine_get (engine, state,
|
||||
"border-width", &border_width,
|
||||
"border-width", &border,
|
||||
"border-radius", &radius,
|
||||
NULL);
|
||||
|
||||
border_width = MIN (MIN (border->top, border->bottom),
|
||||
MIN (border->left, border->right));
|
||||
|
||||
cairo_save (cr);
|
||||
|
||||
switch (gap_side)
|
||||
@ -2279,6 +2300,8 @@ gtk_theming_engine_render_frame_gap (GtkThemingEngine *engine,
|
||||
0, junction);
|
||||
|
||||
cairo_restore (cr);
|
||||
|
||||
gtk_border_free (border);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user