diff options
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 22 | ||||
-rw-r--r-- | src/quick/items/qquickitem_p.h | 21 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 16 |
3 files changed, 30 insertions, 29 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 08f60aeb1e..8e2a8c2ddc 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -739,7 +739,12 @@ void QQuickKeyNavigationAttached::setFocusNavigation(QQuickItem *currentItem, co while (currentItem != initialItem && isNextItem); } -const QQuickKeysAttached::SigMap QQuickKeysAttached::sigMap[] = { +struct SigMap { + int key; + const char *sig; +}; + +const SigMap sigMap[] = { { Qt::Key_Left, "leftPressed" }, { Qt::Key_Right, "rightPressed" }, { Qt::Key_Up, "upPressed" }, @@ -771,6 +776,21 @@ const QQuickKeysAttached::SigMap QQuickKeysAttached::sigMap[] = { { 0, 0 } }; +const QByteArray QQuickKeysAttached::keyToSignal(int key) +{ + QByteArray keySignal; + if (key >= Qt::Key_0 && key <= Qt::Key_9) { + keySignal = "digit0Pressed"; + keySignal[5] = '0' + (key - Qt::Key_0); + } else { + int i = 0; + while (sigMap[i].key && sigMap[i].key != key) + ++i; + keySignal = sigMap[i].sig; + } + return keySignal; +} + bool QQuickKeysAttached::isConnected(const char *signalName) { Q_D(QQuickKeysAttached); diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h index c238477d6f..8f6865b40b 100644 --- a/src/quick/items/qquickitem_p.h +++ b/src/quick/items/qquickitem_p.h @@ -819,28 +819,9 @@ private: virtual void inputMethodEvent(QInputMethodEvent *, bool post); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; #endif - const QByteArray keyToSignal(int key) { - QByteArray keySignal; - if (key >= Qt::Key_0 && key <= Qt::Key_9) { - keySignal = "digit0Pressed"; - keySignal[5] = '0' + (key - Qt::Key_0); - } else { - int i = 0; - while (sigMap[i].key && sigMap[i].key != key) - ++i; - keySignal = sigMap[i].sig; - } - return keySignal; - } + const QByteArray keyToSignal(int key); bool isConnected(const char *signalName); - - struct SigMap { - int key; - const char *sig; - }; - - static const SigMap sigMap[]; }; Qt::MouseButtons QQuickItemPrivate::acceptedMouseButtons() const diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index f812840782..1b76dd7390 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -392,12 +392,6 @@ void QQuickWindowPrivate::init(QQuickWindow *c) contentItemPrivate->windowRefCount = 1; contentItemPrivate->flags |= QQuickItem::ItemIsFocusScope; - // In the absence of a focus in event on some platforms assume the window will - // be activated immediately and set focus on the contentItem - // ### Remove when QTBUG-22415 is resolved. - //It is important that this call happens after the contentItem has a window.. - contentItem->setFocus(true); - windowManager = QQuickWindowManager::instance(); context = windowManager->sceneGraphContext(); q->setSurfaceType(QWindow::OpenGLSurface); @@ -676,10 +670,10 @@ void QQuickWindowPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, F } if (!(options & DontChangeFocusProperty)) { -// if (item != contentItem || QGuiApplication::focusWindow() == q) { // QTBUG-22415 + if (item != contentItem || QGuiApplication::focusWindow() == q) { itemPrivate->focus = true; changed << item; -// } + } } if (newActiveFocusItem && contentItem->hasFocus()) { @@ -1161,6 +1155,12 @@ void QQuickWindow::keyPressEvent(QKeyEvent *e) { Q_D(QQuickWindow); +#ifndef QT_NO_SHORTCUT + // Try looking for a Shortcut before sending key events + if (QGuiApplicationPrivate::instance()->shortcutMap.tryShortcutEvent(this, e)) + return; +#endif + if (d->activeFocusItem) sendEvent(d->activeFocusItem, e); } |