Mercurial > dwindows
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; } |