| 738 | } |
| 739 | |
| 740 | winid |
| 741 | mac_create_nhwindow(int kind) |
| 742 | { |
| 743 | int i; |
| 744 | NhWindow *aWin; |
| 745 | FontInfo fi; |
| 746 | |
| 747 | if (kind < NHW_BASE || kind > NHW_TEXT) { |
| 748 | error("cre_win: Invalid kind %d.", kind); |
| 749 | return WIN_ERR; |
| 750 | } |
| 751 | |
| 752 | for (i = 0; i < NUM_MACWINDOWS; i++) { |
| 753 | if (!theWindows[i].its_window) |
| 754 | break; |
| 755 | } |
| 756 | if (i >= NUM_MACWINDOWS) { |
| 757 | error("cre_win: Win full; freeing extras"); |
| 758 | for (i = 0; i < NUM_MACWINDOWS; i++) { |
| 759 | if (IsWindowVisible(theWindows[i].its_window) || i == WIN_INVEN |
| 760 | || GetWindowKind(theWindows[i].its_window) |
| 761 | != WIN_BASE_KIND + NHW_MENU |
| 762 | && GetWindowKind(theWindows[i].its_window) |
| 763 | != WIN_BASE_KIND + NHW_TEXT) |
| 764 | continue; |
| 765 | mac_destroy_nhwindow(i); |
| 766 | goto got1; |
| 767 | } |
| 768 | error("cre_win: Out of ids!"); |
| 769 | return WIN_ERR; |
| 770 | } |
| 771 | |
| 772 | got1: |
| 773 | aWin = &theWindows[i]; |
| 774 | aWin->windowTextLen = 0L; |
| 775 | aWin->scrollBar = (ControlHandle) 0; |
| 776 | aWin->menuInfo = 0; |
| 777 | aWin->menuSelected = 0; |
| 778 | aWin->miLen = 0; |
| 779 | aWin->miSize = 0; |
| 780 | aWin->menuChar = 'a'; |
| 781 | |
| 782 | dprintf("cre_win: New kind %d", kind); |
| 783 | |
| 784 | if (kind == NHW_BASE || kind == NHW_MAP || kind == NHW_STATUS) { |
| 785 | short x_sz, x_sz_p, y_sz, y_sz_p; |
| 786 | if (kind != NHW_BASE) { |
| 787 | if (i != tty_create_nhwindow(kind)) { |
| 788 | dprintf("cre_win: error creating kind %d", kind); |
| 789 | } |
| 790 | if (kind == NHW_MAP) { |
| 791 | wins[i]->offy = |
| 792 | 0; /* the message box is in a separate window */ |
| 793 | } |
| 794 | } |
| 795 | aWin->its_window = _mt_window; |
| 796 | get_tty_metrics(aWin->its_window, &x_sz, &y_sz, &x_sz_p, &y_sz_p, |
| 797 | &aWin->font_number, &aWin->font_size, |
no test coverage detected