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%2Fe4%2FSWTPopupMenuParticipant.java;h=e6e4d33ee1e98639ee64e063fd557db368209b5e;hp=eb7fd99281b39255a22d2ca98f3d7cd4e371c86f;hb=181013801c831415efe3cfe346546b5ab62c3214;hpb=ad5b573b5db77a3e00429fc24e2de855bce7f48a diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/e4/SWTPopupMenuParticipant.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/e4/SWTPopupMenuParticipant.java index eb7fd9928..e6e4d33ee 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/e4/SWTPopupMenuParticipant.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/ui/e4/SWTPopupMenuParticipant.java @@ -14,9 +14,6 @@ package org.simantics.diagram.ui.e4; import java.awt.geom.Point2D; import org.eclipse.e4.ui.model.application.ui.basic.MPart; -import org.eclipse.e4.ui.model.application.ui.menu.MMenu; -import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory; -import org.eclipse.e4.ui.model.application.ui.menu.MPopupMenu; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IMenuListener2; import org.eclipse.jface.action.IMenuManager; @@ -46,6 +43,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 @@ -215,19 +213,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); }); }