diff options
Diffstat (limited to 'cocoa/BrowserView.m')
-rw-r--r-- | cocoa/BrowserView.m | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/cocoa/BrowserView.m b/cocoa/BrowserView.m index e2112cf95..d95fc81e7 100644 --- a/cocoa/BrowserView.m +++ b/cocoa/BrowserView.m @@ -23,6 +23,7 @@ #import "desktop/plotters.h" #import "desktop/textinput.h" #import "desktop/options.h" +#import "desktop/selection.h" @implementation BrowserView @@ -275,6 +276,26 @@ static browser_mouse_state cocoa_mouse_flags_for_event( NSEvent *evt ) browser_window_key_press( browser, KEY_NL ); } +- (void) selectAll: (id)sender; +{ + browser_window_key_press( browser, KEY_SELECT_ALL ); +} + +- (void) copy: (id) sender; +{ + browser_window_key_press( browser, KEY_COPY_SELECTION ); +} + +- (void) cut: (id) sender; +{ + browser_window_key_press( browser, KEY_CUT_SELECTION ); +} + +- (void) paste: (id) sender; +{ + browser_window_key_press( browser, KEY_PASTE ); +} + - (void) setFrame: (NSRect)frameRect; { [super setFrame: frameRect]; @@ -337,6 +358,26 @@ static browser_mouse_state cocoa_mouse_flags_for_event( NSEvent *evt ) return YES; } + +- (BOOL) validateUserInterfaceItem: (id) item; +{ + SEL action = [item action]; + + if (action == @selector(copy:)) { + return selection_defined( browser->sel ); + } + + if (action == @selector(cut:)) { + return selection_defined( browser->sel ) && browser->caret_callback != NULL; + } + + if (action == @selector(paste:)) { + return browser->paste_callback != NULL; + } + + return YES; +} + - (BOOL) acceptsFirstResponder; { return YES; |