From 9ecaddbd9465b94a0acb72cd6c6ed9bec15bf281 Mon Sep 17 00:00:00 2001 From: Jeff Schiller Date: Fri, 16 Oct 2009 18:01:05 +0000 Subject: [PATCH] Fix Issue 291: keep tool by default, automatically switch to select mode if clicking on a shape git-svn-id: http://svg-edit.googlecode.com/svn/trunk@836 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/svgcanvas.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/editor/svgcanvas.js b/editor/svgcanvas.js index 974b9548..1319b9a2 100644 --- a/editor/svgcanvas.js +++ b/editor/svgcanvas.js @@ -1466,19 +1466,28 @@ function BatchCommand(text) { start_x = x; start_y = y; + + var t = evt.target; + // if this element is in a group, go up until we reach the top-level group + // just below the layer groups + // TODO: once we implement links, we also would have to check for elements + while (t.parentNode.parentNode.tagName == "g") { + t = t.parentNode; + } + // if we are not in the middle of creating a path, and we've clicked on some shape, + // then go to Select mode. + // WebKit returns
when the canvas is clicked, Firefox/Opera return + if ( (current_mode != "poly" || current_poly_pts.length == 0) && + t.id != "svgcanvas" && t.id != "svgroot") + { + // switch into "select" mode if we've clicked on an element + canvas.setMode("select"); + } switch (current_mode) { case "select": started = true; current_resize_mode = "none"; - var t = evt.target; - // if this element is in a group, go up until we reach the top-level group - // just below the layer groups - // TODO: once we implement links, we also would have to check for elements - while (t.parentNode.parentNode.tagName == "g") { - t = t.parentNode; - } - // WebKit returns
when the canvas is clicked, Firefox/Opera return var nodeName = t.nodeName.toLowerCase(); if (nodeName != "div" && nodeName != "svg") { // if this element is not yet selected, clear selection and select it @@ -2931,7 +2940,8 @@ function BatchCommand(text) { current_mode = "polyedit"; recalcPolyPoints(); addAllPointGripsToPoly(current_poly_pts.length/2 - 1); - } else { + } else if (current_mode == "text") { + // keep us in the tool we were in unless it was a text element canvas.addToSelection([element], true); } // we create the insert command that is stored on the stack