mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Prevent nodes being dragged off canvas - top-left only
Fixes #120 Doesn't prevent dragging off the right/bottom sides, but that should be less likely to occur
This commit is contained in:
		| @@ -258,6 +258,8 @@ RED.view = function() { | |||||||
|                 mousePos[0] = 20*Math.floor(mousePos[0]/20); |                 mousePos[0] = 20*Math.floor(mousePos[0]/20); | ||||||
|                 mousePos[1] = 20*Math.floor(mousePos[1]/20); |                 mousePos[1] = 20*Math.floor(mousePos[1]/20); | ||||||
|             } |             } | ||||||
|  |             var minX = 0; | ||||||
|  |             var minY = 0; | ||||||
|             for (var n in moving_set) { |             for (var n in moving_set) { | ||||||
|                 var node = moving_set[n]; |                 var node = moving_set[n]; | ||||||
|                 node.n.x = mousePos[0]+node.dx; |                 node.n.x = mousePos[0]+node.dx; | ||||||
| @@ -266,6 +268,13 @@ RED.view = function() { | |||||||
|                     node.n.x = 20*Math.floor(node.n.x/20); |                     node.n.x = 20*Math.floor(node.n.x/20); | ||||||
|                     node.n.y = 20*Math.floor(node.n.y/20); |                     node.n.y = 20*Math.floor(node.n.y/20); | ||||||
|                 } |                 } | ||||||
|  |                 minX = Math.min(node.n.x-node.n.w/2-5,minX); | ||||||
|  |                 minY = Math.min(node.n.y-node.n.h/2-5,minY); | ||||||
|  |             } | ||||||
|  |             for (var n in moving_set) { | ||||||
|  |                 var node = moving_set[n]; | ||||||
|  |                 node.n.x -= minX; | ||||||
|  |                 node.n.y -= minY; | ||||||
|                 node.n.dirty = true; |                 node.n.dirty = true; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -1002,14 +1011,27 @@ RED.view = function() { | |||||||
|                 if (mouse_position == null) { |                 if (mouse_position == null) { | ||||||
|                     mouse_position = [0,0]; |                     mouse_position = [0,0]; | ||||||
|                 } |                 } | ||||||
|  |                  | ||||||
|  |                 var minX = 0; | ||||||
|  |                 var minY = 0; | ||||||
|  |  | ||||||
|                 for (var i in new_ms) { |                 for (var i in new_ms) { | ||||||
|                     new_ms[i].n.selected = true; |                     var node = new_ms[i]; | ||||||
|                     new_ms[i].n.changed = true; |                     node.n.selected = true; | ||||||
|                     new_ms[i].n.x -= dx - mouse_position[0]; |                     node.n.changed = true; | ||||||
|                     new_ms[i].n.y -= dy - mouse_position[1]; |                     node.n.x -= dx - mouse_position[0]; | ||||||
|                     new_ms[i].dx = new_ms[i].n.x - mouse_position[0]; |                     node.n.y -= dy - mouse_position[1]; | ||||||
|                     new_ms[i].dy = new_ms[i].n.y - mouse_position[1]; |                     node.dx = node.n.x - mouse_position[0]; | ||||||
|  |                     node.dy = node.n.y - mouse_position[1]; | ||||||
|  |                     minX = Math.min(node.n.x-node_width/2-5,minX); | ||||||
|  |                     minY = Math.min(node.n.y-node_height/2-5,minY); | ||||||
|  |                 } | ||||||
|  |                 for (var i in new_ms) { | ||||||
|  |                     var node = new_ms[i]; | ||||||
|  |                     node.n.x -= minX; | ||||||
|  |                     node.n.y -= minY; | ||||||
|  |                     node.dx -= minX; | ||||||
|  |                     node.dy -= minY; | ||||||
|                 } |                 } | ||||||
|                 mouse_mode = RED.state.IMPORT_DRAGGING; |                 mouse_mode = RED.state.IMPORT_DRAGGING; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user