Skip to content

Commit 12ca9be

Browse files
committed
Scale ImageBasedFrame on parent:resize after ZoomChanged event
This commit adapts ImageBasedFrame scaling to be triggered when it's parent recieves a resize event after ZoomChanged event on its wrapped control.
1 parent 6ed2b3b commit 12ca9be

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

bundles/org.eclipse.e4.ui.widgets/src/org/eclipse/e4/ui/widgets/ImageBasedFrame.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.eclipse.swt.widgets.Canvas;
2525
import org.eclipse.swt.widgets.Composite;
2626
import org.eclipse.swt.widgets.Control;
27+
import org.eclipse.swt.widgets.Listener;
2728
import org.eclipse.swt.widgets.ToolBar;
2829

2930

@@ -66,9 +67,18 @@ public ImageBasedFrame(Composite parent, Control toWrap, boolean vertical,
6667
ImageBasedFrame frame = (ImageBasedFrame) event.widget;
6768
frame.setCursor(null);
6869
});
70+
6971
toWrap.addListener(SWT.ZoomChanged, event -> {
70-
toWrap.pack(true);
71-
setFramedControlLocation();
72+
final Listener[] scaleOnParentResize = new Listener[1];
73+
scaleOnParentResize[0] = e -> {
74+
if (isDisposed())
75+
return;
76+
toWrap.pack(true);
77+
setFramedControlLocation();
78+
parent.layout();
79+
parent.removeListener(SWT.Resize, scaleOnParentResize[0]);
80+
};
81+
parent.addListener(SWT.Resize, scaleOnParentResize[0]);
7282
});
7383

7484
addMouseMoveListener(e -> {

0 commit comments

Comments
 (0)