mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
For submenus remember the parent and parent index, so we can grey out our
entry if the menu is disabled. This does create a circular reference, so cleanup becomes more important.
This commit is contained in:
parent
99d3c48772
commit
341d1fe18e
1 changed files with 8 additions and 0 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue