From 05bd771953e5d00d7094c40a18f765bbe9927e7d Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 28 Feb 2020 19:07:43 +0100 Subject: [PATCH] Bug Fixes & panels hidding --- CanvasApp/Canvas.js | 16 ++++++++++------ CanvasApp/Panels/LayersPanel.js | 29 ++++++++++++++++++++++++++--- CanvasApp/Panels/PanelTabButton.js | 12 ++---------- CanvasApp/Spaces/PanelsSpace.js | 4 ++-- 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/CanvasApp/Canvas.js b/CanvasApp/Canvas.js index 18fe9869e..a0a5b6ad4 100644 --- a/CanvasApp/Canvas.js +++ b/CanvasApp/Canvas.js @@ -550,11 +550,15 @@ function newCanvas () { container = thisObject.panelsSpace.getContainer(point) - if (container !== undefined && container.isDraggeable === true && event.shiftKey === false) { - containerBeingDragged = container - containerDragStarted = true - containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) - return + if (container !== undefined && event.shiftKey === false) { + if (container.isDraggeable === true) { + containerBeingDragged = container + containerDragStarted = true + containerBeingDragged.eventHandler.raiseEvent('onDragStarted', point) + return + } else { + return + } } if (container !== undefined && container.isClickeable === true) { @@ -783,7 +787,7 @@ function newCanvas () { /* We check if the mouse is over a panel/ */ if (thisObject.panelsSpace !== undefined) { - container = thisObject.panelsSpace.getContainer(point) + container = thisObject.panelsSpace.getContainer(point, GET_CONTAINER_PURPOSE.MOUSE_OVER) if (container !== undefined && container.detectMouseOver === true) { containerFound() diff --git a/CanvasApp/Panels/LayersPanel.js b/CanvasApp/Panels/LayersPanel.js index 9381a844b..258c9d8b7 100644 --- a/CanvasApp/Panels/LayersPanel.js +++ b/CanvasApp/Panels/LayersPanel.js @@ -18,8 +18,11 @@ function newLayersPanel () { thisObject.container.initialize() thisObject.container.isDraggeable = true thisObject.container.isWheelable = true + thisObject.container.detectMouseOver = true let isInitialized = false + let isMouseOver = false + let mouseOverCounter = 0 let layersMap = new Map() let visibleLayers = [] @@ -36,10 +39,12 @@ function newLayersPanel () { let posiblePanelHeight = (layerHeight + LAYER_SEPARATION) * posibleVisibleLayers + headerHeight + footerHeight let onMouseWheelEventSuscriptionId + let onMouseOverEventSuscriptionId return thisObject function finalize () { thisObject.container.eventHandler.stopListening(onMouseWheelEventSuscriptionId) + thisObject.container.eventHandler.stopListening(onMouseOverEventSuscriptionId) thisObject.panelTabButton.finalize() thisObject.panelTabButton = undefined @@ -74,6 +79,7 @@ function newLayersPanel () { thisObject.panelTabButton.initialize() onMouseWheelEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseWheel', onMouseWheel) + onMouseOverEventSuscriptionId = thisObject.container.eventHandler.listenToEvent('onMouseOver', onMouseOver) readObjectState() @@ -166,6 +172,11 @@ function newLayersPanel () { } } + function onMouseOver (event) { + isMouseOver = true + mouseOverCounter = 150 + } + function onMouseWheel (event) { delta = event.wheelDelta if (delta > 0) { @@ -239,7 +250,7 @@ function newLayersPanel () { thisObject.container.eventHandler.raiseEvent('Layer Status Changed', layer) } - function getContainer (point) { + function getContainer (point, purpose) { if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } let container @@ -261,7 +272,9 @@ function newLayersPanel () { checkPoint = thisObject.fitFunction(checkPoint) if (point.x === checkPoint.x && point.y === checkPoint.y) { - return container + if (container.isForThisPurpose(purpose)) { + return container + } } } } @@ -291,8 +304,18 @@ function newLayersPanel () { readObjectState() } + function mouseOverPhysics () { + mouseOverCounter-- + if (mouseOverCounter < 0) { + mouseOverCounter = 0 + isMouseOver = false + } + } + function physics () { if (isInitialized === false) { return } + + mouseOverPhysics() thisObject.panelTabButton.physics() saveFrame(thisObject.payload, thisObject.container.frame) syncWithConfigPhysics() @@ -369,7 +392,7 @@ function newLayersPanel () { } function draw () { - if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true) { return } + if (isInitialized === false || thisObject.visible === false || thisObject.isHidden === true || isMouseOver === false) { return } // thisObject.container.frame.draw(false, false, false, thisObject.fitFunction) diff --git a/CanvasApp/Panels/PanelTabButton.js b/CanvasApp/Panels/PanelTabButton.js index 2d4b37565..38de1b23c 100644 --- a/CanvasApp/Panels/PanelTabButton.js +++ b/CanvasApp/Panels/PanelTabButton.js @@ -19,6 +19,7 @@ function newPanelTabButton () { thisObject.container.name = 'Panel Tab Button' thisObject.container.initialize() thisObject.container.isClickeable = true + thisObject.container.isDraggeable = false thisObject.container.frame.containerName = 'Panel Tab Button' /* Animation to hide the pannel */ @@ -127,19 +128,10 @@ function newPanelTabButton () { drawButton() } - function getContainer (point) { + function getContainer (point, purpose) { let container - - /* First we check if thisObject point is inside thisObject space. */ - if (thisObject.container.frame.isThisPointHere(point, true) === true) { - /* Now we see which is the inner most container that has it */ - return thisObject.container - } else { - /* This point does not belong to thisObject space. */ - - return undefined } } diff --git a/CanvasApp/Spaces/PanelsSpace.js b/CanvasApp/Spaces/PanelsSpace.js index b1bd3ebc6..970226f67 100644 --- a/CanvasApp/Spaces/PanelsSpace.js +++ b/CanvasApp/Spaces/PanelsSpace.js @@ -326,7 +326,7 @@ function newPanelsSpace () { } } - function getContainer (point) { + function getContainer (point, purpose) { if (thisObject.visible !== true) { return } let container @@ -339,7 +339,7 @@ function newPanelsSpace () { let owner = canvas.chartingSpace.inViewport.get(panel.owner) if (owner !== undefined) { if (panel.isVisible === true && panel.isHidden === false) { - container = panel.getContainer(point) + container = panel.getContainer(point, purpose) } } if (container !== undefined) {