| 1936 | } |
| 1937 | |
| 1938 | void |
| 1939 | mac_add_menu(winid win, int glyph, const anything *any, CHAR_P menuChar, |
| 1940 | CHAR_P groupAcc, int attr, const char *inStr, unsigned int itemflags) |
| 1941 | { |
| 1942 | #if defined(__SC__) || defined(__MRC__) |
| 1943 | #pragma unused(glyph) |
| 1944 | #endif |
| 1945 | NhWindow *aWin = &theWindows[win]; |
| 1946 | const char *str; |
| 1947 | char locStr[4 + BUFSZ]; |
| 1948 | MacMHMenuItem *item; |
| 1949 | int preselected = ((itemflags & MENU_ITEMFLAGS_SELECTED) != 0); |
| 1950 | |
| 1951 | if (!inStr) |
| 1952 | return; |
| 1953 | |
| 1954 | if (any->a_void != 0) { |
| 1955 | #define kMenuSizeBump 26 |
| 1956 | if (!aWin->miSize) { |
| 1957 | aWin->menuInfo = (MacMHMenuItem **) NewHandle( |
| 1958 | sizeof(MacMHMenuItem) * kMenuSizeBump); |
| 1959 | if (!aWin->menuInfo) { |
| 1960 | error("Can't alloc menu handle"); |
| 1961 | return; |
| 1962 | } |
| 1963 | aWin->menuSelected = |
| 1964 | (short **) NewHandle(sizeof(short) * kMenuSizeBump); |
| 1965 | if (!aWin->menuSelected) { |
| 1966 | error("Can't alloc menu select handle"); |
| 1967 | return; |
| 1968 | } |
| 1969 | aWin->miSize = kMenuSizeBump; |
| 1970 | } |
| 1971 | |
| 1972 | if (aWin->miLen >= aWin->miSize) { |
| 1973 | SetHandleSize((Handle) aWin->menuInfo, |
| 1974 | sizeof(MacMHMenuItem) |
| 1975 | * (aWin->miLen + kMenuSizeBump)); |
| 1976 | if (MemError()) { |
| 1977 | error("Can't resize menu handle"); |
| 1978 | return; |
| 1979 | } |
| 1980 | SetHandleSize((Handle) aWin->menuSelected, |
| 1981 | sizeof(short) * (aWin->miLen + kMenuSizeBump)); |
| 1982 | if (MemError()) { |
| 1983 | error("Can't resize menu select handle"); |
| 1984 | return; |
| 1985 | } |
| 1986 | aWin->miSize += kMenuSizeBump; |
| 1987 | } |
| 1988 | |
| 1989 | if (menuChar == 0) { |
| 1990 | if (('a' <= aWin->menuChar && aWin->menuChar <= 'z') |
| 1991 | || ('A' <= aWin->menuChar && aWin->menuChar <= 'Z')) { |
| 1992 | menuChar = aWin->menuChar++; |
| 1993 | if (menuChar == 'z') |
| 1994 | aWin->menuChar = 'A'; |
| 1995 | } |