Skip to content

Commit 6cc7ab0

Browse files
dlwiredannyrb
authored andcommitted
fix: transition from identity comparison to deeper comparison for layouts (#28)
1 parent 31e6b33 commit 6cc7ab0

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

src/CornerstoneViewport/CornerstoneViewport.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
4761
class 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

Comments
 (0)