Fixed issue 139: After copying the SVG code from one window/file to another, object browser SHIFT+O/P function is lost
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@495 eee81c28-f429-11dd-99c0-75d572ba1dddmaster
parent
e64035dc4e
commit
8d54485ea4
|
@ -590,22 +590,7 @@ function SvgCanvas(c)
|
||||||
|
|
||||||
if(!curBBoxes.length) {
|
if(!curBBoxes.length) {
|
||||||
// Cache all bboxes
|
// Cache all bboxes
|
||||||
|
curBBoxes = canvas.getVisibleElements(true);
|
||||||
var nodes = svgroot.childNodes;
|
|
||||||
var i = svgroot.childNodes.length;
|
|
||||||
|
|
||||||
while (i--) {
|
|
||||||
// need to do this since the defs has no bbox and causes an exception
|
|
||||||
// to be thrown in Mozilla
|
|
||||||
try {
|
|
||||||
var box = canvas.getBBox(nodes[i]);
|
|
||||||
if (nodes[i].id != "selectorParentGroup" && box) {
|
|
||||||
curBBoxes.push({'elem':nodes[i], 'bbox':box});
|
|
||||||
}
|
|
||||||
} catch(e) {
|
|
||||||
// do nothing, this element did not have a bbox
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var resultList = null;
|
var resultList = null;
|
||||||
|
@ -1142,7 +1127,7 @@ function SvgCanvas(c)
|
||||||
}
|
}
|
||||||
++j;
|
++j;
|
||||||
}
|
}
|
||||||
|
|
||||||
// now add each element consecutively
|
// now add each element consecutively
|
||||||
var i = elemsToAdd.length;
|
var i = elemsToAdd.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
|
@ -2724,30 +2709,44 @@ function SvgCanvas(c)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.getVisibleElements = function(includeBBox) {
|
||||||
|
var nodes = svgroot.childNodes;
|
||||||
|
var i = nodes.length;
|
||||||
|
var contentElems = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
var elem = nodes[i];
|
||||||
|
try {
|
||||||
|
var box = canvas.getBBox(elem);
|
||||||
|
if (elem.id != "selectorParentGroup" && box) {
|
||||||
|
var item = includeBBox?{'elem':elem, 'bbox':box}:elem;
|
||||||
|
contentElems.push(item);
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
}
|
||||||
|
return contentElems;
|
||||||
|
}
|
||||||
|
|
||||||
this.cycleElement = function(next) {
|
this.cycleElement = function(next) {
|
||||||
var cur_elem = selectedElements[0];
|
var cur_elem = selectedElements[0];
|
||||||
var elem = false;
|
var elem = false;
|
||||||
|
var all_elems = this.getVisibleElements();
|
||||||
if (cur_elem == null) {
|
if (cur_elem == null) {
|
||||||
if(next) {
|
var num = next?all_elems.length-1:0;
|
||||||
var elem = svgroot.firstChild;
|
elem = all_elems[num];
|
||||||
if (elem.tagName == 'defs') {
|
|
||||||
elem = elem.nextSibling;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var elem = svgroot.lastChild;
|
|
||||||
var id = elem.getAttribute('id');
|
|
||||||
if(!id || id.indexOf('svg_') != 0){
|
|
||||||
elem = elem.previousSibling;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
var type = next?'next':'previous';
|
var i = all_elems.length;
|
||||||
var elem = cur_elem[type + 'Sibling'];
|
while(i--) {
|
||||||
if(!elem) return;
|
if(all_elems[i] == cur_elem) {
|
||||||
|
var num = next?i-1:i+1;
|
||||||
var id = elem.getAttribute('id');
|
if(num >= all_elems.length || num < 0) {
|
||||||
if(!id || id.indexOf('svg_') != 0) {
|
elem = cur_elem;
|
||||||
return;
|
break;
|
||||||
|
} else {
|
||||||
|
elem = all_elems[num];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
canvas.clearSelection();
|
canvas.clearSelection();
|
||||||
|
|
Loading…
Reference in New Issue