The default Page Delete functionality (with enforce_strict_hierarchy true) only deletes 'Children' shown in menus.
The delete process needs to call allChildren() rather than just children() so that all pages in the subtree are deleted and not orphaned.
Steps to reproduce
1. create a Page in the Sitree (called MyPage in this instance)
2. create two sub-pages as child pages to MyPage
3. ensure one of the sub pages has 'Show In Menus?' on, and the other 'Show In Menus?' off
4. delete MyPage
This results in MyPage and one of the sub-pages being deleted only. The second sub-page with Show In Menus off remains, and is subsequently orphaned.
Pull request to follow.