summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Heidrich <fheidric>2005-06-21 18:26:37 +0000
committerFelipe Heidrich <fheidric>2005-06-21 18:26:37 +0000
commite4d0f725cad583e1a9c9545fd5c976e586012248 (patch)
tree5baf62d1a593a3b015f1bce6f01c91d2c4601708
parent7b11ed217c92e5c8ff93f2339d1feda0f0b753df (diff)
downloadeclipse.platform.swt-e4d0f725cad583e1a9c9545fd5c976e586012248.tar.gz
eclipse.platform.swt-e4d0f725cad583e1a9c9545fd5c976e586012248.tar.xz
eclipse.platform.swt-e4d0f725cad583e1a9c9545fd5c976e586012248.zip
100699
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java10
1 files changed, 7 insertions, 3 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 b4e6535fe2..8a43d58c24 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
@@ -1074,12 +1074,12 @@ boolean sendKeyEvent (int type, GdkEventKey keyEvent) {
char [] sendIMKeyEvent (int type, GdkEventKey keyEvent, char [] chars) {
int index = 0, count = 0, state = 0;
+ int /*long*/ ptr = 0;
if (keyEvent == null) {
- int /*long*/ ptr = OS.gtk_get_current_event ();
+ ptr = OS.gtk_get_current_event ();
if (ptr != 0) {
keyEvent = new GdkEventKey ();
OS.memmove (keyEvent, ptr, GdkEventKey.sizeof);
- OS.gdk_event_free (ptr);
switch (keyEvent.type) {
case OS.GDK_KEY_PRESS:
case OS.GDK_KEY_RELEASE:
@@ -1112,10 +1112,14 @@ char [] sendIMKeyEvent (int type, GdkEventKey keyEvent, char [] chars) {
* events. If this happens, end the processing of
* the key by returning null.
*/
- if (isDisposed ()) return null;
+ if (isDisposed ()) {
+ if (ptr != 0) OS.gdk_event_free (ptr);
+ return null;
+ }
if (event.doit) chars [count++] = chars [index];
index++;
}
+ if (ptr != 0) OS.gdk_event_free (ptr);
if (count == 0) return null;
if (index != count) {
char [] result = new char [count];