From 85f3b29c93fbb6a78e9c68a11a2523fc0e346d7e Mon Sep 17 00:00:00 2001
From: fnasser <fnasser@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 16 Jan 2004 22:30:11 +0000
Subject: [PATCH]         * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
 (pre_event_handler):         Discard GDK_ENTER_NOTIFY related to ungrabs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75999 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog                             |  5 +++++
 .../gnu_java_awt_peer_gtk_GtkEvents.c         | 21 ++++++++++++-------
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index c1083e80c877..f181820539b6 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-16  Fernando Nasser  <fnasser@redhat.com>
+
+	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler):
+	Discard GDK_ENTER_NOTIFY related to ungrabs.
+
 2004-01-16  Fernando Nasser  <fnasser@redhat.com>
 
 	* java/awt/EventQueue.java (pop): Prevent breaking the chain if pop
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
index 42f45b4ea0d4..6004847c369a 100644
--- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
+++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
@@ -960,16 +960,21 @@ pre_event_handler (GtkWidget *widget, GdkEvent *event, jobject peer)
 	}
       break;
     case GDK_ENTER_NOTIFY:
-      (*gdk_env)->CallVoidMethod (gdk_env, peer, postMouseEventID,
-				  AWT_MOUSE_ENTERED, 
-				  (jlong)event->crossing.time,
-				  state_to_awt_mods (event->crossing.state), 
-				  (jint)event->crossing.x,
-				  (jint)event->crossing.y, 
-				  0,
-				  JNI_FALSE);
+      /* We are not interested in enter events that are due to
+         grab/ungrab and not to actually crossing boundaries */
+      if (event->crossing.mode == GDK_CROSSING_NORMAL)
+        (*gdk_env)->CallVoidMethod (gdk_env, peer, postMouseEventID,
+				    AWT_MOUSE_ENTERED, 
+				    (jlong)event->crossing.time,
+				    state_to_awt_mods (event->crossing.state), 
+				    (jint)event->crossing.x,
+				    (jint)event->crossing.y, 
+				    0,
+				    JNI_FALSE);
       break;
     case GDK_LEAVE_NOTIFY:
+      /* We are not interested in leave events that are due to
+         grab/ungrab and not to actually crossing boundaries */
       if (event->crossing.mode == GDK_CROSSING_NORMAL)
 	(*gdk_env)->CallVoidMethod (gdk_env, peer,
 				    postMouseEventID,
-- 
GitLab