diff options
author | Andrey Loskutov | 2019-03-02 23:07:19 +0000 |
---|---|---|
committer | Andrey Loskutov | 2019-03-02 23:07:19 +0000 |
commit | 8a10c51f5ccf762ed179f8295036f4541dc434be (patch) | |
tree | d4396b0a291bf243c710200e5463c000a598fd39 | |
parent | 9556dbecc9e4f06d10116d894956ec668b05b12b (diff) | |
download | eclipse.platform.text-8a10c51f5ccf762ed179f8295036f4541dc434be.tar.gz eclipse.platform.text-8a10c51f5ccf762ed179f8295036f4541dc434be.tar.xz eclipse.platform.text-8a10c51f5ccf762ed179f8295036f4541dc434be.zip |
Bug 541415 - fixed testsI20190303-0600
Change-Id: I3d5a21c60e5f83ddcb061a781a1f2b558d3f11b3
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r-- | org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java | 37 | ||||
-rw-r--r-- | org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/util/DisplayHelper.java | 2 |
2 files changed, 24 insertions, 15 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java index 7f9710eb779..2138f499439 100644 --- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/TextViewerTest.java @@ -25,7 +25,10 @@ import org.junit.Test; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.jface.text.Document; @@ -117,23 +120,29 @@ public class TextViewerTest { } public static void ctrlEnd(ITextViewer viewer) { - Event ctrlEndEvent = new Event(); - ctrlEndEvent.widget = viewer.getTextWidget(); - ctrlEndEvent.keyCode = SWT.END; - ctrlEndEvent.stateMask = SWT.MOD1; - ctrlEndEvent.type = SWT.KeyDown; - ctrlEndEvent.doit = true; - viewer.getTextWidget().getDisplay().post(ctrlEndEvent); + postKeyEvent(viewer.getTextWidget(), SWT.END, SWT.CTRL, SWT.KeyDown); } public static void ctrlHome(ITextViewer viewer) { - Event ctrlHomeEvent = new Event(); - ctrlHomeEvent.widget = viewer.getTextWidget(); - ctrlHomeEvent.keyCode = SWT.HOME; - ctrlHomeEvent.stateMask = SWT.MOD1; - ctrlHomeEvent.type = SWT.KeyDown; - ctrlHomeEvent.doit = true; - viewer.getTextWidget().getDisplay().post(ctrlHomeEvent); + postKeyEvent(viewer.getTextWidget(), SWT.HOME, SWT.CTRL, SWT.KeyDown); + } + + private static void postKeyEvent(Control widget, int keyCode, int stateMask, int type) { + Display display= widget.getDisplay(); + widget.setFocus(); + DisplayHelper.driveEventQueue(display); + Event event = new Event(); + event.widget = widget; + event.keyCode = keyCode; + event.stateMask = stateMask; + event.type = type; + event.doit = true; + // display.post(event) seem not always work, see bug 541415 + Listener[] listeners= widget.getListeners(type); + for (Listener listener : listeners) { + listener.handleEvent(event); + } + DisplayHelper.driveEventQueue(display); } diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/util/DisplayHelper.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/util/DisplayHelper.java index 221e77fe96e..695f56c107e 100644 --- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/util/DisplayHelper.java +++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/util/DisplayHelper.java @@ -121,7 +121,7 @@ public abstract class DisplayHelper { * @return if <code>display.readAndDispatch</code> returned * <code>true</code> at least once */ - private static boolean driveEventQueue(Display display) { + public static boolean driveEventQueue(Display display) { boolean events= false; while (display.readAndDispatch()) { events= true; |