diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2001-12-10 16:08:14 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2001-12-10 16:08:14 (GMT) |
commit | 52306a780b622ebe90f80f4296a311e6921d274a (patch) | |
tree | 538e894de73b43030e55857898749f68b05f4451 /Mac | |
parent | 1d961f5e5fb80a77f37cbdf350e78718e6131abf (diff) | |
download | cpython-52306a780b622ebe90f80f4296a311e6921d274a.zip cpython-52306a780b622ebe90f80f4296a311e6921d274a.tar.gz cpython-52306a780b622ebe90f80f4296a311e6921d274a.tar.bz2 |
The new menu initialization code would also add the SIOUX menus if a (frozen) Python program had installed its own menubar previously. We now guard against this, with a bit of a hack: FrameWork uses the same Menu ID as Sioux, and the init code checks that the text in the menu is "About SIOUX" before replacing it.
Diffstat (limited to 'Mac')
-rw-r--r-- | Mac/Lib/FrameWork.py | 14 | ||||
-rw-r--r-- | Mac/Python/macglue.c | 7 |
2 files changed, 15 insertions, 6 deletions
diff --git a/Mac/Lib/FrameWork.py b/Mac/Lib/FrameWork.py index b2b61db..c0692b9 100644 --- a/Mac/Lib/FrameWork.py +++ b/Mac/Lib/FrameWork.py @@ -30,6 +30,9 @@ import EasyDialogs kHighLevelEvent = 23 # Don't know what header file this should come from SCROLLBARWIDTH = 16 # Again, not a clue... +# Trick to forestall a set of SIOUX menus being added to our menubar +SIOUX_APPLEMENU_ID=32000 + # Map event 'what' field to strings eventname = {} @@ -442,8 +445,9 @@ class MenuBar: self.bar = None self.menus = None - def addmenu(self, title, after = 0): - id = self.getnextid() + def addmenu(self, title, after = 0, id=None): + if id == None: + id = self.getnextid() if DEBUG: print 'Newmenu', title, id # XXXX m = NewMenu(id, title) m.InsertMenu(after) @@ -507,9 +511,9 @@ class MenuBar: class Menu: "One menu." - def __init__(self, bar, title, after=0): + def __init__(self, bar, title, after=0, id=None): self.bar = bar - self.id, self.menu = self.bar.addmenu(title, after) + self.id, self.menu = self.bar.addmenu(title, after, id) bar.menus[self.id] = self self.items = [] self._parent = None @@ -675,7 +679,7 @@ def SubMenu(menu, label, title=''): class AppleMenu(Menu): def __init__(self, bar, abouttext="About me...", aboutcallback=None): - Menu.__init__(self, bar, "\024") + Menu.__init__(self, bar, "\024", id=SIOUX_APPLEMENU_ID) if MacOS.runtimemodel == 'ppc': self.additem(abouttext, None, aboutcallback) self.addseparator() diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c index f9c9aff..e66ab83 100644 --- a/Mac/Python/macglue.c +++ b/Mac/Python/macglue.c @@ -720,6 +720,8 @@ void PyMac_InitMenuBar() { MenuHandle applemenu; + Str255 about_text; + static unsigned char about_sioux[] = "\pAbout SIOUX"; if ( sioux_mbar ) return; #if 0 @@ -737,7 +739,10 @@ PyMac_InitMenuBar() return; } if ( (applemenu=GetMenuHandle(SIOUX_APPLEID)) == NULL ) return; - SetMenuItemText(applemenu, 1, "\pAbout Python..."); + GetMenuItemText(applemenu, 1, about_text); + if ( about_text[0] == about_sioux[0] && + strncmp((char *)(about_text+1), (char *)(about_sioux+1), about_text[0]) == 0 ) + SetMenuItemText(applemenu, 1, "\pAbout Python..."); } /* |