diff --git a/web/app/sketcher/canvas.js b/web/app/sketcher/canvas.js index a35774d1..2e6af577 100644 --- a/web/app/sketcher/canvas.js +++ b/web/app/sketcher/canvas.js @@ -674,7 +674,8 @@ TCAD.TWO.CrossHair.prototype.draw = function(ctx, scale) { /** @constructor */ TCAD.TWO.ToolManager = function(viewer, defaultTool) { - this.stack = [defaultTool]; + this.defaultTool = defaultTool; + this.tool = defaultTool; var canvas = viewer.canvas; var tm = this; canvas.addEventListener('mousemove', function (e) { @@ -697,9 +698,19 @@ TCAD.TWO.ToolManager = function(viewer, defaultTool) { e.stopPropagation(); tm.getTool().mousewheel(e); }, false); + canvas.addEventListener('dblclick', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (tm.tool.dblclick !== undefined) { + tm.tool.dblclick(e); + } + }, false); window.addEventListener("keydown", function (e) { tm.getTool().keydown(e); + if (e.keyCode == 27) { + tm.releaseControl(); + } }, false); window.addEventListener("keypress", function (e) { tm.getTool().keydown(e); @@ -710,18 +721,16 @@ TCAD.TWO.ToolManager = function(viewer, defaultTool) { }; TCAD.TWO.ToolManager.prototype.takeControl = function(tool) { - this.stack.push(tool); + this.tool = tool; }; TCAD.TWO.ToolManager.prototype.releaseControl = function() { - if (this.stack.length == 1) { - return; - } - this.stack.pop().cleanup(); + this.tool.cleanup(); + this.tool = this.defaultTool; }; TCAD.TWO.ToolManager.prototype.getTool = function() { - return this.stack[this.stack.length - 1]; + return this.tool; }; /** @constructor */ diff --git a/web/app/sketcher/shapes/segment.js b/web/app/sketcher/shapes/segment.js index 02677dd1..6e9a1ba7 100644 --- a/web/app/sketcher/shapes/segment.js +++ b/web/app/sketcher/shapes/segment.js @@ -61,15 +61,25 @@ TCAD.TWO.AddSegmentTool.prototype.mouseup = function(e) { } }; +TCAD.TWO.AddSegmentTool.prototype.dblclick = function(e) { + this.cancelSegment(); +}; + TCAD.TWO.AddSegmentTool.prototype.mousewheel = function(e) { }; TCAD.TWO.AddSegmentTool.prototype.keydown = function(e) { - if (this.multi && this.line != null && e.keyCode == 27) { + if (e.keyCode == 27) { + this.cancelSegment(); + } +}; + +TCAD.TWO.AddSegmentTool.prototype.cancelSegment = function() { + if (this.multi && this.line != null) { this.viewer.remove(this.line); this.viewer.refresh(); this.cleanup(null); - } + } }; TCAD.TWO.AddSegmentTool.prototype.keypress = function(e) {};