void Keyboard::processEvent( const InputEvent& event ) { if( event.deviceType != InputDeviceType::Keyboard ) return; const KeyEvent& keyEvent = static_cast<const KeyEvent&>(event); switch(keyEvent.eventType) { case KeyboardEventType::KeyPressed: { keyPressed(keyEvent); break; } case KeyboardEventType::KeyReleased: { keyReleased(keyEvent); break; } case KeyboardEventType::KeyText: { onKeyText(keyEvent); break; } } }
bool UIWidget::propagateOnKeyText(const std::string& keyText) { // do a backup of children list, because it may change while looping it UIWidgetList children; for(const UIWidgetPtr& child : m_children) { // events on hidden or disabled widgets are discarded if(!child->isExplicitlyEnabled() || !child->isExplicitlyVisible()) continue; // key events go only to containers or focused child if(child->isFocused()) children.push_back(child); } for(const UIWidgetPtr& child : children) { if(child->propagateOnKeyText(keyText)) return true; } return onKeyText(keyText); }