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);
|
||||
}
|
||||
if(evt.shiftKey) {
|
||||
var path = svgedit.path.path;
|
||||
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);
|
||||
x=xya.x; y=xya.y;
|
||||
}
|
||||
|
|
|
@ -421,6 +421,81 @@ svgedit.utilities.getBBox = function(elem) {
|
|||
var ret = null;
|
||||
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 === '') {
|
||||
selected.textContent = 'a'; // Some character needed for the selector to use.
|
||||
ret = selected.getBBox();
|
||||
|
|
Loading…
Reference in New Issue