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];