classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: new fix for SwingUtilities.replaceUIActionMap


From: Roman Kennke
Subject: [cp-patches] FYI: new fix for SwingUtilities.replaceUIActionMap
Date: Fri, 03 Jun 2005 13:56:24 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021204

My last patch was not quite correct. Here comes the better one. This makes sure that no loops are build in ActionMap chains.

2005-06-03  Roman Kennke  <address@hidden>

   * javax/swing/SwingUtilites.java
   (replaceUIActionMap): Fixed loop again. Now correctly, I hope.
   * javax/swing/ActionMap.java
   (setParent): Make sure we don't build a loop.
   * javax/swing/plaf/basic/BasicTextUI.java
   (createActionMap): Create ActionMapUIResource instead of
   plain ActionMap.



/Roman

Index: ActionMap.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/ActionMap.java,v
retrieving revision 1.8
diff -u -r1.8 ActionMap.java
--- ActionMap.java      22 Oct 2004 12:43:59 -0000      1.8
+++ ActionMap.java      3 Jun 2005 11:50:19 -0000
@@ -133,7 +133,8 @@
    */
   public void setParent(ActionMap parentMap)
   {
-    parent = parentMap;
+    if (parentMap != this)
+      parent = parentMap;
   }
 
   /**
Index: SwingUtilities.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/SwingUtilities.java,v
retrieving revision 1.29
diff -u -r1.29 SwingUtilities.java
--- SwingUtilities.java 3 Jun 2005 09:59:12 -0000       1.29
+++ SwingUtilities.java 3 Jun 2005 11:50:19 -0000
@@ -1128,9 +1128,13 @@
       component.setActionMap(uiActionMap);
     else
       {
-        while(child.getParent() != null
-              && (child.getParent() instanceof ActionMapUIResource))
-          child = child.getParent();
+        ActionMap parent = child.getParent();
+        while(parent != null)
+          {
+            child = parent;
+            parent = child.getParent();
+          }
+
         if (child != null)
           child.setParent(uiActionMap);
       }
Index: plaf/basic/BasicTextUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/basic/BasicTextUI.java,v
retrieving revision 1.19
diff -u -r1.19 BasicTextUI.java
--- plaf/basic/BasicTextUI.java 22 May 2005 19:49:20 -0000      1.19
+++ plaf/basic/BasicTextUI.java 3 Jun 2005 11:50:20 -0000
@@ -59,6 +59,7 @@
 import javax.swing.UIManager;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
+import javax.swing.plaf.ActionMapUIResource;
 import javax.swing.plaf.TextUI;
 import javax.swing.plaf.UIResource;
 import javax.swing.text.BadLocationException;
@@ -416,7 +417,7 @@
   ActionMap createActionMap()
   {
     Action[] actions = textComponent.getActions();
-    ActionMap am = new ActionMap();
+    ActionMap am = new ActionMapUIResource();
     for (int i = 0; i < actions.length; ++i)
       {
         String name = (String) actions[i].getValue(Action.NAME);

reply via email to

[Prev in Thread] Current Thread [Next in Thread]