From 74c398b1514817251109a705e02e48ffa3589b09 Mon Sep 17 00:00:00 2001 From: Alexis Deveria Date: Thu, 27 Aug 2009 18:42:46 +0000 Subject: [PATCH] Fixed Issue 137: Can't change gradient of a text element git-svn-id: http://svg-edit.googlecode.com/svn/trunk@489 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/svgcanvas.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index 01b5ea15..d87c17b9 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -2273,11 +2273,10 @@ function SvgCanvas(c) // find out if there is a duplicate gradient already in the defs var duplicate_grad = findDuplicateGradient(grad); var defs = findDefs(); - + // no duplicate found, so import gradient into defs if (!duplicate_grad) { grad = defs.appendChild( svgdoc.importNode(grad, true) ); - // get next id and set it on the grad grad.id = getNextId(); } @@ -2568,6 +2567,17 @@ function SvgCanvas(c) if (attr == "#text") elem.textContent = val; else elem.setAttribute(attr, val); selectedBBoxes[i] = this.getBBox(elem); + if(elem.nodeName == 'text' && (val+'').indexOf('url') == 0) { + // Hack for Firefox new-gradient-on-text-bug + // Seems like the only way a new gradient is accepted is by creating a new elem + elem.setAttribute(attr, val); + var clone = elem.cloneNode(true) + elem.parentNode.insertBefore(clone, elem); + elem.parentNode.removeChild(elem); + elem = clone; + canvas.clearSelection(); + canvas.addToSelection([elem],true); + } // Timeout needed for Opera & Firefox setTimeout(function() { selectorManager.requestSelector(elem).resize(selectedBBoxes[i]);