diff --git a/fulltests/deja-dup.svg b/fulltests/deja-dup.svg
new file mode 100644
index 0000000..ca3506c
--- /dev/null
+++ b/fulltests/deja-dup.svg
@@ -0,0 +1,207 @@
+
+
+
diff --git a/fulltests/go-bottom.svg b/fulltests/go-bottom.svg
new file mode 100644
index 0000000..263df90
--- /dev/null
+++ b/fulltests/go-bottom.svg
@@ -0,0 +1,249 @@
+
+
+
+
diff --git a/scour.py b/scour.py
index 4d75408..c1a1ace 100755
--- a/scour.py
+++ b/scour.py
@@ -1291,6 +1291,12 @@ def removeDuplicateGradients(doc):
elem.setAttribute(attr, 'url(#'+master_id+')')
if elem.getAttributeNS(NS['XLINK'], 'href') == '#'+dup_id:
elem.setAttributeNS(NS['XLINK'], 'href', '#'+master_id)
+ styles = _getStyle(elem)
+ for style in styles:
+ v = styles[style]
+ if v == 'url(#'+dup_id+')' or v == 'url("#'+dup_id+'")' or v == "url('#"+dup_id+"')":
+ styles[style] = 'url(#'+master_id+')'
+ _setStyle(elem, styles)
# now that all referencing elements have been re-mapped to the master
# it is safe to remove this gradient from the document
diff --git a/testscour.py b/testscour.py
index a4d0d2d..82f1ab3 100755
--- a/testscour.py
+++ b/testscour.py
@@ -1217,6 +1217,18 @@ class RemoveDefsWithWhitespace(unittest.TestCase):
self.assertEquals(doc.getElementsByTagName('defs').length, 0,
'Kept defs, although it contains only whitespace or is ')
+class DuplicateGradientsUpdateStyle(unittest.TestCase):
+ def runTest(self):
+ doc = scour.scourXmlFile('unittests/duplicate-gradients-update-style.svg',
+ scour.parse_args(['--disable-style-to-xml'])[0])
+ gradientTag = doc.getElementsByTagName('linearGradient')[0]
+ rectTag0 = doc.getElementsByTagName('rect')[0]
+ rectTag1 = doc.getElementsByTagName('rect')[1]
+ self.assertEquals('fill:url(#' + gradientTag.getAttribute('id') + ')', rectTag0.getAttribute('style'),
+ 'Either of #duplicate-one or #duplicate-two was removed, but style="fill:" was not updated to reflect this')
+ self.assertEquals('fill:url(#' + gradientTag.getAttribute('id') + ')', rectTag1.getAttribute('style'),
+ 'Either of #duplicate-one or #duplicate-two was removed, but style="fill:" was not updated to reflect this')
+
# TODO: write tests for --enable-viewboxing
# TODO; write a test for embedding rasters
# TODO: write a test for --disable-embed-rasters
diff --git a/unittests/duplicate-gradients-update-style.svg b/unittests/duplicate-gradients-update-style.svg
new file mode 100644
index 0000000..c28070c
--- /dev/null
+++ b/unittests/duplicate-gradients-update-style.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file