Mercurial > dwindows
changeset 1808:f3458cd6277c
Added keyboard support to the notebook control on Mac.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 06 Oct 2012 00:33:37 +0000 |
parents | d7447c814f8b |
children | 5efaea897310 |
files | mac/dw.m |
diffstat | 1 files changed, 41 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mac/dw.m Fri Oct 05 20:23:29 2012 +0000 +++ b/mac/dw.m Sat Oct 06 00:33:37 2012 +0000 @@ -1319,6 +1319,47 @@ } _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15); } +-(void)keyDown:(NSEvent *)theEvent +{ + unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; + + if(vk == VK_TAB) + [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]; + else if(vk == VK_LEFT) + { + NSArray *pages = [self tabViewItems]; + DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem]; + NSUInteger index = [pages indexOfObject:page]; + + if(index != NSNotFound) + { + if(index > 0) + [self selectTabViewItem:[pages objectAtIndex:(index-1)]]; + else + [self selectTabViewItem:[pages objectAtIndex:0]]; + + } + } + else if(vk == VK_RIGHT) + { + NSArray *pages = [self tabViewItems]; + DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem]; + NSUInteger index = [pages indexOfObject:page]; + NSUInteger count = [pages count]; + + if(index != NSNotFound) + { + if(index + 1 < count) + [self selectTabViewItem:[pages objectAtIndex:(index+1)]]; + else + [self selectTabViewItem:[pages objectAtIndex:(count-1)]]; + + } + } + [super keyDown:theEvent]; +} +-(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; } +-(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; } -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; } @end