mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-13 05:50:10 +00:00
cssshadowvalue: Add gtk_css_shadow_value_pop_snapshot
This is the counterpart ot gtk_css_shadow_value_push_snapshot. To make this easy, move the determination whether we need a shadow out of the push function and save it.
This commit is contained in:
parent
4e27de7df9
commit
5b8896f1db
@ -308,6 +308,7 @@ gtk_css_shadow_value_new (ShadowValue *shadows,
|
||||
memcpy (retval->shadows, shadows, sizeof (ShadowValue) * n_shadows);
|
||||
|
||||
retval->is_computed = TRUE;
|
||||
|
||||
for (i = 0; i < n_shadows; i++)
|
||||
{
|
||||
const ShadowValue *shadow = &retval->shadows[i];
|
||||
@ -706,7 +707,6 @@ gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
|
||||
gboolean need_shadow = FALSE;
|
||||
guint i;
|
||||
|
||||
/* TODO: We can save this as a flag once and then reuse it */
|
||||
for (i = 0; i < value->n_shadows; i++)
|
||||
{
|
||||
const ShadowValue *shadow = &value->shadows[i];
|
||||
@ -737,3 +737,25 @@ gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
|
||||
|
||||
return need_shadow;
|
||||
}
|
||||
|
||||
void
|
||||
gtk_css_shadow_value_pop_snapshot (const GtkCssValue *value,
|
||||
GtkSnapshot *snapshot)
|
||||
{
|
||||
gboolean need_shadow = FALSE;
|
||||
guint i;
|
||||
|
||||
for (i = 0; i < value->n_shadows; i++)
|
||||
{
|
||||
const ShadowValue *shadow = &value->shadows[i];
|
||||
|
||||
if (!gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
|
||||
{
|
||||
need_shadow = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (need_shadow)
|
||||
gtk_snapshot_pop (snapshot);
|
||||
}
|
||||
|
@ -34,12 +34,12 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
GtkCssValue * gtk_css_shadow_value_new_none (void);
|
||||
GtkCssValue * gtk_css_shadow_value_new_none (void);
|
||||
GtkCssValue * gtk_css_shadow_value_new_filter (void);
|
||||
|
||||
GtkCssValue * gtk_css_shadow_value_parse (GtkCssParser *parser,
|
||||
gboolean box_shadow_mode);
|
||||
GtkCssValue * _gtk_css_shadow_value_parse_filter (GtkCssParser *parser);
|
||||
GtkCssValue * gtk_css_shadow_value_parse_filter (GtkCssParser *parser);
|
||||
|
||||
void gtk_css_shadow_value_get_extents (const GtkCssValue *shadow,
|
||||
GtkBorder *border);
|
||||
@ -55,6 +55,8 @@ gboolean gtk_css_shadow_value_is_none (const GtkCssValue
|
||||
|
||||
gboolean gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
|
||||
GtkSnapshot *snapshot);
|
||||
void gtk_css_shadow_value_pop_snapshot (const GtkCssValue *value,
|
||||
GtkSnapshot *snapshot);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user