diff options
Diffstat (limited to 'src/osd/modules/debugger/osx/debugview.m')
-rw-r--r-- | src/osd/modules/debugger/osx/debugview.m | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/osd/modules/debugger/osx/debugview.m b/src/osd/modules/debugger/osx/debugview.m index 2e90e8b0598..dbe0bc271a8 100644 --- a/src/osd/modules/debugger/osx/debugview.m +++ b/src/osd/modules/debugger/osx/debugview.m @@ -358,6 +358,23 @@ static void debugwin_view_update(debug_view &view, void *osdprivate) } +- (IBAction)paste:(id)sender { + NSPasteboard *const board = [NSPasteboard generalPasteboard]; + NSString *const avail = [board availableTypeFromArray:[NSArray arrayWithObject:NSStringPboardType]]; + if (avail == nil) + { + NSBeep(); + return; + } + + NSData *const data = [[board stringForType:avail] dataUsingEncoding:NSASCIIStringEncoding + allowLossyConversion:YES]; + char const *const bytes = (char const *)[data bytes]; + for (NSUInteger i = 0, l = [data length]; i < l; i++) + view->process_char(bytes[i]); +} + + - (void)windowDidBecomeKey:(NSNotification *)notification { NSWindow *win = [notification object]; if ((win == [self window]) && ([win firstResponder] == self) && view->cursor_supported()) @@ -379,6 +396,11 @@ static void debugwin_view_update(debug_view &view, void *osdprivate) action:@selector(copyVisible:) keyEquivalent:@""]; [item setTarget:self]; + + item = [menu addItemWithTitle:@"Paste" + action:@selector(paste:) + keyEquivalent:@""]; + [item setTarget:self]; } @@ -653,4 +675,19 @@ static void debugwin_view_update(debug_view &view, void *osdprivate) } } + +- (BOOL)validateMenuItem:(NSMenuItem *)item { + SEL action = [item action]; + + if (action == @selector(paste:)) + { + NSPasteboard *const board = [NSPasteboard generalPasteboard]; + return [board availableTypeFromArray:[NSArray arrayWithObject:NSStringPboardType]] != nil; + } + else + { + return YES; + } +} + @end |