From ab0b3e81e37352dea0154ff7d505074cc5549b8e Mon Sep 17 00:00:00 2001 From: unsettledgames <47360416+unsettledgames@users.noreply.github.com> Date: Sun, 15 Mar 2020 17:11:00 +0100 Subject: [PATCH] Fixed more bugs :cool: :cool: --- js/_changeTool.js | 1 + js/_mouseEvents.js | 6 ++++++ js/_move.js | 19 +++++++++++-------- js/_rectSelect.js | 4 ++-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/js/_changeTool.js b/js/_changeTool.js index 25ebcf3..af539bf 100644 --- a/js/_changeTool.js +++ b/js/_changeTool.js @@ -2,6 +2,7 @@ function changeTool (selectedTool) { // Ending any selection in progress if (currentTool.includes("select") && !selectedTool.includes("select") && !selectionCanceled) { endSelection(); + console.log("FINISCO"); } //set tool and temp tje tje tpp; currentTool = selectedTool; diff --git a/js/_mouseEvents.js b/js/_mouseEvents.js index 80d5d19..abf45b2 100644 --- a/js/_mouseEvents.js +++ b/js/_mouseEvents.js @@ -23,6 +23,12 @@ window.addEventListener("mousedown", function (mouseEvent) { currentTool = 'eyedropper'; else if (mouseEvent.target.className == 'drawingCanvas' && (currentTool == 'pencil' || currentTool == 'eraser')) new HistoryStateEditCanvas(); + else if (currentTool == 'moveselection') { + if (!cursorInSelectedArea()) { + changeTool('pencil'); + undo(); + } + } //saveHistoryState({type: 'canvas', canvas: context.getImageData(0, 0, canvasSize[0], canvasSize[1])}); updateCursor(); diff --git a/js/_move.js b/js/_move.js index d3eef89..cca209a 100644 --- a/js/_move.js +++ b/js/_move.js @@ -1,4 +1,5 @@ var imageDataToMove; +var originalDataPosition; var canMoveSelection = false; var lastMovePos; var selectionCanceled = false; @@ -19,13 +20,6 @@ function updateMovePreview(mouseEvent) { } function endSelection() { - // We have to make something smarter: - // Take the selected data - // Take the data underlying the selected data - // for every element in the selected data - // if the current pixel is empty - // copy the pixel in the selected data - TMPLayer.context.clearRect(0, 0, TMPLayer.canvas.width, TMPLayer.canvas.height); VFXLayer.context.clearRect(0, 0, VFXLayer.canvas.width, VFXLayer.canvas.height); @@ -52,10 +46,19 @@ function endSelection() { } } - currentLayer.context.putImageData( + if (lastMovePos !== undefined) { + currentLayer.context.putImageData( imageDataToMove, Math.round(lastMovePos[0] / zoom - imageDataToMove.width / 2), Math.round(lastMovePos[1] / zoom - imageDataToMove.height / 2)); + } + else { + currentLayer.context.putImageData( + imageDataToMove, + originalDataPosition[0], + originalDataPosition[1]); + } selectionCanceled = true; + isRectSelecting = false; } \ No newline at end of file diff --git a/js/_rectSelect.js b/js/_rectSelect.js index e7a11f3..7ada7eb 100644 --- a/js/_rectSelect.js +++ b/js/_rectSelect.js @@ -71,10 +71,10 @@ function endRectSelection(mouseEvent) { // Selecting the move tool currentTool = 'moveselection'; currentToolTemp = currentTool; + + originalDataPosition = [startX, startY]; // Updating the cursor updateCursor(); - - //currentLayer.context.putImageData(imageData, startX, startY); } function drawRect(x, y) {