1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Merge pull request #3643 from node-red/fix-drag-hidden

Reset mouse state when switching tabs
This commit is contained in:
Nick O'Leary 2022-06-16 11:09:29 +01:00 committed by GitHub
commit 8093ae8570
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -230,6 +230,7 @@ RED.view = (function() {
.on("mousedown", canvasMouseDown) .on("mousedown", canvasMouseDown)
.on("mouseup", canvasMouseUp) .on("mouseup", canvasMouseUp)
.on("mouseenter", function() { .on("mouseenter", function() {
d3.select(document).on('mouseup.red-ui-workspace-tracker', null)
if (lasso) { if (lasso) {
if (d3.event.buttons !== 1) { if (d3.event.buttons !== 1) {
lasso.remove(); lasso.remove();
@ -245,6 +246,7 @@ RED.view = (function() {
} }
} }
}) })
.on("mouseleave", canvasMouseLeave)
.on("touchend", function() { .on("touchend", function() {
d3.event.preventDefault(); d3.event.preventDefault();
clearTimeout(touchStartTime); clearTimeout(touchStartTime);
@ -385,6 +387,9 @@ RED.view = (function() {
drag_lines = []; drag_lines = [];
RED.events.on("workspace:change",function(event) { RED.events.on("workspace:change",function(event) {
// Just in case the mouse left the workspace whilst doing an action,
// put us back into default mode so the refresh works
mouse_mode = 0
if (event.old !== 0) { if (event.old !== 0) {
workspaceScrollPositions[event.old] = { workspaceScrollPositions[event.old] = {
left:chart.scrollLeft(), left:chart.scrollLeft(),
@ -972,7 +977,7 @@ RED.view = (function() {
} }
function canvasMouseDown() { function canvasMouseDown() {
if (RED.view.DEBUG) { if (RED.view.DEBUG) {
console.warn("canvasMouseDown", { mouse_mode, point: d3.mouse(this), event: d3.event }); console.warn("canvasMouseDown", { mouse_mode, point: d3.mouse(this), event: d3.event });
} }
if (mouse_mode === RED.state.SELECTING_NODE) { if (mouse_mode === RED.state.SELECTING_NODE) {
@ -1733,10 +1738,17 @@ RED.view = (function() {
redraw(); redraw();
} }
} }
function canvasMouseLeave() {
if (mouse_mode !== 0 && d3.event.buttons !== 0) {
d3.select(document).on('mouseup.red-ui-workspace-tracker', function() {
d3.select(document).on('mouseup.red-ui-workspace-tracker', null)
canvasMouseUp.call(this)
})
}
}
function canvasMouseUp() { function canvasMouseUp() {
lastClickPosition = [d3.event.offsetX/scaleFactor,d3.event.offsetY/scaleFactor]; lastClickPosition = [d3.event.offsetX/scaleFactor,d3.event.offsetY/scaleFactor];
if (RED.view.DEBUG) { if (RED.view.DEBUG) {
console.warn("canvasMouseUp", { mouse_mode, point: d3.mouse(this), event: d3.event }); console.warn("canvasMouseUp", { mouse_mode, point: d3.mouse(this), event: d3.event });
} }
var i; var i;
@ -3736,7 +3748,7 @@ RED.view = (function() {
function junctionMouseOutProxy(e) { junctionMouseOut(d3.select(this), this.__data__) } function junctionMouseOutProxy(e) { junctionMouseOut(d3.select(this), this.__data__) }
function linkMouseDown(d) { function linkMouseDown(d) {
if (RED.view.DEBUG) { if (RED.view.DEBUG) {
console.warn("linkMouseDown", { mouse_mode, point: d3.mouse(this), event: d3.event }); console.warn("linkMouseDown", { mouse_mode, point: d3.mouse(this), event: d3.event });
} }
if (mouse_mode === RED.state.SELECTING_NODE) { if (mouse_mode === RED.state.SELECTING_NODE) {