diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java index 38ec34e753..ae822517fb 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java @@ -1301,6 +1301,36 @@ char [] sendIMKeyEvent (int type, GdkEventKey keyEvent, char [] chars) { return chars; } +void sendSelectionEvent (int eventType) { + sendSelectionEvent (eventType, null, false); +} + +void sendSelectionEvent (int eventType, Event event, boolean send) { + if (eventTable == null && !display.filters (eventType)) { + return; + } + if (event == null) event = new Event (); + int /*long*/ ptr = OS.gtk_get_current_event (); + if (ptr != 0) { + GdkEvent gdkEvent = new GdkEvent (); + OS.memmove (gdkEvent, ptr, GdkEvent.sizeof); + switch (gdkEvent.type) { + case OS.GDK_KEY_PRESS: + case OS.GDK_KEY_RELEASE: + case OS.GDK_BUTTON_PRESS: + case OS.GDK_2BUTTON_PRESS: + case OS.GDK_BUTTON_RELEASE: { + int [] state = new int [1]; + OS.gdk_event_get_state (ptr, state); + setInputState (event, state [0]); + break; + } + } + OS.gdk_event_free (ptr); + } + sendEvent (eventType, event, send); +} + /** * Sets the application defined widget data associated * with the receiver to be the argument. The <em>widget |