comparison mac/dw.m @ 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
comparison
equal deleted inserted replaced
1807:d7447c814f8b 1808:f3458cd6277c
1317 _do_resize(box, size.width, size.height); 1317 _do_resize(box, size.width, size.height);
1318 _handle_resize_events(box); 1318 _handle_resize_events(box);
1319 } 1319 }
1320 _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15); 1320 _event_handler(self, DW_INT_TO_POINTER([page pageid]), 15);
1321 } 1321 }
1322 -(void)keyDown:(NSEvent *)theEvent
1323 {
1324 unichar vk = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
1325
1326 if(vk == VK_TAB)
1327 [self interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
1328 else if(vk == VK_LEFT)
1329 {
1330 NSArray *pages = [self tabViewItems];
1331 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
1332 NSUInteger index = [pages indexOfObject:page];
1333
1334 if(index != NSNotFound)
1335 {
1336 if(index > 0)
1337 [self selectTabViewItem:[pages objectAtIndex:(index-1)]];
1338 else
1339 [self selectTabViewItem:[pages objectAtIndex:0]];
1340
1341 }
1342 }
1343 else if(vk == VK_RIGHT)
1344 {
1345 NSArray *pages = [self tabViewItems];
1346 DWNotebookPage *page = (DWNotebookPage *)[self selectedTabViewItem];
1347 NSUInteger index = [pages indexOfObject:page];
1348 NSUInteger count = [pages count];
1349
1350 if(index != NSNotFound)
1351 {
1352 if(index + 1 < count)
1353 [self selectTabViewItem:[pages objectAtIndex:(index+1)]];
1354 else
1355 [self selectTabViewItem:[pages objectAtIndex:(count-1)]];
1356
1357 }
1358 }
1359 [super keyDown:theEvent];
1360 }
1361 -(void)insertTab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectNextKeyView:self]; }
1362 -(void)insertBacktab:(id)sender { if([[self window] firstResponder] == self) [[self window] selectPreviousKeyView:self]; }
1322 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; } 1363 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); dw_signal_disconnect_by_window(self); [super dealloc]; }
1323 @end 1364 @end
1324 1365
1325 @implementation DWNotebookPage 1366 @implementation DWNotebookPage
1326 -(void *)userdata { return userdata; } 1367 -(void *)userdata { return userdata; }