Fixed error thrown on shift+mousemove in path create mode
git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1986 eee81c28-f429-11dd-99c0-75d572ba1dddmaster
parent
c1e899171b
commit
085d7f479f
|
@ -3060,8 +3060,14 @@ var getMouseTarget = this.getMouseTarget = function(evt) {
|
||||||
start_y = snapToGrid(start_y);
|
start_y = snapToGrid(start_y);
|
||||||
}
|
}
|
||||||
if(evt.shiftKey) {
|
if(evt.shiftKey) {
|
||||||
var x1 = path.dragging?path.dragging[0]:start_x;
|
var path = svgedit.path.path;
|
||||||
var y1 = path.dragging?path.dragging[1]:start_y;
|
if(path) {
|
||||||
|
var x1 = path.dragging?path.dragging[0]:start_x;
|
||||||
|
var y1 = path.dragging?path.dragging[1]:start_y;
|
||||||
|
} else {
|
||||||
|
var x1 = start_x;
|
||||||
|
var y1 = start_y;
|
||||||
|
}
|
||||||
var xya = snapToAngle(x1,y1,x,y);
|
var xya = snapToAngle(x1,y1,x,y);
|
||||||
x=xya.x; y=xya.y;
|
x=xya.x; y=xya.y;
|
||||||
}
|
}
|
||||||
|
|
|
@ -421,6 +421,81 @@ svgedit.utilities.getBBox = function(elem) {
|
||||||
var ret = null;
|
var ret = null;
|
||||||
var elname = selected.nodeName;
|
var elname = selected.nodeName;
|
||||||
|
|
||||||
|
switch ( elname ) {
|
||||||
|
case 'text':
|
||||||
|
if(selected.textContent === '') {
|
||||||
|
selected.textContent = 'a'; // Some character needed for the selector to use.
|
||||||
|
ret = selected.getBBox();
|
||||||
|
selected.textContent = '';
|
||||||
|
} else {
|
||||||
|
try { ret = selected.getBBox();} catch(e){}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'path':
|
||||||
|
if(!svgedit.browser.supportsPathBBox()) {
|
||||||
|
ret = svgedit.utilities.getPathBBox(selected);
|
||||||
|
} else {
|
||||||
|
try { ret = selected.getBBox();} catch(e){}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
case 'a':
|
||||||
|
var matched = $(selected).find('line, path');
|
||||||
|
var issue = false;
|
||||||
|
if(matched.length) {
|
||||||
|
matched.each(function() {
|
||||||
|
var bb = this.getBBox();
|
||||||
|
if(!bb.width || !bb.height) {
|
||||||
|
issue = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(issue) {
|
||||||
|
console.log('get from kids');
|
||||||
|
ret = getStrokedBBox($(selected).children());
|
||||||
|
console.log('ret',ret);
|
||||||
|
} else {
|
||||||
|
ret = selected.getBBox();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret = selected.getBBox();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
|
||||||
|
if(elname === 'use' && !svgedit.browser.isWebkit() || elname === 'foreignObject') {
|
||||||
|
ret = selected.getBBox();
|
||||||
|
var bb = {};
|
||||||
|
bb.width = ret.width;
|
||||||
|
bb.height = ret.height;
|
||||||
|
bb.x = ret.x + parseFloat(selected.getAttribute('x')||0);
|
||||||
|
bb.y = ret.y + parseFloat(selected.getAttribute('y')||0);
|
||||||
|
ret = bb;
|
||||||
|
} else if(~visElems_arr.indexOf(elname)) {
|
||||||
|
try { ret = selected.getBBox();}
|
||||||
|
catch(e) {
|
||||||
|
// Check if element is child of a foreignObject
|
||||||
|
var fo = $(selected).closest("foreignObject");
|
||||||
|
if(fo.length) {
|
||||||
|
try {
|
||||||
|
ret = fo[0].getBBox();
|
||||||
|
} catch(e) {
|
||||||
|
ret = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ret = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ret) {
|
||||||
|
ret = svgedit.utilities.bboxToObj(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the bounding box from the DOM (which is in that element's coordinate system)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
|
||||||
if(elname === 'text' && selected.textContent === '') {
|
if(elname === 'text' && selected.textContent === '') {
|
||||||
selected.textContent = 'a'; // Some character needed for the selector to use.
|
selected.textContent = 'a'; // Some character needed for the selector to use.
|
||||||
ret = selected.getBBox();
|
ret = selected.getBBox();
|
||||||
|
|
Loading…
Reference in New Issue