Mercurial > dwindows
comparison ios/dw.m @ 2605:d60a44a27d70
iOS: Implement menu separators using inline UIMenus.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 13 Jul 2021 08:51:22 +0000 |
parents | 4671ac4ad3c6 |
children | 6c30fcc79402 |
comparison
equal
deleted
inserted
replaced
2604:4671ac4ad3c6 | 2605:d60a44a27d70 |
---|---|
1555 -(UIMenu *)menu | 1555 -(UIMenu *)menu |
1556 { | 1556 { |
1557 /* Create or recreate the UIMenu recursively */ | 1557 /* Create or recreate the UIMenu recursively */ |
1558 UIMenu *oldmenu = menu; | 1558 UIMenu *oldmenu = menu; |
1559 NSMutableArray *menuchildren = [[NSMutableArray alloc] init]; | 1559 NSMutableArray *menuchildren = [[NSMutableArray alloc] init]; |
1560 NSMutableArray *section = menuchildren; | |
1560 | 1561 |
1561 for(id child in children) | 1562 for(id child in children) |
1562 { | 1563 { |
1563 if([child isMemberOfClass:[DWMenuItem class]]) | 1564 if([child isMemberOfClass:[DWMenuItem class]]) |
1564 { | 1565 { |
1565 DWMenuItem *menuitem = child; | 1566 DWMenuItem *menuitem = child; |
1566 DWMenu *submenu = [menuitem submenu]; | 1567 DWMenu *submenu = [menuitem submenu]; |
1567 | 1568 |
1568 if(submenu) | 1569 if(submenu) |
1569 [menuchildren addObject:[submenu menu]]; | 1570 [section addObject:[submenu menu]]; |
1570 else | 1571 else |
1571 [menuchildren addObject:child]; | 1572 [section addObject:child]; |
1572 } | 1573 } |
1574 /* NSNull entry tells us to make a new section... | |
1575 * we do this by making a new UIMenu inline. | |
1576 */ | |
1577 else if([child isMemberOfClass:[NSNull class]]) | |
1578 { | |
1579 if(section != menuchildren) | |
1580 { | |
1581 UIMenu *sectionmenu = [UIMenu menuWithTitle:@"" | |
1582 image:nil | |
1583 identifier:nil | |
1584 options:UIMenuOptionsDisplayInline | |
1585 children:section]; | |
1586 [menuchildren addObject:sectionmenu]; | |
1587 } | |
1588 section = [[NSMutableArray alloc] init]; | |
1589 } | |
1590 } | |
1591 if(section != menuchildren) | |
1592 { | |
1593 UIMenu *sectionmenu = [UIMenu menuWithTitle:@"" | |
1594 image:nil | |
1595 identifier:nil | |
1596 options:UIMenuOptionsDisplayInline | |
1597 children:section]; | |
1598 [menuchildren addObject:sectionmenu]; | |
1573 } | 1599 } |
1574 if(title) | 1600 if(title) |
1575 { | 1601 { |
1576 menu = [UIMenu menuWithTitle:title image:[UIImage systemImageNamed:@"ellipsis"] identifier:nil | 1602 menu = [UIMenu menuWithTitle:title image:[UIImage systemImageNamed:@"ellipsis"] identifier:nil |
1577 options:0 children:menuchildren]; | 1603 options:0 children:menuchildren]; |