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] PR AWT/17156 Implement MenuItemPeer.setEnabled()


Hello,

I committed the following patch to the java-gui-branch.  It fixes PR
AWT/17156 by natively implementing MenuItem peer's setEnabled() method.

-David Jee


2004-08-24  David Jee  <djee@redhat.com>

        PR AWT/17156

        * gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
        (setEnabled): Make it a native method.
        * java/awt/DefaultKeyboardFocusManager.java
        (postProcessKeyEvent): Only post event if the menu item
        is active.
        * java/awt/MenuItem.java:
        Private field 'enabled' should be true by default.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
        (setEnabled): New function.


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.2
diff -u -r1.3.16.2 GtkMenuItemPeer.java
--- gnu/java/awt/peer/gtk/GtkMenuItemPeer.java	2 Apr 2004 15:52:53 -0000	1.3.16.2
+++ gnu/java/awt/peer/gtk/GtkMenuItemPeer.java	24 Aug 2004 17:44:51 -0000
@@ -89,10 +89,8 @@
     setEnabled (true);
   }
 
-  public void setEnabled (boolean b)
-  {
-    // do nothing, for now.
-  }
+  native public void setEnabled (boolean b);
+
   native public void setLabel (String label);
 
   protected void postMenuActionEvent ()
Index: java/awt/DefaultKeyboardFocusManager.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/DefaultKeyboardFocusManager.java,v
retrieving revision 1.1.54.8
diff -u -r1.1.54.8 DefaultKeyboardFocusManager.java
--- java/awt/DefaultKeyboardFocusManager.java	30 Jul 2004 19:48:33 -0000	1.1.54.8
+++ java/awt/DefaultKeyboardFocusManager.java	24 Aug 2004 17:44:51 -0000
@@ -311,7 +311,7 @@
                         MenuItem item = menu.getItem (j);
                         MenuShortcut shortcut = item.getShortcut ();
 
-                        if (shortcut != null)
+                        if (item.isEnabled() && shortcut != null)
                           {
                             // Dispatch a new ActionEvent if:
                             //
Index: java/awt/MenuItem.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/MenuItem.java,v
retrieving revision 1.16.2.2
diff -u -r1.16.2.2 MenuItem.java
--- java/awt/MenuItem.java	12 Jun 2004 00:21:07 -0000	1.16.2.2
+++ java/awt/MenuItem.java	24 Aug 2004 17:44:51 -0000
@@ -77,7 +77,7 @@
 /**
   * @serial Indicates whether or not this menu item is enabled.
   */
-private boolean enabled;
+private boolean enabled = true;
 
 /**
   * @serial The mask of events that are enabled for this menu item.
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c,v
retrieving revision 1.4.8.1
diff -u -r1.4.8.1 gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c	26 Mar 2004 17:06:35 -0000	1.4.8.1
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c	24 Aug 2004 17:44:52 -0000
@@ -86,6 +86,18 @@
   gdk_threads_leave ();
 }
 
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_setEnabled
+  (JNIEnv *env, jobject obj, jboolean enabled)
+{
+  void *ptr;
+
+  ptr = NSA_GET_PTR (env, obj);
+
+  gdk_threads_enter ();
+  gtk_widget_set_sensitive (GTK_WIDGET (ptr), enabled);
+  gdk_threads_leave ();
+}
+
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_setLabel
   (JNIEnv *env, jobject obj, jstring label)
 {

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