mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-08 17:50:10 +00:00
css: Make some corner values static
Provide static value for uniform corners with lengths from 0 to 8px. This covers the majority of corners in widget-factory.
This commit is contained in:
parent
17644b12a5
commit
494cff94d6
@ -88,7 +88,7 @@ gtk_css_value_corner_transition (GtkCssValue *start,
|
||||
|
||||
static void
|
||||
gtk_css_value_corner_print (const GtkCssValue *corner,
|
||||
GString *string)
|
||||
GString *string)
|
||||
{
|
||||
_gtk_css_value_print (corner->x, string);
|
||||
if (!_gtk_css_value_equal (corner->x, corner->y))
|
||||
@ -109,12 +109,57 @@ static const GtkCssValueClass GTK_CSS_VALUE_CORNER = {
|
||||
gtk_css_value_corner_print
|
||||
};
|
||||
|
||||
static GtkCssValue corner_singletons[] = {
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
{ >K_CSS_VALUE_CORNER, 1, TRUE, NULL, NULL },
|
||||
};
|
||||
|
||||
static inline void
|
||||
initialize_corner_singletons (void)
|
||||
{
|
||||
static gboolean initialized = FALSE;
|
||||
|
||||
if (initialized)
|
||||
return;
|
||||
|
||||
for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
|
||||
{
|
||||
corner_singletons[i].x = gtk_css_dimension_value_new (i, GTK_CSS_PX);
|
||||
corner_singletons[i].y = gtk_css_value_ref (corner_singletons[i].x);
|
||||
}
|
||||
|
||||
initialized = TRUE;
|
||||
}
|
||||
|
||||
GtkCssValue *
|
||||
_gtk_css_corner_value_new (GtkCssValue *x,
|
||||
GtkCssValue *y)
|
||||
{
|
||||
GtkCssValue *result;
|
||||
|
||||
if (x == y &&
|
||||
gtk_css_number_value_get_dimension (x) == GTK_CSS_DIMENSION_LENGTH)
|
||||
{
|
||||
initialize_corner_singletons ();
|
||||
|
||||
for (unsigned int i = 0; i < G_N_ELEMENTS (corner_singletons); i++)
|
||||
{
|
||||
if (corner_singletons[i].x == x)
|
||||
{
|
||||
gtk_css_value_unref (x);
|
||||
gtk_css_value_unref (y);
|
||||
|
||||
return gtk_css_value_ref (&corner_singletons[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
result = _gtk_css_value_new (GtkCssValue, >K_CSS_VALUE_CORNER);
|
||||
result->x = x;
|
||||
result->y = y;
|
||||
|
Loading…
Reference in New Issue
Block a user