mirror of
https://github.com/python/cpython.git
synced 2025-09-14 20:56:06 +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)
|
self.id, self.menu = self.bar.addmenu(title, after)
|
||||||
bar.menus[self.id] = self
|
bar.menus[self.id] = self
|
||||||
self.items = []
|
self.items = []
|
||||||
|
self._parent = None
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
self.bar.delmenu(self.id)
|
self.bar.delmenu(self.id)
|
||||||
|
@ -526,6 +527,7 @@ class Menu:
|
||||||
del self.items
|
del self.items
|
||||||
del self.menu
|
del self.menu
|
||||||
del self.id
|
del self.id
|
||||||
|
del self._parent
|
||||||
|
|
||||||
def additem(self, label, shortcut=None, callback=None, kind=None):
|
def additem(self, label, shortcut=None, callback=None, kind=None):
|
||||||
self.menu.AppendMenu('x') # add a dummy string
|
self.menu.AppendMenu('x') # add a dummy string
|
||||||
|
@ -556,6 +558,8 @@ class Menu:
|
||||||
sub = Menu(self.bar, title, -1)
|
sub = Menu(self.bar, title, -1)
|
||||||
item = self.additem(label, '\x1B', None, 'submenu')
|
item = self.additem(label, '\x1B', None, 'submenu')
|
||||||
self.menu.SetItemMark(item, sub.id)
|
self.menu.SetItemMark(item, sub.id)
|
||||||
|
sub._parent = self
|
||||||
|
sub._parent_item = item
|
||||||
return sub
|
return sub
|
||||||
|
|
||||||
def dispatch(self, id, item, window, event):
|
def dispatch(self, id, item, window, event):
|
||||||
|
@ -587,8 +591,12 @@ class Menu:
|
||||||
def enable(self, onoff):
|
def enable(self, onoff):
|
||||||
if onoff:
|
if onoff:
|
||||||
self.menu.EnableItem(0)
|
self.menu.EnableItem(0)
|
||||||
|
if self._parent:
|
||||||
|
self._parent.menu.EnableItem(self._parent_item)
|
||||||
else:
|
else:
|
||||||
self.menu.DisableItem(0)
|
self.menu.DisableItem(0)
|
||||||
|
if self._parent:
|
||||||
|
self._parent.menu.DisableItem(self._parent_item)
|
||||||
if self.bar and self.bar.parent:
|
if self.bar and self.bar.parent:
|
||||||
self.bar.parent.needmenubarredraw = 1
|
self.bar.parent.needmenubarredraw = 1
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue