@@ -44,6 +44,20 @@ function initializeTools(cornerstoneTools, tools, element) {
4444 } ) ;
4545}
4646
47+ function layoutsEqual ( a , b ) {
48+ if ( a . viewports . length !== b . viewports . length ) {
49+ return false ;
50+ }
51+
52+ return a . viewports . every ( ( aViewport , index ) => {
53+ return viewportsEqual ( aViewport , b . viewports [ index ] ) ;
54+ } ) ;
55+ }
56+
57+ function viewportsEqual ( a , b ) {
58+ return a . height === b . height && a . width === b . width ;
59+ }
60+
4761class CornerstoneViewport extends Component {
4862 static defaultProps = {
4963 activeTool : 'Wwwc' ,
@@ -210,6 +224,13 @@ class CornerstoneViewport extends Component {
210224 } ) ;
211225 } ;
212226
227+ getOverlay ( ) {
228+ const { viewportOverlayComponent : Component } = this . props ;
229+ const { imageId, stack, viewport } = this . state ;
230+
231+ return < Component stack = { stack } viewport = { viewport } imageId = { imageId } /> ;
232+ }
233+
213234 render ( ) {
214235 const isLoading = this . state . isLoading ;
215236 // TODO: Check this later
@@ -222,18 +243,6 @@ class CornerstoneViewport extends Component {
222243 className += ' active' ;
223244 }
224245
225- const getOverlay = ( ) => {
226- const Component = this . props . viewportOverlayComponent ;
227-
228- return (
229- < Component
230- stack = { this . state . stack }
231- viewport = { this . state . viewport }
232- imageId = { this . state . imageId }
233- />
234- ) ;
235- } ;
236-
237246 return (
238247 < div className = { className } >
239248 { ReactResizeDetector && (
@@ -255,7 +264,7 @@ class CornerstoneViewport extends Component {
255264 < LoadingIndicator error = { this . state . error } />
256265 ) }
257266 < canvas className = "cornerstone-canvas" />
258- { getOverlay ( ) }
267+ { this . getOverlay ( ) }
259268 < ViewportOrientationMarkers
260269 imageId = { this . state . imageId }
261270 viewport = { this . state . viewport }
@@ -696,7 +705,7 @@ class CornerstoneViewport extends Component {
696705 } ) ;
697706 }
698707
699- if ( this . props . layout !== prevProps . layout ) {
708+ if ( ! layoutsEqual ( this . props . layout , prevProps . layout ) ) {
700709 this . debouncedResize ( ) ;
701710 }
702711
0 commit comments