From: Timm Bäder Date: Mon, 13 Jan 2020 07:37:52 +0000 (+0100) Subject: cssshadowvalue: Only create 2 shadows values for transitions X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~283 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a3769eb0e560d1d6be83b3883955c28e22e8daf3;p=gtk4.git cssshadowvalue: Only create 2 shadows values for transitions This is for cases where we want to transition from "no shadow" to "shadow", which we need quite a lot. --- diff --git a/gtk/gtkcssshadowvalue.c b/gtk/gtkcssshadowvalue.c index cc123dc8cc..e0213de8be 100644 --- a/gtk/gtkcssshadowvalue.c +++ b/gtk/gtkcssshadowvalue.c @@ -192,17 +192,29 @@ gtk_css_shadow_value_new (GtkCssValue *hoffset, return retval; } + +static GtkCssValue transition_inset_singleton = { >K_CSS_VALUE_SHADOW, 1, TRUE, .inset = TRUE }; +static GtkCssValue transition_outset_singleton = { >K_CSS_VALUE_SHADOW, 1, TRUE, .inset = FALSE }; + GtkCssValue * _gtk_css_shadow_value_new_for_transition (GtkCssValue *target) { + GtkCssValue *result; + g_return_val_if_fail (target->class == >K_CSS_VALUE_SHADOW, NULL); - return gtk_css_shadow_value_new (_gtk_css_number_value_new (0, GTK_CSS_PX), - _gtk_css_number_value_new (0, GTK_CSS_PX), - _gtk_css_number_value_new (0, GTK_CSS_PX), - _gtk_css_number_value_new (0, GTK_CSS_PX), - target->inset, - gtk_css_color_value_new_transparent ()); + if (target->inset) + result = &transition_inset_singleton; + else + result = &transition_outset_singleton; + + if (G_UNLIKELY (!result->hoffset)) + { + result->hoffset = result->voffset = result->spread = result->radius = _gtk_css_number_value_new (0, GTK_CSS_PX); + result->color = gtk_css_color_value_new_transparent (); + } + + return _gtk_css_value_ref (result); } enum {