X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fui%2FSWTPopupMenuParticipant.java;h=c489373b6a5b0391ea2e64b7f6ec8b22fd78731c;hp=588692b917fc3b5a3fa5cdd33ca175311b373c1b;hb=181013801c831415efe3cfe346546b5ab62c3214;hpb=ad5b573b5db77a3e00429fc24e2de855bce7f48a diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/SWTPopupMenuParticipant.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/SWTPopupMenuParticipant.java index 588692b91..c489373b6 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/SWTPopupMenuParticipant.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/SWTPopupMenuParticipant.java @@ -27,7 +27,6 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPartSite; import org.simantics.g2d.canvas.ICanvasContext; @@ -42,6 +41,7 @@ import org.simantics.utils.datastructures.hints.HintListenerAdapter; import org.simantics.utils.datastructures.hints.IHintContext.Key; import org.simantics.utils.datastructures.hints.IHintListener; import org.simantics.utils.datastructures.hints.IHintObservable; +import org.simantics.utils.ui.SWTDPIUtil; /** * A participant that initializes an SWT pop-up menu and registers it with the @@ -221,20 +221,15 @@ public class SWTPopupMenuParticipant extends AbstractCanvasParticipant { * @param newValue * @thread canvas-thread (AWT) */ - protected void showPopup(Point2D newValue) { - final Point2D cp = (Point2D) newValue; + protected void showPopup(Point2D cp) { setHint(DiagramHints.POPUP_MENU_CONTROL_POSITION, cp); setHint(DiagramHints.POPUP_MENU_CANVAS_POSITION, trUtil.controlToCanvas(cp, null)); - display.asyncExec(new Runnable() { - @Override - public void run() { - if (control == null || control.isDisposed()) - return; - - Point p = control.toDisplay((int) cp.getX(), (int) cp.getY()); - menuManager.getMenu().setLocation(p); - menuManager.getMenu().setVisible(true); - } + display.asyncExec(() -> { + if (control == null || control.isDisposed()) + return; + Point p = control.toDisplay( SWTDPIUtil.downscaleSwtToInteger(cp) ); + menuManager.getMenu().setLocation(p); + menuManager.getMenu().setVisible(true); }); }