diff options
author | Dani Megert | 2008-09-30 11:10:56 +0000 |
---|---|---|
committer | Dani Megert | 2008-09-30 11:10:56 +0000 |
commit | b01a80ff1eb977580b1d648df4dbf2186bc46750 (patch) | |
tree | 24b1b1c18c7103312332ab068b8968979b1f2630 /org.eclipse.jface.text/projection | |
parent | a2f8878c9fc9e40861614b8090a7f030a597a3a2 (diff) | |
download | eclipse.platform.text-b01a80ff1eb977580b1d648df4dbf2186bc46750.tar.gz eclipse.platform.text-b01a80ff1eb977580b1d648df4dbf2186bc46750.tar.xz eclipse.platform.text-b01a80ff1eb977580b1d648df4dbf2186bc46750.zip |
Fixed bug 67500 (try 2): [projection] Unfolding code eats first keystrokev20080930-0800
Diffstat (limited to 'org.eclipse.jface.text/projection')
-rw-r--r-- | org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java b/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java index 1dde1e6c2ac..01a22662ce8 100644 --- a/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java +++ b/org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java @@ -1282,15 +1282,18 @@ public class ProjectionViewer extends SourceViewer implements ITextViewerExtensi * @see org.eclipse.jface.text.TextViewer#handleVerifyEvent(org.eclipse.swt.events.VerifyEvent) */ protected void handleVerifyEvent(VerifyEvent e) { + Point selection= getSelectedRange(); IRegion modelRange= event2ModelRange(e); if (exposeModelRange(modelRange)) { e.doit= false; - IRegion widgetRange= modelRange2WidgetRange(modelRange); try { - int insertOffset= widgetRange.getOffset(); - getDocument().replace(insertOffset, widgetRange.getLength(), e.text); - int caretOffset= insertOffset + e.text.length(); - getTextWidget().setSelection(caretOffset, caretOffset); + if (selection.y == 0 && e.text.length() <= 1 && modelRange.getLength() == 1) { + selection.y= 1; + if (selection.x - 1 == modelRange.getOffset()) + selection.x--; + } + getDocument().replace(selection.x, selection.y, e.text); + setSelectedRange(selection.x + e.text.length(), 0); } catch (BadLocationException e1) { // ignore as nothing bad happens (no log at this level) } |