bool GlobalShortcutRegistry::eventFilter(QObject *obj, QEvent *event)
{
    Q_ASSERT(m_filteredWindow);
    Q_ASSERT(obj == static_cast<QObject*>(m_filteredWindow.data()));

    if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {

        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);

        // Make a copy of the event so we don't alter it for passing on.
        QKeyEvent eCopy(keyEvent->type(),
                        keyEvent->key(),
                        keyEvent->modifiers(),
                        keyEvent->text(),
                        keyEvent->isAutoRepeat(),
                        keyEvent->count());
        eCopy.ignore();

        int seq = keyEvent->key() + keyEvent->modifiers();
        if (m_shortcuts.contains(seq)) {
            const auto shortcuts = m_shortcuts.value(seq);
            Q_FOREACH(const auto &shortcut, shortcuts) {
                if (shortcut) {
                    qApp->sendEvent(shortcut, &eCopy);
                }
            }
        }

        return eCopy.isAccepted();
    }
Пример #2
0
void Scene::Draw() {
	if ( background != 0 ) background->Draw( 0, 0 );

	// Make a copy
	vector<Entity*> eCopy( entityV );
	// Sort on the ZDepth of the entites
	sort( eCopy.begin(), eCopy.end(), &Scene::EntitySort );
	// Draw these puppies
	for ( unsigned int i = 0; i < eCopy.size(); i++ ) {
		eCopy.at( i )->Draw();
	}
}