From 411dbc49a10130beba0561a7a506d190e90f3929 Mon Sep 17 00:00:00 2001 From: Alexis Deveria Date: Thu, 16 Sep 2010 12:56:09 +0000 Subject: [PATCH] Fixed more IE9 bugs, re-enabled animation in IE git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1720 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/svg-editor.js | 2 +- editor/svgcanvas.js | 127 ++++++++++++++++++++++++++----------------- 2 files changed, 78 insertions(+), 51 deletions(-) diff --git a/editor/svg-editor.js b/editor/svg-editor.js index a370c513..09cf5ec3 100644 --- a/editor/svg-editor.js +++ b/editor/svg-editor.js @@ -12,7 +12,7 @@ (function() { // TODO: Find out what causes bugs in jQuery animate for IE9 - if($.browser.msie) $.fx.off = true; +// if($.browser.msie) $.fx.off = true; if(!window.svgEditor) window.svgEditor = function($) { var svgCanvas; diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index 4223b31e..5aeb1869 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -457,28 +457,20 @@ var canvas = this, // Array with width/height of canvas dimensions = curConfig.dimensions; - if($.browser.msie) { - var svgroot = document.createElementNS(svgns, 'svg'); - svgroot.id = 'svgroot'; - svgroot.setAttribute('width', dimensions[0]); - svgroot.setAttribute('height', dimensions[1]); - - } else { - // Create Root SVG element. This is a container for the document being edited, not the document itself. - var svgroot = svgdoc.importNode(Utils.text2xml('' + - '' + - '' + - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - ''+ - '').documentElement, true); - } + // Create Root SVG element. This is a container for the document being edited, not the document itself. + var svgroot = svgdoc.importNode(Utils.text2xml('' + + '' + + '' + + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + ''+ + '').documentElement, true); container.appendChild(svgroot); @@ -1231,9 +1223,11 @@ var SelectorManager; // get the bbox based on its children. var stroked_bbox = getStrokedBBox(selected.childNodes); if(stroked_bbox) { + var bb = {}; $.each(bbox, function(key, val) { - bbox[key] = stroked_bbox[key]; + bb[key] = stroked_bbox[key]; }); + bbox = bb; } } @@ -3508,7 +3502,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { if (childTlist) { var newxlate = svgroot.createSVGTransform(); newxlate.setTranslate(tx,ty); - childTlist.insertItemBefore(newxlate, 0); + if(childTlist.numberOfItems) { + childTlist.insertItemBefore(newxlate, 0); + } else { + childTlist.appendItem(newxlate); + } batchCmd.addSubCommand( recalculateDimensions(child) ); // If any have this group as a parent and are // referencing this child, then impose a reverse translate on it @@ -3568,7 +3566,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { if (gangle) { var newRot = svgroot.createSVGTransform(); newRot.setRotate(gangle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(newRot, 0); + } else { + tlist.appendItem(newRot); + } } if (tlist.numberOfItems == 0) { selected.removeAttribute("transform"); @@ -3586,7 +3588,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { var newRot = svgroot.createSVGTransform(); newRot.setRotate(gangle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(newRot, 0); + } else { + tlist.appendItem(newRot); + } } } // if it was a resize @@ -3617,7 +3623,12 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { var childTlist = getTransformList(child); var newxlate = svgroot.createSVGTransform(); newxlate.setTranslate(tx,ty); - childTlist.insertItemBefore(newxlate, 0); + if(childTlist.numberOfItems) { + childTlist.insertItemBefore(newxlate, 0); + } else { + childTlist.appendItem(newxlate); + } + batchCmd.addSubCommand( recalculateDimensions(child) ); start_transform = old_start_transform; } @@ -3625,7 +3636,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { } if (gangle) { - tlist.insertItemBefore(rnew, 0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(rnew, 0); + } else { + tlist.appendItem(rnew); + } } } } @@ -3773,7 +3788,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { if (angle) { var newRot = svgroot.createSVGTransform(); newRot.setRotate(angle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(newRot, 0); + } else { + tlist.appendItem(newRot); + } } if (tlist.numberOfItems == 0) { selected.removeAttribute("transform"); @@ -3797,7 +3816,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { } var newRot = svgroot.createSVGTransform(); newRot.setRotate(angle, newcenter.x, newcenter.y); - tlist.insertItemBefore(newRot, 0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(newRot, 0); + } else { + tlist.appendItem(newRot); + } } } // [Rold][M][T][S][-T] became [Rold][M] @@ -3817,7 +3840,11 @@ var recalculateDimensions = this.recalculateDimensions = function(selected) { remapElement(selected,changes,extrat); if (angle) { - tlist.insertItemBefore(rnew,0); + if(tlist.numberOfItems) { + tlist.insertItemBefore(rnew, 0); + } else { + tlist.appendItem(rnew); + } } } } // a non-group @@ -4382,7 +4409,11 @@ var getMouseTarget = this.getMouseTarget = function(evt) { for (var i = 0; i < selectedElements.length; ++i) { if(selectedElements[i] == null) continue; var slist = getTransformList(selectedElements[i]); - slist.insertItemBefore(svgroot.createSVGTransform(), 0); + if(slist.numberOfItems) { + slist.insertItemBefore(svgroot.createSVGTransform(), 0); + } else { + slist.appendItem(svgroot.createSVGTransform()); + } } } } @@ -4429,9 +4460,11 @@ var getMouseTarget = this.getMouseTarget = function(evt) { // Getting the BBox from the selection box, since we know we // want to orient around it init_bbox = getBBox($('#selectedBox0')[0]); + var bb = {}; $.each(init_bbox, function(key, val) { - init_bbox[key] = val/current_zoom; + bb[key] = val/current_zoom; }); + init_bbox = bb; // append three dummy transforms to the tlist so that // we can translate,scale,translate in mousemove @@ -4820,21 +4853,7 @@ var getMouseTarget = this.getMouseTarget = function(evt) { tlist.replaceItem(scale, N-2); tlist.replaceItem(translateOrigin, N-1); } - var selectedBBox = selectedBBoxes[0]; - - if(selectedBBox) { - // reset selected bbox top-left position - selectedBBox.x = left; - selectedBBox.y = top; - - // if this is a translate, adjust the box position - if (tx) { - selectedBBox.x += dx; - } - if (ty) { - selectedBBox.y += dy; - } - } + selectorManager.requestSelector(selected).resize(); break; case "zoom": @@ -10581,13 +10600,21 @@ this.ungroupSelectedElement = function() { } if (sangle) { - chtlist.insertItemBefore(r2, 0); + if(chtlist.numberOfItems) { + chtlist.insertItemBefore(r2, 0); + } else { + chtlist.appendItem(r2); + } } if (trm.e || trm.f) { var tr = svgroot.createSVGTransform(); tr.setTranslate(trm.e, trm.f); - chtlist.insertItemBefore(tr, 0); + if(chtlist.numberOfItems) { + chtlist.insertItemBefore(tr, 0); + } else { + chtlist.appendItem(tr); + } } } else { // more complicated than just a rotate