diff options
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/awt/Frame.java | 19 | ||||
-rw-r--r-- | libjava/java/awt/Menu.java | 9 | ||||
-rw-r--r-- | libjava/java/awt/MenuBar.java | 6 |
3 files changed, 30 insertions, 4 deletions
diff --git a/libjava/java/awt/Frame.java b/libjava/java/awt/Frame.java index 7a5c9d9..c92585a 100644 --- a/libjava/java/awt/Frame.java +++ b/libjava/java/awt/Frame.java @@ -341,11 +341,15 @@ getMenuBar() public synchronized void setMenuBar(MenuBar menuBar) { - this.menuBar = menuBar; - if (menuBar != null) - menuBar.addNotify(); if (peer != null) + { + if (this.menuBar != null) + this.menuBar.removeNotify(); + if (menuBar != null) + menuBar.addNotify(); ((FramePeer) peer).setMenuBar(menuBar); + } + this.menuBar = menuBar; } /*************************************************************************/ @@ -432,11 +436,20 @@ remove(MenuComponent menu) public void addNotify() { + if (menuBar != null) + menuBar.addNotify(); if (peer == null) peer = getToolkit ().createFrame (this); super.addNotify(); } +public void removeNotify() +{ + if (menuBar != null) + menuBar.removeNotify(); + super.removeNotify(); +} + /*************************************************************************/ /** diff --git a/libjava/java/awt/Menu.java b/libjava/java/awt/Menu.java index 6fdc22c..7fb2931 100644 --- a/libjava/java/awt/Menu.java +++ b/libjava/java/awt/Menu.java @@ -41,6 +41,7 @@ package java.awt; import java.awt.peer.MenuPeer; import java.io.Serializable; import java.util.Vector; +import java.util.Enumeration; /** * This class represents a pull down or tear off menu in Java's AWT. @@ -379,7 +380,7 @@ addNotify() { if (peer == null) peer = getToolkit().createMenu(this); - java.util.Enumeration e = items.elements(); + Enumeration e = items.elements(); while (e.hasMoreElements()) { MenuItem mi = (MenuItem)e.nextElement(); @@ -396,6 +397,12 @@ addNotify() public void removeNotify() { + Enumeration e = items.elements(); + while (e.hasMoreElements()) + { + MenuItem mi = (MenuItem) e.nextElement(); + mi.removeNotify(); + } super.removeNotify(); } diff --git a/libjava/java/awt/MenuBar.java b/libjava/java/awt/MenuBar.java index af5c912..9c278df 100644 --- a/libjava/java/awt/MenuBar.java +++ b/libjava/java/awt/MenuBar.java @@ -279,6 +279,12 @@ addNotify() public void removeNotify() { + Enumeration e = menus.elements(); + while (e.hasMoreElements()) + { + Menu mi = (Menu) e.nextElement(); + mi.removeNotify(); + } super.removeNotify(); } |