summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNiko Kiirala <niko@kiirala.com>2009-05-17 00:10:29 +0000
committerkiirala <kiirala@users.sourceforge.net>2009-05-17 00:10:29 +0000
commit120328424287f2d71c730ef89bc4b139f7dba80f (patch)
tree3159084e7284696971ebc211ceed9a3009c10094 /src
parentFixed crashes in feImage when modifying source, one caused by previous fix (diff)
downloadinkscape-120328424287f2d71c730ef89bc4b139f7dba80f.tar.gz
inkscape-120328424287f2d71c730ef89bc4b139f7dba80f.zip
Bitmap images with filters are now updated as the filter is modified
(bzr r7891)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-arena-image.cpp2
-rw-r--r--src/sp-image.cpp18
2 files changed, 20 insertions, 0 deletions
diff --git a/src/display/nr-arena-image.cpp b/src/display/nr-arena-image.cpp
index 52f6278e4..f45a2da4f 100644
--- a/src/display/nr-arena-image.cpp
+++ b/src/display/nr-arena-image.cpp
@@ -380,6 +380,8 @@ void nr_arena_image_set_style (NRArenaImage *image, SPStyle *style)
&& style->enable_background.value == SP_CSS_BACKGROUND_NEW) {
image->background_new = true;
}
+
+ nr_arena_item_request_update(image, NR_ARENA_ITEM_STATE_ALL, FALSE);
}
diff --git a/src/sp-image.cpp b/src/sp-image.cpp
index c99e1e0f7..65aad1e2d 100644
--- a/src/sp-image.cpp
+++ b/src/sp-image.cpp
@@ -73,6 +73,7 @@ static void sp_image_build (SPObject * object, SPDocument * document, Inkscape::
static void sp_image_release (SPObject * object);
static void sp_image_set (SPObject *object, unsigned int key, const gchar *value);
static void sp_image_update (SPObject *object, SPCtx *ctx, unsigned int flags);
+static void sp_image_modified (SPObject *object, unsigned int flags);
static Inkscape::XML::Node *sp_image_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
static void sp_image_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &transform, unsigned const flags);
@@ -584,6 +585,7 @@ sp_image_class_init (SPImageClass * klass)
sp_object_class->release = sp_image_release;
sp_object_class->set = sp_image_set;
sp_object_class->update = sp_image_update;
+ sp_object_class->modified = sp_image_modified;
sp_object_class->write = sp_image_write;
item_class->bbox = sp_image_bbox;
@@ -1009,6 +1011,22 @@ sp_image_update (SPObject *object, SPCtx *ctx, unsigned int flags)
sp_image_update_canvas_image ((SPImage *) object);
}
+static void
+sp_image_modified (SPObject *object, unsigned int flags)
+{
+ SPImage *image = SP_IMAGE (object);
+
+ if (((SPObjectClass *) (parent_class))->modified) {
+ (* ((SPObjectClass *) (parent_class))->modified) (object, flags);
+ }
+
+ if (flags & SP_OBJECT_STYLE_MODIFIED_FLAG) {
+ for (SPItemView *v = SP_ITEM (image)->display; v != NULL; v = v->next) {
+ nr_arena_image_set_style (NR_ARENA_IMAGE (v->arenaitem), object->style);
+ }
+ }
+}
+
static Inkscape::XML::Node *
sp_image_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
{