Make GtkSeparator use GtkStyleContext
This commit is contained in:
parent
7c35994bda
commit
92102c3bf4
@ -161,12 +161,17 @@ gtk_separator_get_preferred_size (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkSeparator *separator = GTK_SEPARATOR (widget);
|
GtkSeparator *separator = GTK_SEPARATOR (widget);
|
||||||
GtkSeparatorPrivate *private = separator->priv;
|
GtkSeparatorPrivate *private = separator->priv;
|
||||||
GtkStyle *style;
|
GtkStyleContext *context;
|
||||||
|
GtkStateFlags state;
|
||||||
|
GtkBorder border;
|
||||||
gboolean wide_sep;
|
gboolean wide_sep;
|
||||||
gint sep_width;
|
gint sep_width;
|
||||||
gint sep_height;
|
gint sep_height;
|
||||||
|
|
||||||
style = gtk_widget_get_style (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
|
state = gtk_widget_get_state_flags (widget);
|
||||||
|
gtk_style_context_get_border (context, state, &border);
|
||||||
|
|
||||||
gtk_widget_style_get (widget,
|
gtk_widget_style_get (widget,
|
||||||
"wide-separators", &wide_sep,
|
"wide-separators", &wide_sep,
|
||||||
"separator-width", &sep_width,
|
"separator-width", &sep_width,
|
||||||
@ -179,11 +184,11 @@ gtk_separator_get_preferred_size (GtkWidget *widget,
|
|||||||
}
|
}
|
||||||
else if (orientation == GTK_ORIENTATION_VERTICAL)
|
else if (orientation == GTK_ORIENTATION_VERTICAL)
|
||||||
{
|
{
|
||||||
*minimum = *natural = wide_sep ? sep_height : style->ythickness;
|
*minimum = *natural = wide_sep ? sep_height : border.top;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*minimum = *natural = wide_sep ? sep_width : style->xthickness;
|
*minimum = *natural = wide_sep ? sep_width : border.left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,15 +214,16 @@ gtk_separator_draw (GtkWidget *widget,
|
|||||||
{
|
{
|
||||||
GtkSeparator *separator = GTK_SEPARATOR (widget);
|
GtkSeparator *separator = GTK_SEPARATOR (widget);
|
||||||
GtkSeparatorPrivate *private = separator->priv;
|
GtkSeparatorPrivate *private = separator->priv;
|
||||||
GtkStateType state;
|
GtkStateFlags state;
|
||||||
GtkStyle *style;
|
GtkStyleContext *context;
|
||||||
|
GtkBorder padding;
|
||||||
GdkWindow *window;
|
GdkWindow *window;
|
||||||
gboolean wide_separators;
|
gboolean wide_separators;
|
||||||
gint separator_width;
|
gint separator_width;
|
||||||
gint separator_height;
|
gint separator_height;
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|
||||||
style = gtk_widget_get_style (widget);
|
context = gtk_widget_get_style_context (widget);
|
||||||
gtk_widget_style_get (widget,
|
gtk_widget_style_get (widget,
|
||||||
"wide-separators", &wide_separators,
|
"wide-separators", &wide_separators,
|
||||||
"separator-width", &separator_width,
|
"separator-width", &separator_width,
|
||||||
@ -225,39 +231,36 @@ gtk_separator_draw (GtkWidget *widget,
|
|||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
window = gtk_widget_get_window (widget);
|
window = gtk_widget_get_window (widget);
|
||||||
state = gtk_widget_get_state (widget);
|
state = gtk_widget_get_state_flags (widget);
|
||||||
width = gtk_widget_get_allocated_width (widget);
|
width = gtk_widget_get_allocated_width (widget);
|
||||||
height = gtk_widget_get_allocated_height (widget);
|
height = gtk_widget_get_allocated_height (widget);
|
||||||
|
|
||||||
|
gtk_style_context_get_padding (context, state, &padding);
|
||||||
|
|
||||||
|
gtk_style_context_save (context);
|
||||||
|
gtk_style_context_set_state (context, state);
|
||||||
|
|
||||||
if (private->orientation == GTK_ORIENTATION_HORIZONTAL)
|
if (private->orientation == GTK_ORIENTATION_HORIZONTAL)
|
||||||
{
|
{
|
||||||
if (wide_separators)
|
if (wide_separators)
|
||||||
gtk_paint_box (style, cr,
|
gtk_render_frame (context, cr,
|
||||||
gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT,
|
0, (height - separator_height) / 2,
|
||||||
widget, "hseparator",
|
width, separator_height);
|
||||||
0, (height - separator_height) / 2,
|
|
||||||
width, separator_height);
|
|
||||||
else
|
else
|
||||||
gtk_paint_hline (style, cr,
|
gtk_render_line (context, cr,
|
||||||
gtk_widget_get_state (widget),
|
0, (height - padding.top) / 2,
|
||||||
widget, "hseparator",
|
width - 1, (height - padding.top) / 2);
|
||||||
0, width - 1,
|
|
||||||
(height - style->ythickness) / 2);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (wide_separators)
|
if (wide_separators)
|
||||||
gtk_paint_box (style, cr,
|
gtk_render_frame (context, cr,
|
||||||
gtk_widget_get_state (widget), GTK_SHADOW_ETCHED_OUT,
|
(width - separator_width) / 2, 0,
|
||||||
widget, "vseparator",
|
separator_width, height);
|
||||||
(width - separator_width) / 2, 0,
|
|
||||||
separator_width, height);
|
|
||||||
else
|
else
|
||||||
gtk_paint_vline (style, cr,
|
gtk_render_line (context, cr,
|
||||||
gtk_widget_get_state (widget),
|
(width - padding.left) / 2, 0,
|
||||||
widget, "vseparator",
|
(width - padding.left) / 2, height - 1);
|
||||||
0, height - 1,
|
|
||||||
(width - style->xthickness) / 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user