[167544] Remove custom StyledText feedback
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java
index a425c2e..4bf7131 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/ExtendedEditorDropTargetAdapter.java
@@ -22,11 +22,8 @@
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Caret;
import org.eclipse.ui.IEditorPart;
import org.eclipse.wst.sse.ui.internal.TransferBuilder.TransferProxyForDelayLoading;
@@ -34,8 +31,6 @@
* ExtendedEditorDropTargetAdapter
*/
public class ExtendedEditorDropTargetAdapter extends DropTargetAdapter {
-
- private Point caret = null;
private String[] editorIds;
private int orgOffset = 0;
private IEditorPart targetEditor = null;
@@ -123,7 +118,6 @@
/**
*/
public void dragEnter(DropTargetEvent event) {
- caret = null;
TransferData data = null;
Transfer[] ts = getTransfers();
for (int i = 0; i < ts.length; i++) {
@@ -154,6 +148,7 @@
}
/**
+ * Scroll the visible area as needed
*/
public void dragOver(DropTargetEvent event) {
event.operations &= ~DND.DROP_MOVE;
@@ -174,43 +169,27 @@
st.invokeAction(ST.LINE_DOWN);
}
- // draw insertion point
- int offset = getDropOffset(st, pt);
- if (offset != st.getCaretOffset()) {
- st.setCaretOffset(offset);
- st.setSelection(offset);
+ int offsetUnder = getDropOffset(event);
+ if (offsetUnder > 0 && offsetUnder < st.getCharCount()) {
+ int currentLine = st.getLineAtOffset(offsetUnder);
+ Rectangle rect = st.getTextBounds(offsetUnder, offsetUnder);
+ if (pt.x < rect.width && st.getHorizontalPixel() > 0) {
+ st.invokeAction(ST.COLUMN_PREVIOUS); // left
+ if (offsetUnder != st.getCaretOffset()) {
+ st.setCaretOffset(offsetUnder);
+ st.setSelection(offsetUnder);
+ }
+ st.redraw();
+ }
+ else if (pt.x > st.getClientArea().x && offsetUnder + 2 < st.getCharCount() && currentLine == st.getLineAtOffset(offsetUnder + 2)) { // right
+ st.invokeAction(ST.COLUMN_NEXT); // right
+ if (offsetUnder != st.getCaretOffset()) {
+ st.setCaretOffset(offsetUnder);
+ st.setSelection(offsetUnder);
+ }
+ st.redraw();
+ }
}
-
- Point newCaret = st.getLocationAtOffset(offset);
- if (newCaret.equals(caret))
- return;
-
- Caret ct = st.getCaret();
- Point size = ct.getSize();
-
- GC gc = new GC(st);
- gc.setLineWidth(size.x);
-
- // erase old caret
- if (caret != null) {
- Color originalForeground = gc.getForeground();
- gc.setForeground(st.getBackground());
- gc.drawRectangle(caret.x, caret.y, size.x, size.y);
- gc.setForeground(originalForeground);
- }
-
- st.redraw();
- st.update();
-
- // draw new caret
- caret = newCaret;
- if (ct.getImage() != null)
- gc.drawImage(ct.getImage(), caret.x, caret.y);
- else {
- gc.drawLine(caret.x, caret.y, caret.x, caret.y + size.y);
- }
-
- gc.dispose();
}
}