Skip to content

Commit 2f6a390

Browse files
amartya4256HeikoKlare
authored andcommitted
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 6c2a6d9 commit 2f6a390

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
******************************************************************************/
1515
package org.eclipse.e4.ui.widgets;
1616

17+
import java.util.concurrent.atomic.AtomicReference;
18+
1719
import org.eclipse.swt.SWT;
1820
import org.eclipse.swt.events.ControlEvent;
1921
import org.eclipse.swt.events.ControlListener;
@@ -24,6 +26,7 @@
2426
import org.eclipse.swt.widgets.Canvas;
2527
import org.eclipse.swt.widgets.Composite;
2628
import org.eclipse.swt.widgets.Control;
29+
import org.eclipse.swt.widgets.Listener;
2730
import org.eclipse.swt.widgets.ToolBar;
2831

2932

@@ -66,9 +69,19 @@ public ImageBasedFrame(Composite parent, Control toWrap, boolean vertical,
6669
ImageBasedFrame frame = (ImageBasedFrame) event.widget;
6770
frame.setCursor(null);
6871
});
72+
6973
toWrap.addListener(SWT.ZoomChanged, event -> {
70-
toWrap.pack(true);
71-
setFramedControlLocation();
74+
final AtomicReference<Listener> scaleOnParentResize = new AtomicReference<>();
75+
scaleOnParentResize.set(e -> {
76+
if (isDisposed()) {
77+
return;
78+
}
79+
toWrap.pack(true);
80+
setFramedControlLocation();
81+
parent.layout();
82+
parent.removeListener(SWT.Resize, scaleOnParentResize.get());
83+
});
84+
parent.addListener(SWT.Resize, scaleOnParentResize.get());
7285
});
7386

7487
addMouseMoveListener(e -> {

0 commit comments

Comments
 (0)