X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/1185e3c5eaf5a0ac405e14939e7ee818914e0701..375c9b4d4c8b128dfd09125f4b61f6a00d8af104:/osx.m diff --git a/osx.m b/osx.m index 337748d..7b6789d 100644 --- a/osx.m +++ b/osx.m @@ -383,7 +383,7 @@ struct frontend { - (void)keyDown:(NSEvent *)ev; - (void)activateTimer; - (void)deactivateTimer; -- (void)setStatusLine:(NSString *)text; +- (void)setStatusLine:(char *)text; @end @implementation MyImageView @@ -470,7 +470,8 @@ struct frontend { frame.origin.y = 0; frame.origin.x = 0; - midend_size(me, &w, &h); + w = h = INT_MAX; + midend_size(me, &w, &h, FALSE); frame.size.width = w; frame.size.height = h; @@ -501,7 +502,8 @@ struct frontend { * initWithGame: simply call that one and pass it NULL. */ midend_new_game(me); - midend_size(me, &w, &h); + w = h = INT_MAX; + midend_size(me, &w, &h, FALSE); rect.size.width = w; rect.size.height = h; @@ -589,22 +591,34 @@ struct frontend { * function key codes. */ if (c >= 0x80) { + int mods = FALSE; switch (c) { case NSUpArrowFunctionKey: c = CURSOR_UP; + mods = TRUE; break; case NSDownArrowFunctionKey: c = CURSOR_DOWN; + mods = TRUE; break; case NSLeftArrowFunctionKey: c = CURSOR_LEFT; + mods = TRUE; break; case NSRightArrowFunctionKey: c = CURSOR_RIGHT; + mods = TRUE; break; default: continue; } + + if (mods) { + if ([ev modifierFlags] & NSShiftKeyMask) + c |= MOD_SHFT; + if ([ev modifierFlags] & NSControlKeyMask) + c |= MOD_CTRL; + } } if (c >= '0' && c <= '9' && ([ev modifierFlags] & NSNumericPadKeyMask)) @@ -651,7 +665,7 @@ struct frontend { } - (void)restartGame:(id)sender { - [self processButton:'r' x:-1 y:-1]; + midend_restart_game(me); } - (void)undoMove:(id)sender { @@ -759,7 +773,8 @@ struct frontend { NSSize size = {0,0}; int w, h; - midend_size(me, &w, &h); + w = h = INT_MAX; + midend_size(me, &w, &h, FALSE); size.width = w; size.height = h; @@ -1119,9 +1134,11 @@ struct frontend { [self sheetEndWithStatus:NO]; } -- (void)setStatusLine:(NSString *)text +- (void)setStatusLine:(char *)text { - [[status cell] setTitle:text]; + char *rewritten = midend_rewrite_statusbar(me, text); + [[status cell] setTitle:[NSString stringWithCString:rewritten]]; + sfree(rewritten); } @end @@ -1255,7 +1272,7 @@ void activate_timer(frontend *fe) void status_bar(frontend *fe, char *text) { - [fe->window setStatusLine:[NSString stringWithCString:text]]; + [fe->window setStatusLine:text]; } /* ----------------------------------------------------------------------