diff --git a/ChartingSpace/TimeMachine.js b/ChartingSpace/TimeMachine.js index 71122a7d9..0d2fdd1db 100644 --- a/ChartingSpace/TimeMachine.js +++ b/ChartingSpace/TimeMachine.js @@ -394,7 +394,7 @@ function newTimeMachine () { } function panelPhysics () { - if (thisObject.container.frame.isInViewPort() && canvas.chartingSpace.viewport.zoomTargetLevel > ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS) { + if (thisObject.container.frame.isCenterInViewPort() && canvas.chartingSpace.viewport.zoomTargetLevel > ZOOM_OUT_THRESHOLD_FOR_HIDDING_PANELS) { canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Layers Panel') canvas.panelsSpace.unHide(thisObject.payload.node.id, 'Plotter Panel') } else { diff --git a/Frame.js b/Frame.js index 3f8bb1590..f86a0a666 100644 --- a/Frame.js +++ b/Frame.js @@ -21,6 +21,7 @@ function newFrame () { isThisPointHere: isThisPointHere, // This function return true is the point received as parameter lives within this frame. isThisScreenPointHere: isThisScreenPointHere, isInViewPort: isInViewPort, + isCenterInViewPort: isCenterInViewPort, initialize: initialize, finalize: finalize } @@ -76,6 +77,24 @@ function newFrame () { } } + function isCenterInViewPort () { + /* This function is usefull to know if the object who has this frame is currently appearing at least in part at the canvas.chartingSpace.viewport */ + + point = { + x: thisObject.width / 2, + y: thisObject.height / 2 + } + + /* Now the transformations. */ + point = transformThisPoint(point, thisObject.container) + + if (point.x < canvas.chartingSpace.viewport.visibleArea.topRight.x && point.y < canvas.chartingSpace.viewport.visibleArea.bottomRight.y && point.x > canvas.chartingSpace.viewport.visibleArea.bottomLeft.x && point.y > canvas.chartingSpace.viewport.visibleArea.topLeft.y) { + return true + } else { + return false + } + } + function frameThisPoint (point) { /* We need not to modify the point received, so me make a copy of it. */