diff options
author | Benjamin Otte <otte@redhat.com> | 2016-12-31 02:48:25 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-12-31 02:49:47 +0100 |
commit | 959f80e6e9b120ffc905d0f5be7740cc933d055f (patch) | |
tree | f855acdf567fc0f24cee4620dc8eff8c7ea1ea0c | |
parent | 45fbc25e5e86a44dff1c40e2592c8c69e26f23fb (diff) | |
download | gtk+-959f80e6e9b120ffc905d0f5be7740cc933d055f.tar.gz |
css: Implement filter
So far, it's only implemented for widgets, not for gadgets.
Not sure how to do it for gadgets without conflicts for widget gadgets
yet...
-rw-r--r-- | gtk/gtkcssstylepropertyimpl.c | 8 | ||||
-rw-r--r-- | gtk/gtkwidget.c | 9 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index 15ea1cac46..20d2988186 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -1594,6 +1594,14 @@ _gtk_css_style_property_init_properties (void) opacity_parse, opacity_query, _gtk_css_number_value_new (1, GTK_CSS_NUMBER)); + gtk_css_style_property_register ("filter", + GTK_CSS_PROPERTY_FILTER, + G_TYPE_NONE, + GTK_STYLE_PROPERTY_ANIMATED, + GTK_CSS_AFFECTS_REDRAW, + filter_value_parse, + NULL, + gtk_css_filter_value_new_none ()); /* Private property holding the binding sets */ gtk_css_style_property_register ("-gtk-key-bindings", diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 04dfc04d5e..8b52b6c348 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -37,9 +37,10 @@ #include "gtkaccelmapprivate.h" #include "gtkaccelgroupprivate.h" #include "gtkclipboard.h" -#include "gtkcssstylepropertyprivate.h" +#include "gtkcssfiltervalueprivate.h" #include "gtkcssnumbervalueprivate.h" #include "gtkcssshadowsvalueprivate.h" +#include "gtkcssstylepropertyprivate.h" #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkselectionprivate.h" @@ -15534,6 +15535,7 @@ gtk_widget_snapshot (GtkWidget *widget, { GtkWidgetClass *klass = GTK_WIDGET_GET_CLASS (widget); graphene_rect_t bounds; + GtkCssValue *filter_value; GtkAllocation clip; GtkAllocation alloc; RenderMode mode; @@ -15563,6 +15565,9 @@ gtk_widget_snapshot (GtkWidget *widget, if (GTK_DEBUG_CHECK (SNAPSHOT)) gtk_snapshot_push (snapshot, TRUE, "%s<%p>", gtk_widget_get_name (widget), widget); + filter_value = _gtk_style_context_peek_property (gtk_widget_get_style_context (widget), GTK_CSS_PROPERTY_FILTER); + gtk_css_filter_value_push_snapshot (filter_value, snapshot); + if (mode == RENDER_DRAW) { cairo_t *cr; @@ -15599,6 +15604,8 @@ gtk_widget_snapshot (GtkWidget *widget, gtk_snapshot_pop_and_append (snapshot); } + gtk_css_filter_value_pop_snapshot (filter_value, snapshot); + if (GTK_DEBUG_CHECK (SNAPSHOT)) gtk_snapshot_pop_and_append (snapshot); } |