From 2d6933fe66b6f55a464b82a506e6f7b2f0d871bf Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Sat, 20 Aug 2016 10:48:01 -0300 Subject: [PATCH] Fixing enlarged active viewport issue --- .../imageViewerViewport.js | 32 ++++++++++++++----- Packages/viewerbase/lib/setActiveViewport.js | 6 ++-- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js index 480a731a2..311d1ba8d 100644 --- a/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js +++ b/Packages/viewerbase/client/components/viewer/imageViewerViewport/imageViewerViewport.js @@ -105,7 +105,7 @@ function loadDisplaySetIntoViewport(data, templateData) { var options = { renderer: 'webgl' }; - + // NOTE: This uses the experimental WebGL renderer for Cornerstone! // If you have problems, replace it with this line instead: // cornerstone.enable(element); @@ -513,16 +513,32 @@ Template.imageViewerViewport.onDestroyed(function() { }); Template.imageViewerViewport.events({ - 'ActivateViewport .imageViewerViewport': function(e) { + 'ActivateViewport .imageViewerViewport'(event) { log.info('imageViewerViewport ActivateViewport'); - setActiveViewport(e.currentTarget); + setActiveViewport(event.currentTarget); }, - 'click .imageViewerViewport': function(e) { - var viewportIndex = $('.imageViewerViewport').index(e.currentTarget); - Session.set('activeViewport', viewportIndex); + + 'click .imageViewerViewport'(event) { + setActiveViewport(event.currentTarget); }, - 'CornerstoneToolsMouseDoubleClick .imageViewerViewport, CornerstoneToolsDoubleTap .imageViewerViewport': function(e) { - var viewportIndex = $('.imageViewerViewport').index(e.currentTarget); + + 'CornerstoneToolsMouseDoubleClick .imageViewerViewport, CornerstoneToolsDoubleTap .imageViewerViewport'(event) { + // Get the double clicked viewport index + const viewportIndex = $('.imageViewerViewport').index(event.currentTarget); + + // Enlarge the double clicked viewport layoutManager.toggleEnlargement(viewportIndex); + + // Wait for DOM re-rendering and update the active viewport + Tracker.afterFlush(() => { + // Check if the viewer is zoomed + if (layoutManager.isZoomed) { + // Set the active viewport as the only one visible + setActiveViewport($('.imageViewerViewport')[0]); + } else { + // Set the active viewport as the previous zoomed viewport + setActiveViewport($('.imageViewerViewport').eq(window.layoutManager.zoomedViewportIndex)); + } + }); } }); diff --git a/Packages/viewerbase/lib/setActiveViewport.js b/Packages/viewerbase/lib/setActiveViewport.js index 1b4660f0d..04cef870b 100644 --- a/Packages/viewerbase/lib/setActiveViewport.js +++ b/Packages/viewerbase/lib/setActiveViewport.js @@ -7,7 +7,7 @@ setActiveViewport = function(element) { // When an ActivateViewport event is fired, update the Meteor Session // with the viewport index that it was fired from. - Session.set("activeViewport", viewportIndex); + Session.set('activeViewport', viewportIndex); // Add the 'active' class to the parent container to highlight the active viewport $('#imageViewerViewports .viewportContainer').removeClass('active'); @@ -21,5 +21,5 @@ setActiveViewport = function(element) { // Set the div to focused, so keypress events are handled //$(element).focus(); //.focus() event breaks in FF&IE - $(element).triggerHandler("focus"); -}; \ No newline at end of file + $(element).triggerHandler('focus'); +};