| 207 | } |
| 208 | |
| 209 | void Handle::Popup( const BasicUI::WindowPlacement &window, const Point &pos ) |
| 210 | { |
| 211 | wxMenu *const pMenu = mpMenu; |
| 212 | if ( !pMenu ) |
| 213 | return; |
| 214 | |
| 215 | if ( auto pWindow = wxWidgetsWindowPlacement::GetParent( window ) ) { |
| 216 | sHandledEvent = false; |
| 217 | |
| 218 | // Put the menu pointers where the event filter can find them |
| 219 | sMenuStack.push_back( FindDescendants( *pMenu ) ); |
| 220 | auto cleanup = finally( []{ sMenuStack.pop_back(); } ); |
| 221 | |
| 222 | if ( Journal::IsReplaying() ) |
| 223 | ReplayPopup( pMenu ); |
| 224 | else |
| 225 | pWindow->PopupMenu( pMenu, { pos.x, pos.y } ); |
| 226 | |
| 227 | if ( !sHandledEvent ) |
| 228 | // Menu popped but no command was selected. Record that. |
| 229 | Journal::Output( JournalCode ); |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | } |
no test coverage detected