Add Shell EVT_UPDATE_UI handler for each id

(revert)
self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateContextMenu) without specifing id
triggers EVT_UPDATE_UI frequently.
This commit is contained in:
komoto
2021-07-29 15:57:47 +09:00
parent 5d1b6e0d28
commit fd0560f256

View File

@@ -305,7 +305,7 @@ class Shell(editwindow.EditWindow):
# Assign handler for the context menu
self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateContextMenu)
## self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateContextMenu)
# add the option to not use the stock IDs; otherwise the context menu
# may not work on Mac without adding the proper IDs to the menu bar
@@ -337,6 +337,14 @@ class Shell(editwindow.EditWindow):
self.Bind(wx.EVT_MENU, lambda evt: self.Undo(), id=self.ID_UNDO)
self.Bind(wx.EVT_MENU, lambda evt: self.Redo(), id=self.ID_REDO)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanCut()), id=self.ID_CUT)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanCut()), id=self.ID_CLEAR)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanCopy()), id=self.ID_COPY)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanCopy()), id=frame.ID_COPY_PLUS)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanPaste()), id=self.ID_PASTE)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanPaste()), id=frame.ID_PASTE_PLUS)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanUndo()), id=self.ID_UNDO)
self.Bind(wx.EVT_UPDATE_UI, lambda evt: evt.Enable(self.CanRedo()), id=self.ID_REDO)
# Assign handler for idle time.
self.waiting = False
@@ -1511,18 +1519,18 @@ class Shell(editwindow.EditWindow):
menu = self.GetContextMenu()
self.PopupMenu(menu)
def OnUpdateContextMenu(self, evt):
id = evt.Id
if id in (self.ID_CUT, self.ID_CLEAR):
evt.Enable(self.CanCut())
elif id in (self.ID_COPY, frame.ID_COPY_PLUS):
evt.Enable(self.CanCopy())
elif id in (self.ID_PASTE, frame.ID_PASTE_PLUS):
evt.Enable(self.CanPaste())
elif id == self.ID_UNDO:
evt.Enable(self.CanUndo())
elif id == self.ID_REDO:
evt.Enable(self.CanRedo())
## def OnUpdateContextMenu(self, evt):
## id = evt.Id
## if id in (self.ID_CUT, self.ID_CLEAR):
## evt.Enable(self.CanCut())
## elif id in (self.ID_COPY, frame.ID_COPY_PLUS):
## evt.Enable(self.CanCopy())
## elif id in (self.ID_PASTE, frame.ID_PASTE_PLUS):
## evt.Enable(self.CanPaste())
## elif id == self.ID_UNDO:
## evt.Enable(self.CanUndo())
## elif id == self.ID_REDO:
## evt.Enable(self.CanRedo())