Example #1
0
void Stage::OnChar(wxKeyEvent &inEvent) {
    if (!ShouldSendEvents()) {
        inEvent.Skip();
    } else if (inEvent.GetKeyCode() == WXK_ESCAPE) {
        // The menu accelerator for StageFrame::OnStopMovies doesn't appear
        // to work in wxWidgets 2.9 (and maybe also 2.8).  If the
        // accelerator doesn't work, we currently receive the escape key
        // event here.  (We tried calling inEvent.Skip and passing this up
        // to a handle on the StageFrame, but the event never arrived,
        // possibly because StageFrame is not configured to receive key
        // events.)
        EndMediaElements();
    } else if (inEvent.GetKeyCode() == WXK_SPACE &&
               inEvent.ControlDown() && !inEvent.AltDown()) {
        inEvent.Skip(); // Always allow toggling into edit mode.
    } else {
        // NOTE - We process character events directed at the Stage here,
        // but the Stage isn't always focused.  Is this really a good idea?
        // Douglas tells me that Director works like this, so at least
        // there's precedent.
        EventDispatcher *dispatcher = GetEventDispatcher();
        if (!dispatcher->DoEventChar(inEvent))
            inEvent.Skip();
    }
}