diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1998-05-06 15:33:09 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1998-05-06 15:33:09 (GMT) |
commit | bb6193c553fca0532f78af80a8f745c305144b87 (patch) | |
tree | 92d57164c834e398cc3017593a844203950fc6d2 | |
parent | e7b6e396fcbcd26b9af5c13ba27fd7c5629628cf (diff) | |
download | cpython-bb6193c553fca0532f78af80a8f745c305144b87.zip cpython-bb6193c553fca0532f78af80a8f745c305144b87.tar.gz cpython-bb6193c553fca0532f78af80a8f745c305144b87.tar.bz2 |
Added a PopupMenu class.
-rw-r--r-- | Mac/Lib/FrameWork.py | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/Mac/Lib/FrameWork.py b/Mac/Lib/FrameWork.py index c002b1f..69378b5 100644 --- a/Mac/Lib/FrameWork.py +++ b/Mac/Lib/FrameWork.py @@ -453,10 +453,11 @@ class MenuBar: if DEBUG: print 'Newmenu', title, id # XXXX m = NewMenu(id, title) m.InsertMenu(after) - if self.parent: - self.parent.needmenubarredraw = 1 - else: - DrawMenuBar() + if after >= 0: + if self.parent: + self.parent.needmenubarredraw = 1 + else: + DrawMenuBar() return id, m def delmenu(self, id): @@ -582,6 +583,27 @@ class Menu: self.menu.EnableItem(0) else: self.menu.DisableItem(0) + +class PopupMenu(Menu): + def __init__(self, bar): + Menu.__init__(self, bar, '(popup)', -1) + + def popup(self, x, y, event, default=1, window=None): + # NOTE that x and y are global coordinates, and they should probably + # be topleft of the button the user clicked (not mouse-coordinates), + # so the popup nicely overlaps. + reply = self.menu.PopUpMenuSelect(x, y, default) + if not reply: + return + id = (reply & 0xffff0000) >> 16 + item = reply & 0xffff + if not window: + wid = Win.FrontWindow() + try: + window = self.bar.parent._windows[wid] + except: + pass # If we can't find the window we pass None + self.dispatch(id, item, window, event) class MenuItem: def __init__(self, menu, title, shortcut=None, callback=None, kind=None): |