--- np2/macosx/np2.cpp 2003/11/12 19:06:33 1.35 +++ np2/macosx/np2.cpp 2003/12/04 17:12:09 1.42 @@ -46,7 +46,7 @@ // #define OPENING_WAIT 1500 - NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0, 1, 0}; + NP2OSCFG np2oscfg = {"Neko Project IIx", -1, -1, 0, 2, 0, 0, 0, 0, 0, 1, 0}; WindowPtr hWndMain; BOOL np2running; @@ -93,18 +93,19 @@ pascal OSErr OpenAppleEventHandler(const DescType rtype; AEKeyword key; AEDescList dlist; + OSErr err = noErr; if(!AEGetParamDesc(event,keyDirectObject,typeAEList,&dlist)) { AECountItems( &dlist,&ct ); for( i=1;i<=ct;i++ ) { pp=&fsc; if (!AEGetNthPtr( &dlist,i,typeFSS,&key,&rtype,(Ptr)pp,(long)sizeof(FSSpec),&len)) { - setDropFile(fsc, i-1); + err = setDropFile(fsc, i-1); } } AEDisposeDesc( &dlist ); } - return( 0 ); + return(err); } @@ -169,13 +170,11 @@ static void changescreen(BYTE mode) { } if (renewal) { soundmng_stop(); - mouse_running(MOUSE_STOP); scrnmng_destroy(); if (scrnmng_create(mode) == SUCCESS) { scrnmode = mode; } scrndraw_redraw(); - mouse_running(MOUSE_CONT); soundmng_play(); } else { @@ -317,7 +316,7 @@ static void HandleMenuChoice(long wParam break; case IDM_MOUSE: - mouse_running(MOUSE_XOR); + mousemng_toggle(MOUSEPROC_SYSTEM); menu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); break; @@ -339,66 +338,91 @@ static void HandleMenuChoice(long wParam case IDM_KEY: menu_setkey(0); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY1: menu_setkey(1); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY2: menu_setkey(2); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_MOUSEKEY: menu_setkey(3); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_XSHIFT: menu_setxshift(np2cfg.XSHIFT ^ 1); keystat_forcerelease(0x70); + update |= SYS_UPDATECFG; break; case IDM_XCTRL: menu_setxshift(np2cfg.XSHIFT ^ 2); keystat_forcerelease(0x74); + update |= SYS_UPDATECFG; break; case IDM_XGRPH: menu_setxshift(np2cfg.XSHIFT ^ 4); keystat_forcerelease(0x73); + update |= SYS_UPDATECFG; break; - case IDM_F12MOUSE: - menu_setf12copy(0); - mackbd_resetf12(); - update |= SYS_UPDATECFG; + case IDM_F11KANA: + menu_setf11key(0); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; break; - case IDM_F12COPY: - menu_setf12copy(1); - mackbd_resetf12(); - update |= SYS_UPDATECFG; + case IDM_F11STOP: + menu_setf11key(1); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; break; - case IDM_F12STOP: - menu_setf12copy(2); - mackbd_resetf12(); - update |= SYS_UPDATECFG; + case IDM_F11EQU: + menu_setf11key(2); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; break; - case IDM_F12EQU: - menu_setf12copy(3); - mackbd_resetf12(); - update |= SYS_UPDATECFG; + case IDM_F11NFER: + menu_setf11key(3); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; + break; + + case IDM_F12MOUSE: + menu_setf12key(0); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; + break; + + case IDM_F12COPY: + menu_setf12key(1); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; break; case IDM_F12COMMA: - menu_setf12copy(4); - mackbd_resetf12(); - update |= SYS_UPDATECFG; + menu_setf12key(2); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; + break; + + case IDM_F12XFER: + menu_setf12key(3); + mackbd_resetf11f12(); + update |= SYS_UPDATEOSCFG; break; case IDM_BEEPOFF: @@ -545,7 +569,7 @@ static void HandleMenuChoice(long wParam { ICInstance inst; long start, fin; - const char urlStr[] = "http://retropc.net/tk800/np2x/help.html"; + const char urlStr[] = "http://retropc.net/tk800/np2x/help/help.html"; ICStart(&inst, 'SMil'); start = 0; @@ -565,14 +589,15 @@ static void HandleMenuChoice(long wParam static void HandleMouseDown(EventRecord *pevent) { WindowPtr hWnd; - BYTE ret; if (FindWindow(pevent->where, &hWnd) == inMenuBar) { soundmng_stop(); + mousemng_disable(MOUSEPROC_MACUI); HandleMenuChoice(MenuSelect(pevent->where)); + mousemng_enable(MOUSEPROC_MACUI); } else { - ret=mouse_btn(MOUSE_LEFTDOWN); + mousemng_buttonevent(MOUSEMNG_LEFTDOWN); } } @@ -649,6 +674,7 @@ int main(int argc, char *argv[]) { EventRef theEvent; EventTargetRef theTarget; + Rect bounds; #ifdef OPENING_WAIT UINT32 tick; #endif @@ -682,7 +708,8 @@ int main(int argc, char *argv[]) { menu_setframe(np2oscfg.DRAW_SKIP); menu_setkey(0); menu_setxshift(0); - menu_setf12copy(np2oscfg.F12COPY); + menu_setf11key(np2oscfg.F11KEY); + menu_setf12key(np2oscfg.F12KEY); menu_setbeepvol(np2cfg.BEEP_VOL); menu_setsound(np2cfg.SOUND_SW); menu_setmotorflg(np2cfg.MOTOR); @@ -716,8 +743,9 @@ int main(int argc, char *argv[]) { } #if defined(NP2GCC) + mousemng_initialize(); if (np2oscfg.MOUSE_SW) { // ver0.30 - mouse_running(MOUSE_ON); + mousemng_enable(MOUSEPROC_SYSTEM); } #endif #ifdef OPENING_WAIT @@ -730,9 +758,6 @@ int main(int argc, char *argv[]) { flagload(np2resume); } #endif - if (np2oscfg.toolwin) { - toolwin_open(); - } theTarget = GetEventDispatcherTarget(); @@ -801,6 +826,14 @@ int main(int argc, char *argv[]) { } } } + + GetWindowBounds(hWndMain, kWindowGlobalPortRgn, &bounds); + if ((np2oscfg.winx != bounds.left) || (np2oscfg.winy != bounds.top)) { + np2oscfg.winx = bounds.left; + np2oscfg.winy = bounds.top; + sysmng_update(SYS_UPDATEOSCFG); + } + np2running = FALSE; menu_setrecording(true); @@ -824,7 +857,7 @@ int main(int argc, char *argv[]) { hid_clear(); #if defined(NP2GCC) - mouse_running(MOUSE_OFF); + mousemng_disable(MOUSEPROC_SYSTEM); #endif soundmng_deinitialize(); @@ -867,8 +900,6 @@ static pascal OSStatus np2appevent (Even HIPoint delta; EventMouseButton buttonKind; GetEventParameter (event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(EventMouseButton), NULL, &buttonKind); - - BYTE ret; #endif switch (eventClass) @@ -880,7 +911,7 @@ static pascal OSStatus np2appevent (Even if (cmd.commandID == kHICommandAppHelp) { ICInstance inst; long start, fin; - const char urlStr[] = "http://retropc.net/tk800/np2x/help.html"; + const char urlStr[] = "http://retropc.net/tk800/np2x/help/help.html"; ICStart(&inst, 'SMil'); start = 0; @@ -903,12 +934,12 @@ static pascal OSStatus np2appevent (Even { case kEventMouseMoved: GetEventParameter (event, kEventParamMouseDelta, typeHIPoint, NULL, sizeof(HIPoint), NULL, &delta); - mouse_callback(delta); + mousemng_callback(delta); result = noErr; break; case kEventMouseDown: if (buttonKind == kEventMouseButtonSecondary | modif & controlKey) { - ret=mouse_btn(MOUSE_RIGHTDOWN); + mousemng_buttonevent(MOUSEMNG_RIGHTDOWN); } else { HandleMouseDown(&eve); @@ -917,15 +948,15 @@ static pascal OSStatus np2appevent (Even break; case kEventMouseUp: if (buttonKind == kEventMouseButtonSecondary | modif & controlKey) { - ret=mouse_btn(MOUSE_RIGHTUP); + mousemng_buttonevent(MOUSEMNG_RIGHTUP); } else if (buttonKind == kEventMouseButtonTertiary) { - mouse_running(MOUSE_XOR); + mousemng_toggle(MOUSEPROC_SYSTEM); menu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); } else { - ret=mouse_btn(MOUSE_LEFTUP); + mousemng_buttonevent(MOUSEMNG_LEFTUP); } result=noErr; break; @@ -979,7 +1010,9 @@ static pascal OSStatus np2windowevent(Ev if (modif & cmdKey) { EventRecord eve; ConvertEventRefToEventRecord( event,&eve ); + mousemng_disable(MOUSEPROC_MACUI); HandleMenuChoice(MenuEvent(&eve)); + mousemng_enable(MOUSEPROC_MACUI); } else { mackbd_keydown(key); @@ -1102,10 +1135,13 @@ static bool setupMainWindow(void) { } SizeWindow(hWndMain, 640, 400, TRUE); #endif - + if (np2oscfg.winx != -1 && np2oscfg.winy != -1) { + MoveWindow(hWndMain, np2oscfg.winx, np2oscfg.winy, false); + } setUpCarbonEvent(); if (backupwidth) scrnmng_setwidth(0, backupwidth); if (backupheight) scrnmng_setheight(0, backupheight); + SetWindowTitleWithCFString(hWndMain, CFStringCreateWithCString(NULL, np2oscfg.titles, kCFStringEncodingUTF8)); ShowWindow(hWndMain); return(true); } @@ -1113,6 +1149,7 @@ static bool setupMainWindow(void) { static void toggleFullscreen(void) { static Ptr bkfullscreen; static BYTE mouse = 0; + static bool toolwin = false; MenuRef menu = GetMenuRef(IDM_SCREEN); Rect bounds; short w = 640, h = 480; @@ -1123,9 +1160,10 @@ static void toggleFullscreen(void) { GetWindowBounds(hWndMain, kWindowContentRgn, &bounds); backupwidth = bounds.right - bounds.left; backupheight = bounds.bottom - bounds.top; + toolwin = np2oscfg.toolwin; toolwin_close(); DisposeWindow(hWndMain); - BeginFullScreen(&bkfullscreen,0,&w,&h,&hWndMain,NULL,(fullScreenAllowEvents | fullScreenDontChangeMenuBar)); + BeginFullScreen(&bkfullscreen, 0, &w, &h, &hWndMain, NULL, fullScreenAllowEvents); DisableMenuItem(menu, IDM_ROLNORMAL); DisableMenuItem(menu, IDM_ROLLEFT); DisableMenuItem(menu, IDM_ROLRIGHT); @@ -1133,7 +1171,7 @@ static void toggleFullscreen(void) { setUpCarbonEvent(); if (!np2oscfg.MOUSE_SW) { mouse = np2oscfg.MOUSE_SW; - mouse_running(MOUSE_ON); + mousemng_enable(MOUSEPROC_SYSTEM); menu_setmouse(1); } changescreen(scrnmode | SCRNMODE_FULLSCREEN); @@ -1144,14 +1182,14 @@ static void toggleFullscreen(void) { setupMainWindow(); changescreen(scrnmode & (~SCRNMODE_FULLSCREEN)); if (!mouse) { - mouse_running(MOUSE_OFF); + mousemng_disable(MOUSEPROC_SYSTEM); menu_setmouse(0); } EnableMenuItem(menu, IDM_ROLNORMAL); EnableMenuItem(menu, IDM_ROLLEFT); EnableMenuItem(menu, IDM_ROLRIGHT); ShowMenuBar(); - if (np2oscfg.toolwin) { + if (toolwin) { toolwin_open(); } }