| 346 | } |
| 347 | |
| 348 | void DMenu::Close () |
| 349 | { |
| 350 | if (CurrentMenu == nullptr) return; // double closing can happen in the save menu. |
| 351 | assert(CurrentMenu == this); |
| 352 | CurrentMenu = mParentMenu; |
| 353 | |
| 354 | if (CurrentMenu != nullptr) |
| 355 | { |
| 356 | GC::WriteBarrier(CurrentMenu); |
| 357 | IFVIRTUALPTR(CurrentMenu, DMenu, OnReturn) |
| 358 | { |
| 359 | VMValue params[] = { CurrentMenu }; |
| 360 | VMCall(func, params, 1, nullptr, 0); |
| 361 | } |
| 362 | if (transition.StartTransition(this, CurrentMenu, MA_Return)) |
| 363 | { |
| 364 | return; |
| 365 | } |
| 366 | } |
| 367 | |
| 368 | Destroy(); |
| 369 | if (CurrentMenu == nullptr) |
| 370 | { |
| 371 | M_ClearMenus(); |
| 372 | } |
| 373 | } |
| 374 | |
| 375 | |
| 376 | static void Close(DMenu *menu) |
no test coverage detected