Skip to content

Commit fb64c75

Browse files
committed
WIP: Make DnD consumer monitorAware
1 parent a9ec6c9 commit fb64c75

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DetachedDropAgent.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.eclipse.e4.ui.workbench.IPresentationEngine;
2323
import org.eclipse.e4.ui.workbench.modeling.EModelService;
2424
import org.eclipse.swt.SWT;
25+
import org.eclipse.swt.graphics.MonitorAwarePoint;
26+
import org.eclipse.swt.graphics.MonitorAwareRectangle;
2527
import org.eclipse.swt.graphics.Point;
2628
import org.eclipse.swt.graphics.Rectangle;
2729
import org.eclipse.swt.widgets.Control;
@@ -96,6 +98,10 @@ public Rectangle getRectangle(MUIElement dragElement) {
9698
Point cp = Display.getCurrent().getCursorLocation();
9799
curRect.x = cp.x - 15;
98100
curRect.y = cp.y - 15;
101+
if (cp instanceof MonitorAwarePoint monitorAwareCp) {
102+
return new MonitorAwareRectangle(curRect.x, curRect.y, curRect.width, curRect.height,
103+
monitorAwareCp.getMonitor());
104+
}
99105

100106
return curRect;
101107
}

bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/DnDManager.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.eclipse.swt.events.KeyListener;
3636
import org.eclipse.swt.graphics.Cursor;
3737
import org.eclipse.swt.graphics.Image;
38+
import org.eclipse.swt.graphics.MonitorAwareRectangle;
3839
import org.eclipse.swt.graphics.Rectangle;
3940
import org.eclipse.swt.graphics.Region;
4041
import org.eclipse.swt.graphics.Resource;
@@ -464,8 +465,13 @@ private Rectangle getOverlayBounds() {
464465
Rectangle bounds = null;
465466
for (Rectangle fr : frames) {
466467
if (fr.width > 6) {
467-
Rectangle outerBounds = new Rectangle(fr.x - 3, fr.y - 3, fr.width + 6,
468-
fr.height + 6);
468+
Rectangle outerBounds;
469+
if (fr instanceof MonitorAwareRectangle monitorAwareFr) {
470+
outerBounds = new MonitorAwareRectangle(fr.x - 3, fr.y - 3, fr.width + 6, fr.height + 6,
471+
monitorAwareFr.getMonitor());
472+
} else {
473+
outerBounds = new Rectangle(fr.x - 3, fr.y - 3, fr.width + 6, fr.height + 6);
474+
}
469475
if (bounds == null) {
470476
bounds = outerBounds;
471477
}

0 commit comments

Comments
 (0)