This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gui] [PATCH] Fixes for PopupMenu


Hello,

I committed the following patch to the java-gui-branch.  It fixes the
PopupMenu.  PopupMenu now shows up and receives mouse and action events.

-David Jee

2004-04-02  David Jee  <djee@redhat.com>

        * gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
        (GtkMenuItemPeer): Only connect signals if this isn't a Menu peer.
        * java/awt/Component.java
        (add): Set the parent of the popup as this component.
        * java/awt/PopupMenu.java
        (addNotify): Create popup menu when peer is null.
        (show): Call addNotify() if peer is null.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c
        (Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_show): Set the button
        argument for gtk_menu_popup() as zero. This causes the popup menu to
        respond to any mouse button.


Index: gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java,v
retrieving revision 1.3.16.1
diff -u -r1.3.16.1 GtkMenuItemPeer.java
--- gnu/java/awt/peer/gtk/GtkMenuItemPeer.java	26 Mar 2004 17:06:34 -0000	1.3.16.1
+++ gnu/java/awt/peer/gtk/GtkMenuItemPeer.java	2 Apr 2004 15:27:57 -0000
@@ -59,7 +59,7 @@
     setEnabled (item.isEnabled ());
     setParent (item);
 
-    if (item.getParent() instanceof Menu)
+    if (item.getParent() instanceof Menu && ! (item instanceof Menu))
       connectSignals();
   }
 
Index: java/awt/Component.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Component.java,v
retrieving revision 1.37.2.6
diff -u -r1.37.2.6 Component.java
--- java/awt/Component.java	27 Feb 2004 19:43:40 -0000	1.37.2.6
+++ java/awt/Component.java	2 Apr 2004 15:28:00 -0000
@@ -3816,6 +3816,12 @@
     if (popups == null)
       popups = new Vector();
     popups.add(popup);
+
+    if (popup.parent != null)
+      popup.parent.remove(popup);
+    popup.parent = this;
+    if (peer != null)
+      popup.addNotify();
   }
 
   /**
Index: java/awt/PopupMenu.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/PopupMenu.java,v
retrieving revision 1.7
diff -u -r1.7 PopupMenu.java
--- java/awt/PopupMenu.java	5 Jun 2003 19:58:39 -0000	1.7
+++ java/awt/PopupMenu.java	2 Apr 2004 15:28:00 -0000
@@ -105,7 +105,7 @@
 public void
 addNotify()
 {
-  if (peer != null)
+  if (peer == null)
     peer = getToolkit ().createPopupMenu (this);
   super.addNotify ();
 }
@@ -123,6 +123,8 @@
 public void
 show(Component component, int x, int y)
 {
+  if (getPeer() == null)
+    this.addNotify();
   PopupMenuPeer pmp = (PopupMenuPeer)getPeer();
   if (pmp != null)
     {
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c,v
retrieving revision 1.2
diff -u -r1.2 gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c	8 Oct 2003 15:49:33 -0000	1.2
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c	2 Apr 2004 15:28:01 -0000
@@ -72,7 +72,7 @@
   
   gdk_threads_enter ();
   gtk_menu_popup (GTK_MENU (GTK_MENU_ITEM (ptr)->submenu), 
-		  NULL, NULL, menu_pos, p, 3, time);
+		  NULL, NULL, menu_pos, p, 0, time);
   gdk_threads_leave ();
 
   g_free (p);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]