| 1741 | } |
| 1742 | |
| 1743 | static void do_delete_items (AbstractMenuItem &parent, Action *action) |
| 1744 | { |
| 1745 | for (std::list<AbstractMenuItem>::iterator l = parent.children.begin (); l != parent.children.end (); ) { |
| 1746 | std::list<AbstractMenuItem>::iterator ll = l; |
| 1747 | ++ll; |
| 1748 | if (l->action () == action) { |
| 1749 | parent.children.erase (l); |
| 1750 | } else { |
| 1751 | do_delete_items (*l, action); |
| 1752 | if (l->remove_on_empty () && l->children.empty ()) { |
| 1753 | parent.children.erase (l); |
| 1754 | } |
| 1755 | } |
| 1756 | l = ll; |
| 1757 | } |
| 1758 | } |
| 1759 | |
| 1760 | void |
| 1761 | AbstractMenu::delete_items (Action *action) |