Fix bug 904: Chrome Windows crashing

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2053 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Jeff Schiller 2012-02-23 03:11:28 +00:00
parent dfc67588dc
commit 53b1c45ed9
2 changed files with 12 additions and 1 deletions

View File

@ -35,6 +35,8 @@ var isOpera_ = !!window.opera;
var isWebkit_ = userAgent.indexOf("AppleWebKit") >= 0; var isWebkit_ = userAgent.indexOf("AppleWebKit") >= 0;
var isGecko_ = userAgent.indexOf('Gecko/') >= 0; var isGecko_ = userAgent.indexOf('Gecko/') >= 0;
var isIE_ = userAgent.indexOf('MSIE') >= 0; var isIE_ = userAgent.indexOf('MSIE') >= 0;
var isChrome_ = userAgent.indexOf('Chrome/') >= 0;
var isWindows_ = userAgent.indexOf('Windows') >= 0;
var supportsSelectors_ = (function() { var supportsSelectors_ = (function() {
return !!svg.querySelector; return !!svg.querySelector;
@ -153,6 +155,8 @@ svgedit.browser.isOpera = function() { return isOpera_; }
svgedit.browser.isWebkit = function() { return isWebkit_; } svgedit.browser.isWebkit = function() { return isWebkit_; }
svgedit.browser.isGecko = function() { return isGecko_; } svgedit.browser.isGecko = function() { return isGecko_; }
svgedit.browser.isIE = function() { return isIE_; } svgedit.browser.isIE = function() { return isIE_; }
svgedit.browser.isChrome = function() { return isChrome_; }
svgedit.browser.isWindows = function() { return isWindows_; }
svgedit.browser.supportsSelectors = function() { return supportsSelectors_; } svgedit.browser.supportsSelectors = function() { return supportsSelectors_; }
svgedit.browser.supportsXpath = function() { return supportsXpath_; } svgedit.browser.supportsXpath = function() { return supportsXpath_; }

View File

@ -2516,9 +2516,16 @@ var getMouseTarget = this.getMouseTarget = function(evt) {
tlist.appendItem(svgroot.createSVGTransform()); tlist.appendItem(svgroot.createSVGTransform());
if(svgedit.browser.supportsNonScalingStroke()) { if(svgedit.browser.supportsNonScalingStroke()) {
//Handle crash for newer Chrome + Windows: https://code.google.com/p/svg-edit/issues/detail?id=904
if(svgedit.browser.isChrome() && svgedit.browser.isWindows()) {
var _stroke = mouse_target.getAttributeNS(null, 'stroke');
mouse_target.removeAttributeNS(null, 'stroke');
//Re-apply stroke after delay. Anything higher than 1 seems to cause flicker
setTimeout(function() { mouse_target.setAttributeNS(null, 'stroke', _stroke) }, 1);
}
mouse_target.style.vectorEffect = 'non-scaling-stroke'; mouse_target.style.vectorEffect = 'non-scaling-stroke';
var all = mouse_target.getElementsByTagName('*'), len = all.length; var all = mouse_target.getElementsByTagName('*'), len = all.length;
for(var i = 0; i < all.length; i++) { for(var i = 0; i < len; i++) {
all[i].style.vectorEffect = 'non-scaling-stroke'; all[i].style.vectorEffect = 'non-scaling-stroke';
} }
} }