From da7689d78547e9365a93c00280dda2cd0868d0c2 Mon Sep 17 00:00:00 2001 From: Isaiah Odhner Date: Fri, 20 Sep 2019 11:04:42 -0400 Subject: [PATCH] Toggle tools and make it so the airbrush + brush work whichever you select first --- src/$ToolBox.js | 6 +++++- src/app.js | 5 +++++ src/functions.js | 24 ++++++++++++++++++------ src/tools.js | 2 +- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/$ToolBox.js b/src/$ToolBox.js index 70c5748..8007af9 100644 --- a/src/$ToolBox.js +++ b/src/$ToolBox.js @@ -33,10 +33,14 @@ function $ToolBox(tools, is_extras){ }); $b.on("click", function(e){ + if (e.shiftKey) { + select_tool(tool, true); + return; + } if(selected_tool === tool && tool.deselect){ select_tool(previous_tool); }else{ - select_tool(tool, e.shiftKey); + select_tool(tool); } }); diff --git a/src/app.js b/src/app.js index caea886..91f5d02 100644 --- a/src/app.js +++ b/src/app.js @@ -555,6 +555,8 @@ $canvas.on("pointerdown", function(e){ pointer_start = pointer_previous = pointer = e2c(e); var pointerdown_action = function(){ + selected_tools.forEach((selected_tool)=> { + if(selected_tool.paint || selected_tool.pointerdown){ tool_go("pointerdown"); } @@ -571,14 +573,17 @@ $canvas.on("pointerdown", function(e){ pointer = e2c(e); selected_tool.pointerup && selected_tool.pointerup(ctx, pointer.x, pointer.y); } + if (selected_tools.length === 0) { if(selected_tool.deselect){ select_tool(previous_tool); } + } $G.off("pointermove", canvas_pointer_move); if(iid){ clearInterval(iid); } }); + }); }; if((typeof selected_tool.passive === "function") ? selected_tool.passive() : selected_tool.passive){ diff --git a/src/functions.js b/src/functions.js index 7ed9700..0a920f9 100644 --- a/src/functions.js +++ b/src/functions.js @@ -774,20 +774,32 @@ function get_tool_by_name(name){ } } -function select_tool(tool, add){ +function select_tool(tool, toggle){ if(!selected_tool.deselect){ previous_tool = selected_tool; } - selected_tool = tool; - if (add) { - selected_tools.push(tool); + if (toggle) { + var index = selected_tools.indexOf(tool); + if (index === -1) { + selected_tools.push(tool); + } else { + selected_tools.splice(index, 1); + } + if (selected_tools.length > 0) { + selected_tool = selected_tools[selected_tools.length - 1]; + } else { + selected_tool = tools[6]; + selected_tools = [selected_tool]; + } } else { + selected_tool = tool; selected_tools = [tool]; } deselect(); - if(selected_tool.activate){ - selected_tool.activate(); + + if(tool.preload){ + tool.preload(); } $toolbox.update_selected_tool(); diff --git a/src/tools.js b/src/tools.js index b0b179e..b50be3a 100644 --- a/src/tools.js +++ b/src/tools.js @@ -367,7 +367,7 @@ tools = [{ description: "Inserts text into the picture.", cursor: ["precise", [16, 16], "crosshair"], passive: true, - activate: function(){ + preload: function(){ setTimeout(FontDetective.preload, 10); }, drag_start_x: 0,