[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();
 		}
 	}