actions.push_back(PendingAction(Action::POP_SCREEN));
}
+void ScreenStack::clear_screens() {
+ actions.push_back(PendingAction(Action::CLEAR_SCREENS));
+}
+
ScreenStack::ScreenStack() : self_weak(), stack(), actions() {}
void ScreenStack::handle_pending_actions() {
}
#endif // NDEBUG
break;
+ case Action::CLEAR_SCREENS:
+#ifndef NDEBUG
+ if (stack.empty()) {
+ std::cerr << "WARNING: Clearing an empty screen stack!\n";
+ }
+#endif
+ stack.clear();
+ break;
case Action::NOP:
// Intentionally left blank.
break;
class ScreenStack {
private:
- enum Action { PUSH_SCREEN, POP_SCREEN, NOP };
+ enum Action { PUSH_SCREEN, POP_SCREEN, CLEAR_SCREENS, NOP };
struct PendingAction {
PendingAction();
void pop_screen();
+ void clear_screens();
+
private:
ScreenStack();