diff --git a/Platform/UI/Canvas.js b/Platform/UI/Canvas.js index fe20aa03e..c14266fe5 100644 --- a/Platform/UI/Canvas.js +++ b/Platform/UI/Canvas.js @@ -485,6 +485,19 @@ function newCanvas() { return } + if ( + event.shiftKey === true && + (event.ctrlKey === true || event.metaKey === true) && + (event.key === UI.projects.foundations.spaces.floatingSpace.settings.shortcuts.rescueFloatingObjectToMouse || event.key === UI.projects.foundations.spaces.floatingSpace.settings.shortcuts.rescueFloatingObjectToMouse.toLowerCase()) + + ) { + UI.projects.foundations.spaces.floatingSpace.rescueFloatingObjectToMouse(thisObject.mouse.position) + if (event.preventDefault !== undefined) { + event.preventDefault() + } + return + } + let nodeOnFocus = await UI.projects.foundations.spaces.designSpace.workspace.getNodeThatIsOnFocus() if (nodeOnFocus !== undefined) { if (nodeOnFocus.payload.uiObject.codeEditor !== undefined) { diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/FloatingObject.js b/Projects/Foundations/UI/Spaces/Floating-Space/FloatingObject.js index 47f1d5916..aa69a973c 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/FloatingObject.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/FloatingObject.js @@ -31,6 +31,7 @@ function newFloatingObject() { collapsedManually: false, typeStrokeStyle: undefined, nameStrokeStyle: undefined, + isVisibleFunction: isVisibleFunction, forceFocus: forceFocus, removeForceFocus: removeForceFocus, setFocus: setFocus, @@ -74,6 +75,7 @@ function newFloatingObject() { thisObject.container.isClickeable = true thisObject.container.isDraggeable = true thisObject.container.detectMouseOver = true + thisObject.container.isVisibleFunction = thisObject.isVisibleFunction thisObject.container.frame.radius = 0 thisObject.container.frame.position.x = 0 thisObject.container.frame.position.y = 0 @@ -826,4 +828,15 @@ function newFloatingObject() { function updateRadius() { } + + function isVisibleFunction(point){ + if(point.x <= UI.projects.foundations.spaces.floatingSpace.container.frame.width + (browserCanvas.width / 2) && point.x >= 0 + && point.y <= UI.projects.foundations.spaces.floatingSpace.container.frame.height + (browserCanvas.height / 2) && point.y >= 0) { + + return true + } + else{ + return false + } + } } diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/FloatingSpace.js b/Projects/Foundations/UI/Spaces/Floating-Space/FloatingSpace.js index db4054a1b..59c972d13 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/FloatingSpace.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/FloatingSpace.js @@ -42,7 +42,8 @@ function newFoundationsFloatingSpace() { finalize: finalize, saveFloatingObjectToBeMoved: saveFloatingObjectToBeMoved, moveSavedFloatingObjectToMouse: moveSavedFloatingObjectToMouse, - moveFloatingObject: moveFloatingObject + moveFloatingObject: moveFloatingObject, + rescueFloatingObjectToMouse: rescueFloatingObjectToMouse } thisObject.container = newContainer() @@ -112,7 +113,8 @@ function newFoundationsFloatingSpace() { saveWorkspace: "S", adjustAspectRatio: "A", saveFloatingObjectToBeMoved: "Z", - moveSavedFloatingObjectToMouse: "X" + moveSavedFloatingObjectToMouse: "X", + rescueFloatingObjectToMouse: "K" } } @@ -576,7 +578,9 @@ function newFoundationsFloatingSpace() { if (configSettings.shortcuts.moveSavedFloatingObjectToMouse !== undefined) { thisObject.settings.shortcuts.moveSavedFloatingObjectToMouse = configSettings.shortcuts.moveSavedFloatingObjectToMouse } - + if (configSettings.shortcuts.rescueFloatingObjectToMouse !== undefined) { + thisObject.settings.shortcuts.rescueFloatingObjectToMouse = configSettings.shortcuts.rescueFloatingObjectToMouse + } } } @@ -636,14 +640,21 @@ function newFoundationsFloatingSpace() { } + function canvasPositionToFrame(Position){ + + Position.y = Position.y + CURRENT_TOP_MARGIN + let positionConv + positionConv = thisObject.container.frame.frameThisPoint(Position) + positionConv.x = (2 * Position.x) - positionConv.x + positionConv.y = (2 * Position.y) - positionConv.y + return positionConv + } + + function moveSavedFloatingObjectToMouse(mousePosition) { - mousePosition.y = mousePosition.y + CURRENT_TOP_MARGIN let positionConv - positionConv = thisObject.container.frame.frameThisPoint(mousePosition) - positionConv.x = (2 * mousePosition.x) - positionConv.x - positionConv.y = (2 * mousePosition.y) - positionConv.y - + positionConv = canvasPositionToFrame(mousePosition) moveFloatingObject(positionConv) } @@ -677,4 +688,30 @@ function newFoundationsFloatingSpace() { } } + function rescueFloatingObjectToMouse(mousePosition){ + + let positionConv + positionConv = canvasPositionToFrame(mousePosition) + rescueFloatingObject(positionConv) + + } + + function rescueFloatingObject(position){ + + UI.projects.foundations.spaces.cockpitSpace.setStatus('Attempting to rescue lost nodes to your mouse', 100, UI.projects.foundations.spaces.cockpitSpace.statusTypes.ALL_GOOD) + + for (let i = 0; i < UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes.length; i++) { + let map = new Map() + map = UI.projects.foundations.utilities.hierarchy.getHiriarchyMap(UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes[i]) + let iterator1 = map.values(); + for (let k = 0; k < map.size; k++) { + let floatingObject1 = iterator1.next().value.payload.floatingObject + if(!floatingObject1.isVisibleFunction(floatingObject1.container.frame.position)){ + thisObject.floatingObjetSaved = floatingObject1 + moveFloatingObject(position) + } + } + } + thisObject.floatingObjetSaved = undefined + } }