]> granicus.if.org Git - python/commitdiff
For submenus remember the parent and parent index, so we can grey out our
authorJack Jansen <jack.jansen@cwi.nl>
Thu, 15 Oct 1998 15:29:16 +0000 (15:29 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Thu, 15 Oct 1998 15:29:16 +0000 (15:29 +0000)
entry if the menu is disabled. This does create a circular reference, so cleanup
becomes more important.

Mac/Lib/FrameWork.py

index 866b8696443de9fc045123758b6ffa29f2f7338e..7d93ccbc09a3957bb41b09153c3fd2382aab97e6 100644 (file)
@@ -518,6 +518,7 @@ class Menu:
                self.id, self.menu = self.bar.addmenu(title, after)
                bar.menus[self.id] = self
                self.items = []
+               self._parent = None
                
        def delete(self):
                self.bar.delmenu(self.id)
@@ -526,6 +527,7 @@ class Menu:
                del self.items
                del self.menu
                del self.id
+               del self._parent
                
        def additem(self, label, shortcut=None, callback=None, kind=None):
                self.menu.AppendMenu('x')               # add a dummy string
@@ -556,6 +558,8 @@ class Menu:
                sub = Menu(self.bar, title, -1)
                item = self.additem(label, '\x1B', None, 'submenu')
                self.menu.SetItemMark(item, sub.id)
+               sub._parent = self
+               sub._parent_item = item
                return sub
        
        def dispatch(self, id, item, window, event):
@@ -587,8 +591,12 @@ class Menu:
        def enable(self, onoff):
                if onoff:
                        self.menu.EnableItem(0)
+                       if self._parent:
+                               self._parent.menu.EnableItem(self._parent_item)
                else:
                        self.menu.DisableItem(0)
+                       if self._parent:
+                               self._parent.menu.DisableItem(self._parent_item)
                if self.bar and self.bar.parent:
                                self.bar.parent.needmenubarredraw = 1