summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/osx/debugview.m
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/debugger/osx/debugview.m')
-rw-r--r--src/osd/modules/debugger/osx/debugview.m37
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