diff --git a/org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/policy/nonvisual/NonVisualLayoutEditPolicy.java b/org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/policy/nonvisual/NonVisualLayoutEditPolicy.java index 1bc895a3a..734af0c09 100644 --- a/org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/policy/nonvisual/NonVisualLayoutEditPolicy.java +++ b/org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/policy/nonvisual/NonVisualLayoutEditPolicy.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2025 Google, Inc. and others. + * Copyright (c) 2011, 2026 Google, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -13,6 +13,7 @@ package org.eclipse.wb.internal.core.gef.policy.nonvisual; import org.eclipse.wb.core.gef.command.EditCommand; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.core.model.JavaInfo; import org.eclipse.wb.gef.core.policies.ILayoutRequestValidator; import org.eclipse.wb.gef.core.requests.ChangeBoundsRequest; @@ -162,7 +163,7 @@ protected void eraseLayoutTargetFeedback(Request request) { //////////////////////////////////////////////////////////////////////////// private void showCreationFeedback(CreateRequest request) { JavaInfo newInfo = (JavaInfo) request.getNewObject(); - Point location = request.getLocation(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); showFeedback(GefMessages.NonVisualLayoutEditPolicy_newFeedback, newInfo, location); } @@ -171,7 +172,7 @@ private void showPasteFeedback(PasteRequest request) { try { List mementos = (List) request.getMemento(); JavaInfo newInfo = mementos.get(0).create(m_rootInfo); - Point location = request.getLocation(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); showFeedback(GefMessages.NonVisualLayoutEditPolicy_copyFeedback, newInfo, location); } catch (Throwable e) { DesignerPlugin.log(e); @@ -210,7 +211,7 @@ private void showMoveFeedback(ChangeBoundsRequest request) { final JavaInfo info = part.getNonVisualInfo().getJavaInfo(); BeanFigure figure = new BeanFigure(info.getDescription().getIcon()); String text = ExecutionUtils.runObjectLog(() -> info.getVariableSupport().getTitle(), null); - figure.update(text, request.getLocation()); + figure.update(text, PolicyUtils.getAbsoluteLocation(getHost(), request)); // m_moveFeedbackFigures[i] = figure; addFeedback(figure); diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/AbstractCreateRequest.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/AbstractCreateRequest.java index 43fb6bbf1..a293057ea 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/AbstractCreateRequest.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/AbstractCreateRequest.java @@ -13,7 +13,6 @@ package org.eclipse.wb.gef.core.requests; import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Point; import org.eclipse.gef.Request; import org.eclipse.gef.requests.DropRequest; import org.eclipse.gef.requests.LocationRequest; @@ -24,7 +23,6 @@ */ public abstract class AbstractCreateRequest extends LocationRequest implements DropRequest { private Dimension m_size; - private Point m_location; //////////////////////////////////////////////////////////////////////////// // @@ -38,40 +36,6 @@ public AbstractCreateRequest(Object type) { super(type); } - /** - * @deprecated Use {@link #getRelativeLocation()} instead. - */ - @Override - @Deprecated - public Point getLocation() { - return super.getLocation(); - } - - /** - * @deprecated Use {@link #setRelativeLocation(Point)} instead. - */ - @Override - @Deprecated - public void setLocation(Point p) { - super.setLocation(p); - } - - /** - * @return The current mouse location. - */ - public Point getRelativeLocation() { - return m_location; - } - - /** - * Sets the current location. - * - * @param p The current location. - */ - public void setRelativeLocation(Point location) { - m_location = location; - } - //////////////////////////////////////////////////////////////////////////// // // Access @@ -102,7 +66,6 @@ public void setSize(Dimension size) { public void copyStateFrom(Request _source) { if (_source instanceof AbstractCreateRequest source) { setLocation(source.getLocation()); - setRelativeLocation(source.getRelativeLocation()); setSize(source.getSize()); } } diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/ChangeBoundsRequest.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/ChangeBoundsRequest.java index 27e2bae04..bc57a7dd1 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/ChangeBoundsRequest.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/ChangeBoundsRequest.java @@ -27,7 +27,6 @@ */ public class ChangeBoundsRequest extends GroupRequest implements DropRequest { private static final int SNAP_TO = 16; - private Point m_mouseAbsoluteLocation; private Point m_mouseLocation; private Point m_moveDelta = new Point(); private Dimension m_resizeDelta = new Dimension(); @@ -57,38 +56,18 @@ public ChangeBoundsRequest(Object type) { // Access // //////////////////////////////////////////////////////////////////////////// - /** - * Returns the absolute location of the mouse pointer. - * - * @deprecated Use {@link #getRelativeLocation()} instead. - */ - @Override - @Deprecated - public Point getLocation() { - return m_mouseAbsoluteLocation; - } - - /** - * Sets the absolute location of the mouse pointer. - * - * @deprecated Use {@link #setRelativeLocation(Point)} instead. - */ - @Deprecated - public void setLocation(Point absoluteLocation) { - m_mouseAbsoluteLocation = absoluteLocation; - } - /** * Returns the location of the mouse pointer. */ - public Point getRelativeLocation() { + @Override + public final Point getLocation() { return m_mouseLocation; } /** * Sets the location of the mouse pointer. */ - public void setRelativeLocation(Point location) { + public void setLocation(Point location) { m_mouseLocation = location; } diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/AbstractCreationTool.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/AbstractCreationTool.java index a8dab38e1..d6effb3f6 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/AbstractCreationTool.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/AbstractCreationTool.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2025 Google, Inc. and others. + * Copyright (c) 2011, 2026 Google, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -15,8 +15,6 @@ import org.eclipse.wb.gef.core.requests.AbstractCreateRequest; import org.eclipse.wb.internal.gef.core.SharedCursors; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.Request; import org.eclipse.swt.SWT; @@ -43,13 +41,11 @@ public AbstractCreationTool() { // //////////////////////////////////////////////////////////////////////////// @Override - @SuppressWarnings("deprecation") protected boolean handleButtonDown(int button) { if (button == 1) { if (m_state == STATE_INITIAL) { m_state = STATE_DRAG; - ((AbstractCreateRequest) getTargetRequest()).setRelativeLocation(getLocation()); - ((AbstractCreateRequest) getTargetRequest()).setLocation(getAbsoluteLocation()); + ((AbstractCreateRequest) getTargetRequest()).setLocation(getLocation()); lockTargetEditPart(getTargetEditPart()); } } else { @@ -115,20 +111,15 @@ protected boolean handleDragInProgress() { * Sets the location (and size if the user is performing size-on-drop) of the request. */ @Override - @SuppressWarnings("deprecation") protected void updateTargetRequest() { super.updateTargetRequest(); AbstractCreateRequest request = (AbstractCreateRequest) getTargetRequest(); if (m_state == STATE_DRAG_IN_PROGRESS) { - Point start = getAbsoluteStartLocation(); - Rectangle bounds = new Rectangle(start, getDragMoveDelta()); - request.setRelativeLocation(getStartLocation()); - request.setLocation(bounds.getLocation()); - request.setSize(bounds.getSize()); + request.setLocation(getStartLocation()); + request.setSize(getDragMoveDelta()); } else { request.setSize(null); - request.setRelativeLocation(getLocation()); - request.setLocation(getAbsoluteLocation()); + request.setLocation(getLocation()); } } diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java index 00ed47a13..e38b0483c 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java @@ -204,14 +204,12 @@ protected Request createTargetRequest() { * location and type. */ @Override - @SuppressWarnings("deprecation") protected void updateTargetRequest() { super.updateTargetRequest(); ChangeBoundsRequest request = (ChangeBoundsRequest) getTargetRequest(); request.setEditParts(getOperationSet()); request.setMoveDelta(new Point(getDragMoveDelta())); - request.setLocation(getAbsoluteLocation()); - request.setRelativeLocation(getLocation()); + request.setLocation(getLocation()); } @Override diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/graphical/tools/ResizeTracker.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/graphical/tools/ResizeTracker.java index 74b714f59..c234a6024 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/graphical/tools/ResizeTracker.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/graphical/tools/ResizeTracker.java @@ -261,8 +261,7 @@ private void updateRequest() { // set request data getRequest().setMoveDelta(corner); getRequest().setSizeDelta(resize); - getRequest().setLocation(getAbsoluteLocation()); - getRequest().setRelativeLocation(getLocation()); + getRequest().setLocation(getLocation()); } /** diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/PolicyUtils.java b/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/PolicyUtils.java index e6cc7b2b4..8e0dca7bd 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/PolicyUtils.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/PolicyUtils.java @@ -37,6 +37,7 @@ import org.eclipse.gef.LayerConstants; import org.eclipse.gef.editparts.LayerManager; import org.eclipse.gef.editpolicies.GraphicalEditPolicy; +import org.eclipse.gef.requests.DropRequest; import java.lang.reflect.Method; import java.util.Objects; @@ -171,6 +172,17 @@ public static Rectangle getAbsoluteBounds(GraphicalEditPart editPart) { return bounds; } + /** + * @return absolute mouse coordinates of given {@link DropRequest}. + * @since 1.24 + */ + public static Point getAbsoluteLocation(GraphicalEditPart editPart, DropRequest request) { + GraphicalEditPart contents = (GraphicalEditPart) editPart.getViewer().getContents(); + Point location = request.getLocation().getCopy(); + contents.getFigure().translateToRelative(location); + return location; + } + //////////////////////////////////////////////////////////////////////////// // // Geometry utilities diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/layout/generic/AbstractColumnSelectionEditPolicy.java b/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/layout/generic/AbstractColumnSelectionEditPolicy.java index 72e36d929..4aaad3acd 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/layout/generic/AbstractColumnSelectionEditPolicy.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/core/gef/policy/layout/generic/AbstractColumnSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.command.EditCommand; import org.eclipse.wb.core.gef.figure.TextFeedback; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.core.model.IObjectInfo; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.RectangleFigure; @@ -164,7 +165,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { m_resizeFeedback.setBounds(bounds); // update text feedback m_textFeedback.setText(Integer.toString(bounds.width - 2)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } private void eraseResizeFeedback(ChangeBoundsRequest request) { diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/policy/layout/absolute/AbsoluteBasedLayoutEditPolicy.java b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/policy/layout/absolute/AbsoluteBasedLayoutEditPolicy.java index 6099dc9ba..8e25c7a15 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/policy/layout/absolute/AbsoluteBasedLayoutEditPolicy.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/policy/layout/absolute/AbsoluteBasedLayoutEditPolicy.java @@ -436,7 +436,7 @@ private void showMoveFeedback(ChangeBoundsRequest request) { } addFeedback(m_moveFeedback); // Case 42313 - Point moveLocation = isKeyboardMoving() ? moveDelta : request.getLocation(); + Point moveLocation = isKeyboardMoving() ? moveDelta : PolicyUtils.getAbsoluteLocation(getHost(), request); // do drag placementsSupport.drag( moveLocation, @@ -535,7 +535,7 @@ public void showResizeFeedback(ChangeBoundsRequest request) { // do drag Dimension sizeDelta = request.getSizeDelta(); Point moveLocation = - isKeyboardMoving ? new Point(sizeDelta.width, sizeDelta.height) : request.getLocation(); + isKeyboardMoving ? new Point(sizeDelta.width, sizeDelta.height) : PolicyUtils.getAbsoluteLocation(getHost(), request); // do drag getPlacementsSupport().drag( moveLocation, @@ -565,7 +565,7 @@ public void showResizeFeedback(ChangeBoundsRequest request) { // update text feedback if (m_textFeedback != null) { m_textFeedback.setText(getSizeHintString(getHost(), widgetBounds.width, widgetBounds.height)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } } @@ -614,7 +614,7 @@ private void showCreationFeedback(CreateRequest request) { removeFeedback(m_createFeedback); m_createFeedback = null; } - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); translateAbsoluteToModel(location); IAbstractComponentInfo newWidget = (IAbstractComponentInfo) request.getNewObject(); Image image = newWidget.getImage(); @@ -723,7 +723,7 @@ private void showPasteFeedback(final PasteRequest request) { m_createFeedback = null; } // - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); translateAbsoluteToModel(location); // Rectangle widgetBounds; @@ -783,7 +783,7 @@ private void showPasteFeedback(final PasteRequest request) { } } placementsSupport.drag( - request.getLocation(), + PolicyUtils.getAbsoluteLocation(getHost(), request), List.copyOf(pastedModels), widgetBounds, List.of(relativeBounds)); diff --git a/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupLayoutEditPolicy2.java b/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupLayoutEditPolicy2.java index 8a1d9d616..f1d94775a 100644 --- a/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupLayoutEditPolicy2.java +++ b/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupLayoutEditPolicy2.java @@ -166,7 +166,7 @@ private void showCreationFeedback(CreateRequest request) { } m_feedbacksDrawer.removeFeedbacks(); // prepare - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); translateAbsoluteToModel(location); AbstractComponentInfo newWidget = (AbstractComponentInfo) request.getNewObject(); Image image = newWidget.getImage(); @@ -247,12 +247,12 @@ private void showAddFeedback(ChangeBoundsRequest request) { layoutComponents[j++] = m_layout.createLayoutComponent(model); } // the position of the mouse inside the dragging rectangle - Point hotSpot = request.getLocation().getCopy(); + Point hotSpot = PolicyUtils.getAbsoluteLocation(getHost(), request); PolicyUtils.translateAbsoluteToModel((GraphicalEditPart) firstEditPart.getParent(), hotSpot); hotSpot.performTranslate(request.getMoveDelta().getNegated()); hotSpot.performTranslate(-offsetX, -offsetY); // current mouse position in model coordinates - Point topLeft = request.getLocation().getCopy(); + Point topLeft = PolicyUtils.getAbsoluteLocation(getHost(), request); translateAbsoluteToModel(topLeft); { // start re-parenting @@ -305,7 +305,7 @@ private void showMoveFeedback(ChangeBoundsRequest request) { return; } // prepare - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); m_feedbacksDrawer.removeFeedbacks(); LayoutDesigner layoutDesigner = m_layout.getLayoutDesigner(); // start dragging @@ -383,7 +383,7 @@ private void showPasteFeedback(PasteRequest request) { List pastedModels = new ArrayList<>(mementos.size()); // prepare request.setObjects(pastedModels); - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); LayoutDesigner layoutDesigner = m_layout.getLayoutDesigner(); translateAbsoluteToModel(location); try { diff --git a/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupSelectionEditPolicy2.java b/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupSelectionEditPolicy2.java index d8e1a5e54..be7993000 100644 --- a/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupSelectionEditPolicy2.java +++ b/org.eclipse.wb.layout.group/src/org/eclipse/wb/internal/layout/group/gef/GroupSelectionEditPolicy2.java @@ -208,7 +208,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { hideAlignmentFigures(); // prepare int direction = request.getResizeDirection(); - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); PolicyUtils.translateAbsoluteToModel(this, location); LayoutDesigner layoutDesigner = m_layout.getLayoutDesigner(); AbstractComponentInfo hostModel = (AbstractComponentInfo) getHostModel(); diff --git a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/forms/layout/ColumnLayoutSelectionEditPolicy.java b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/forms/layout/ColumnLayoutSelectionEditPolicy.java index fe09541db..4fed9a9f6 100644 --- a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/forms/layout/ColumnLayoutSelectionEditPolicy.java +++ b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/forms/layout/ColumnLayoutSelectionEditPolicy.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2025 Google, Inc. and others. + * Copyright (c) 2011, 2026 Google, Inc. and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -162,7 +162,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { m_resizeFeedback.setBounds(bounds); // update text feedback m_textFeedback.setText(Integer.toString(bounds.width) + " x " + Integer.toString(bounds.height)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } private void eraseResizeFeedback(ChangeBoundsRequest request) { diff --git a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/SashFormSelectionEditPolicy.java b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/SashFormSelectionEditPolicy.java index 41ded6e62..80965f906 100644 --- a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/SashFormSelectionEditPolicy.java +++ b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/SashFormSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.command.EditCommand; import org.eclipse.wb.core.gef.figure.TextFeedback; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.RectangleFigure; import org.eclipse.wb.gef.core.requests.ChangeBoundsRequest; @@ -175,7 +176,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { // update text feedback int size = m_composite.isHorizontal() ? bounds.width : bounds.height; m_textFeedback.setText(Integer.toString(size - 2)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } /** diff --git a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/TreeTreeColumnSelectionEditPolicy.java b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/TreeTreeColumnSelectionEditPolicy.java index c8cf85842..38f6c96ab 100644 --- a/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/TreeTreeColumnSelectionEditPolicy.java +++ b/org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/widgets/TreeTreeColumnSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.command.EditCommand; import org.eclipse.wb.core.gef.figure.TextFeedback; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.RectangleFigure; import org.eclipse.wb.gef.core.requests.ChangeBoundsRequest; @@ -154,7 +155,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { m_resizeFeedback.setBounds(bounds); // update text feedback m_textFeedback.setText(Integer.toString(bounds.width - 2)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } private void eraseResizeFeedback(ChangeBoundsRequest request) { diff --git a/org.eclipse.wb.swing.FormLayout/src/org/eclipse/wb/internal/swing/FormLayout/gef/header/selection/DimensionSelectionEditPolicy.java b/org.eclipse.wb.swing.FormLayout/src/org/eclipse/wb/internal/swing/FormLayout/gef/header/selection/DimensionSelectionEditPolicy.java index 90270b849..b4727fa89 100644 --- a/org.eclipse.wb.swing.FormLayout/src/org/eclipse/wb/internal/swing/FormLayout/gef/header/selection/DimensionSelectionEditPolicy.java +++ b/org.eclipse.wb.swing.FormLayout/src/org/eclipse/wb/internal/swing/FormLayout/gef/header/selection/DimensionSelectionEditPolicy.java @@ -192,7 +192,7 @@ public void showSourceFeedback(Request request) { } // set feedback bounds { - Point mouseLocation = changeBoundsRequest.getRelativeLocation().getCopy(); + Point mouseLocation = changeBoundsRequest.getLocation().getCopy(); Point feedbackLocation = getTextFeedbackLocation(mouseLocation); feedbackLayer.translateToRelative(feedbackLocation); m_feedback.setLocation(feedbackLocation); diff --git a/org.eclipse.wb.swing.MigLayout/src/org/eclipse/wb/internal/swing/MigLayout/gef/header/selection/DimensionSelectionEditPolicy.java b/org.eclipse.wb.swing.MigLayout/src/org/eclipse/wb/internal/swing/MigLayout/gef/header/selection/DimensionSelectionEditPolicy.java index 318f64a47..8d64d1cea 100644 --- a/org.eclipse.wb.swing.MigLayout/src/org/eclipse/wb/internal/swing/MigLayout/gef/header/selection/DimensionSelectionEditPolicy.java +++ b/org.eclipse.wb.swing.MigLayout/src/org/eclipse/wb/internal/swing/MigLayout/gef/header/selection/DimensionSelectionEditPolicy.java @@ -199,7 +199,7 @@ public void showSourceFeedback(Request request) { } // set feedback bounds { - Point mouseLocation = changeBoundsRequest.getRelativeLocation().getCopy(); + Point mouseLocation = changeBoundsRequest.getLocation().getCopy(); Point feedbackLocation = getTextFeedbackLocation(mouseLocation); feedbackLayer.translateToRelative(feedbackLocation); m_feedback.setLocation(feedbackLocation); diff --git a/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/component/box/StrutSelectionEditPolicy.java b/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/component/box/StrutSelectionEditPolicy.java index 5355574a7..63012f581 100644 --- a/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/component/box/StrutSelectionEditPolicy.java +++ b/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/component/box/StrutSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.command.EditCommand; import org.eclipse.wb.core.gef.figure.TextFeedback; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.RectangleFigure; import org.eclipse.wb.gef.core.requests.ChangeBoundsRequest; @@ -159,7 +160,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { { String tooltip = getTooltip(bounds.width - 2, bounds.height - 2); m_textFeedback.setText(tooltip); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } } diff --git a/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/layout/gbl/header/selection/DimensionSelectionEditPolicy.java b/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/layout/gbl/header/selection/DimensionSelectionEditPolicy.java index 3251a4ef6..ab026cd82 100644 --- a/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/layout/gbl/header/selection/DimensionSelectionEditPolicy.java +++ b/org.eclipse.wb.swing/src/org/eclipse/wb/internal/swing/gef/policy/layout/gbl/header/selection/DimensionSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.figure.TextFeedback; import org.eclipse.wb.core.gef.header.AbstractHeaderSelectionEditPolicy; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.core.gef.policy.layout.grid.IGridInfo; import org.eclipse.wb.draw2d.Figure; import org.eclipse.wb.draw2d.FigureUtils; @@ -172,7 +173,7 @@ public void showSourceFeedback(Request request) { } // set feedback bounds { - Point mouseLocation = changeBoundsRequest.getLocation().getCopy(); + Point mouseLocation = PolicyUtils.getAbsoluteLocation(getHost(), changeBoundsRequest); Point feedbackLocation = getTextFeedbackLocation(mouseLocation); FigureUtils.translateAbsoluteToFigure(feedbackLayer, feedbackLocation); m_feedback.setLocation(feedbackLocation); diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/TableTableColumnSelectionEditPolicy.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/TableTableColumnSelectionEditPolicy.java index 4ebbacee9..09732e2e6 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/TableTableColumnSelectionEditPolicy.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/TableTableColumnSelectionEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.command.EditCommand; import org.eclipse.wb.core.gef.figure.TextFeedback; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.RectangleFigure; import org.eclipse.wb.gef.core.requests.ChangeBoundsRequest; @@ -158,7 +159,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { m_resizeFeedback.setBounds(bounds); // update text feedback m_textFeedback.setText(Integer.toString(bounds.width - 2)); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } private void eraseResizeFeedback(ChangeBoundsRequest request) { diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/RowLayoutSelectionEditPolicy.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/RowLayoutSelectionEditPolicy.java index 468b01066..75d5ca6f6 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/RowLayoutSelectionEditPolicy.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/RowLayoutSelectionEditPolicy.java @@ -164,7 +164,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) { m_resizeFeedback.setBounds(bounds); // update text feedback m_textFeedback.setText(bounds.width + " x " + bounds.height); - m_textFeedback.setLocation(request.getLocation().getTranslated(10, 10)); + m_textFeedback.setLocation(PolicyUtils.getAbsoluteLocation(getHost(), request).translate(10, 10)); } private void eraseResizeFeedback(ChangeBoundsRequest request) { diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormHeaderLayoutEditPolicy.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormHeaderLayoutEditPolicy.java index 32872db56..28ef95e3b 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormHeaderLayoutEditPolicy.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormHeaderLayoutEditPolicy.java @@ -14,6 +14,7 @@ import org.eclipse.wb.core.gef.figure.TextFeedback; import org.eclipse.wb.core.gef.header.AbstractHeaderLayoutEditPolicy; +import org.eclipse.wb.core.gef.policy.PolicyUtils; import org.eclipse.wb.draw2d.FigureUtils; import org.eclipse.wb.draw2d.Layer; import org.eclipse.wb.gef.core.IEditPartViewer; @@ -146,7 +147,7 @@ protected void showLayoutTargetFeedback(Request request) { layer.add(feedback); } int figureSize = t.t(getHostFigure().getSize()).height; - Point location = t.t(((ChangeBoundsRequest) request).getLocation().getCopy()); + Point location = t.t(PolicyUtils.getAbsoluteLocation(getHost(), (ChangeBoundsRequest) request)); Point position = t.t(new Point(location.x - figureSize / 2, 0)); feedback.setLocation(position); feedback.setSize(figureSize, figureSize); @@ -200,7 +201,7 @@ public void execute() { // //////////////////////////////////////////////////////////////////////////// private int calcPercent(ChangeBoundsRequest request) { - Point location = request.getLocation().getCopy(); + Point location = PolicyUtils.getAbsoluteLocation(getHost(), request); return calcPercent(location); } diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicy2.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicy2.java index 2f445a33a..6bce858e9 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicy2.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicy2.java @@ -310,7 +310,7 @@ private void showMoveFeedback(ChangeBoundsRequest request) { } addFeedback(m_moveFeedback); // Case 42313 - Point moveLocation = isKeyboardMoving() ? moveDelta : request.getLocation(); + Point moveLocation = isKeyboardMoving() ? moveDelta : PolicyUtils.getAbsoluteLocation(getHost(), request); // do drag m_snapPoints.processBounds(moveLocation, modelList, widgetBounds, 0); // update move feedback: translate bounds back into feedback coordinates, apply bounds for feedback figure diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicyClassic.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicyClassic.java index ee397d27f..c7ab68e45 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicyClassic.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormLayoutEditPolicyClassic.java @@ -355,7 +355,7 @@ private void showCreateFeedback(CreateRequest request, C newChild) throws Except TextFeedback locationFeedbackX = getTextFeedback(xTextFeedbacks, host, true); TextFeedback locationFeedbackY = getTextFeedback(yTextFeedbacks, host, false); // location and parent dimensions - Point loc = request.getLocation().getCopy(); + Point loc = PolicyUtils.getAbsoluteLocation(getHost(), request); ICompositeInfo composite = layout.getComposite(); Dimension parentSize = composite.getClientArea().getSize(); translateAbsoluteToModel(loc); @@ -483,7 +483,7 @@ private void showPasteFeedback(PasteRequest request) throws Exception { TextFeedback locationFeedbackX = getTextFeedback(xTextFeedbacks, host, true); TextFeedback locationFeedbackY = getTextFeedback(yTextFeedbacks, host, false); // - Point loc = request.getLocation().getCopy(); + Point loc = PolicyUtils.getAbsoluteLocation(getHost(), request); translateAbsoluteToModel(loc); // IFigure moveFeedback = moveFeedbacks.get(getHost()); diff --git a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormSelectionEditPolicyClassic.java b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormSelectionEditPolicyClassic.java index e29a9e24d..6c9c065c3 100644 --- a/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormSelectionEditPolicyClassic.java +++ b/org.eclipse.wb.swt/src/org/eclipse/wb/internal/swt/gef/policy/layout/form/FormSelectionEditPolicyClassic.java @@ -218,7 +218,7 @@ private void showResizeFeedback(ChangeBoundsRequest request) throws Exception { Rectangle bounds = getControlModelBounds(control); bounds.performTranslate(request.getMoveDelta()); bounds.resize(request.getSizeDelta()); - Point requestLocation = request.getLocation(); + Point requestLocation = PolicyUtils.getAbsoluteLocation(getHost(), request); Point location = requestLocation == null ? getControlModelBounds(control).getLocation() @@ -622,7 +622,7 @@ protected Command getResizeCommand(ChangeBoundsRequest request) throws Exception Rectangle bounds = getControlModelBounds(control); bounds.performTranslate(request.getMoveDelta()); bounds.resize(request.getSizeDelta()); - Point requestLocation = request.getLocation(); + Point requestLocation = PolicyUtils.getAbsoluteLocation(getHost(), request); Point location = requestLocation == null ? getControlModelBounds(control).getLocation() diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/tests/DesignerTestCase.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/tests/DesignerTestCase.java index 7c84b614d..3cc399ee3 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/tests/DesignerTestCase.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/tests/DesignerTestCase.java @@ -35,7 +35,6 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; @@ -146,10 +145,11 @@ private void configureFirstTime() { */ private void configureEclipseWindowLocation() { Shell shell = Activator.getShell(); - Point shellLocation = shell.getLocation(); - if (shellLocation.x != 0 || shellLocation.y != 0) { - Rectangle clientArea = Display.getDefault().getPrimaryMonitor().getClientArea(); - shell.setBounds(0, 0, clientArea.width, clientArea.height - 300); + Rectangle shellBounds = shell.getBounds(); + if (shellBounds.width < 600 || shellBounds.height < 800) { + int width = Math.max(600, shellBounds.width); + int height = Math.max(800, shellBounds.height); + shell.setBounds(0, 0, width, height); waitEventLoop(100, 10); } } diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteCreationTool.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteCreationTool.java index 4b13bca20..ed2b8d246 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteCreationTool.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteCreationTool.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2025 Patrick Ziegler and others. + * Copyright (c) 2025, 2026 Patrick Ziegler and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -36,11 +36,25 @@ public AbsoluteCreationTool(ICreationFactory factory) { @Override protected void updateTargetUnderMouse() { + whileScrolled(super::updateTargetUnderMouse); + } + + @Override + protected void showTargetFeedback() { + whileScrolled(super::showTargetFeedback); + } + + @Override + protected void eraseTargetFeedback() { + whileScrolled(super::eraseTargetFeedback); + } + + private void whileScrolled(Runnable r) { Point absoluteLocation = getLocation(); try (AutoScroller scroller = new AutoScroller(getCurrentViewer(), absoluteLocation.x, absoluteLocation.y)) { Point location = scroller.getLocation(); getCurrentInput().setMouseLocation(location.x, location.y); - super.updateTargetUnderMouse(); + r.run(); } finally { getCurrentInput().setMouseLocation(absoluteLocation.x, absoluteLocation.y); }