diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/controls/ComboBox.qml | 8 | ||||
-rw-r--r-- | src/controls/Styles/Android/plugin.cpp | 9 | ||||
-rw-r--r-- | src/controls/Styles/WinRT/plugin.cpp | 6 | ||||
-rw-r--r-- | src/controls/plugin.cpp | 9 | ||||
-rw-r--r-- | src/dialogs/Private/dialogsprivateplugin.cpp | 9 | ||||
-rw-r--r-- | src/dialogs/plugin.cpp | 9 | ||||
-rw-r--r-- | src/extras/Styles/Flat/flatstyleplugin.cpp | 11 | ||||
-rw-r--r-- | src/widgets/widgetsplugin.cpp | 9 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_combobox.qml | 55 |
10 files changed, 66 insertions, 61 deletions
diff --git a/.qmake.conf b/.qmake.conf index 63a29783..600fb8ae 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -2,4 +2,4 @@ load(qt_build_config) CONFIG += warning_clean android|ios|qnx|isEmpty(QT.widgets.name): CONFIG += no_desktop -MODULE_VERSION = 5.11.0 +MODULE_VERSION = 5.12.0 diff --git a/src/controls/ComboBox.qml b/src/controls/ComboBox.qml index bd42f76b..7c6f93a7 100644 --- a/src/controls/ComboBox.qml +++ b/src/controls/ComboBox.qml @@ -570,11 +570,16 @@ Control { onSelectedTextChanged: popup.currentText = selectedText property string selectedText + property int triggeredIndex: -1 on__SelectedIndexChanged: { if (__selectedIndex === -1) popup.currentText = "" else updateSelectedText() + if (triggeredIndex >= 0 && triggeredIndex == __selectedIndex) { + activated(currentIndex) + triggeredIndex = -1 + } } property string textRole: "" @@ -611,8 +616,7 @@ Control { modelData : ((popup.modelIsArray ? modelData[popup.textRole] : model[popup.textRole]) || '') onTriggered: { - if (index !== currentIndex) - activated(index) + popup.triggeredIndex = index comboBox.editText = text } onTextChanged: if (index === currentIndex) popup.updateSelectedText(); diff --git a/src/controls/Styles/Android/plugin.cpp b/src/controls/Styles/Android/plugin.cpp index 646fff36..7a09bb9c 100644 --- a/src/controls/Styles/Android/plugin.cpp +++ b/src/controls/Styles/Android/plugin.cpp @@ -44,13 +44,6 @@ #include "qquickandroidstyle_p.h" #include "qquickandroid9patch_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Controls_Styles_Android); -#endif -} - QT_BEGIN_NAMESPACE class QtQuickControls1AndroidStylePlugin: public QQmlExtensionPlugin @@ -59,7 +52,7 @@ class QtQuickControls1AndroidStylePlugin: public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuickControls1AndroidStylePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuickControls1AndroidStylePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } void registerTypes(const char *uri); }; diff --git a/src/controls/Styles/WinRT/plugin.cpp b/src/controls/Styles/WinRT/plugin.cpp index e6d0adfe..b205d75e 100644 --- a/src/controls/Styles/WinRT/plugin.cpp +++ b/src/controls/Styles/WinRT/plugin.cpp @@ -39,15 +39,9 @@ #include <QtCore/qglobal.h> -static void initResources() -{ - Q_INIT_RESOURCE(WinRT); -} - extern "C" { Q_DECL_EXPORT bool qt_quick_controls_style_init() { - initResources(); return true; } diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp index 4eb6c466..8aca0c49 100644 --- a/src/controls/plugin.cpp +++ b/src/controls/plugin.cpp @@ -71,14 +71,6 @@ #include <QtCore/qlocale.h> #endif -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Controls); - Q_INIT_RESOURCE(qmake_controls); -#endif -} - QT_BEGIN_NAMESPACE static const struct { @@ -129,7 +121,6 @@ static const struct { QtQuickControls1Plugin::QtQuickControls1Plugin(QObject *parent) : QQmlExtensionPlugin(parent) { - initResources(); } void QtQuickControls1Plugin::registerTypes(const char *uri) diff --git a/src/dialogs/Private/dialogsprivateplugin.cpp b/src/dialogs/Private/dialogsprivateplugin.cpp index ba8aabe3..a785f388 100644 --- a/src/dialogs/Private/dialogsprivateplugin.cpp +++ b/src/dialogs/Private/dialogsprivateplugin.cpp @@ -42,13 +42,6 @@ #include "qquickwritingsystemlistmodel_p.h" #include "qquickfontlistmodel_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Dialogs_Private); -#endif -} - QT_BEGIN_NAMESPACE class QtQuick2DialogsPrivatePlugin : public QQmlExtensionPlugin @@ -57,7 +50,7 @@ class QtQuick2DialogsPrivatePlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2DialogsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuick2DialogsPrivatePlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.Dialogs.Private")); diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index 1e6740d5..8c10786f 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -62,13 +62,6 @@ Q_LOGGING_CATEGORY(lcRegistration, "qt.quick.dialogs.registration") -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_Dialogs); -#endif -} - QT_BEGIN_NAMESPACE /*! @@ -92,7 +85,7 @@ class QtQuick2DialogsPlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2DialogsPlugin() : QQmlExtensionPlugin(), m_useResources(true) { initResources(); } + QtQuick2DialogsPlugin() : QQmlExtensionPlugin(), m_useResources(true) { } virtual void initializeEngine(QQmlEngine *engine, const char * uri) { qCDebug(lcRegistration) << uri << m_decorationComponentUrl; diff --git a/src/extras/Styles/Flat/flatstyleplugin.cpp b/src/extras/Styles/Flat/flatstyleplugin.cpp index 5d88134b..7efbb16c 100644 --- a/src/extras/Styles/Flat/flatstyleplugin.cpp +++ b/src/extras/Styles/Flat/flatstyleplugin.cpp @@ -45,20 +45,10 @@ #include "qquicktexthandle.h" -static void initResources() -{ -#ifndef QT_STATIC - Q_INIT_RESOURCE(flatstyle); -#else - Q_INIT_RESOURCE(qmake_QtQuick_Controls_Styles_Flat); -#endif -} - #ifndef QT_STATIC extern "C" { Q_DECL_EXPORT bool qt_quick_controls_style_init() { - initResources(); return true; } @@ -74,7 +64,6 @@ QT_BEGIN_NAMESPACE QtQuickExtrasStylesPlugin::QtQuickExtrasStylesPlugin(QObject *parent) : QQmlExtensionPlugin(parent) { - initResources(); } void QtQuickExtrasStylesPlugin::registerTypes(const char *uri) diff --git a/src/widgets/widgetsplugin.cpp b/src/widgets/widgetsplugin.cpp index 65233756..3289e6fd 100644 --- a/src/widgets/widgetsplugin.cpp +++ b/src/widgets/widgetsplugin.cpp @@ -44,13 +44,6 @@ #include "qquickqcolordialog_p.h" #include "qquickqfontdialog_p.h" -static void initResources() -{ -#ifdef QT_STATIC - Q_INIT_RESOURCE(qmake_QtQuick_PrivateWidgets); -#endif -} - QT_BEGIN_NAMESPACE /*! @@ -78,7 +71,7 @@ class QtQuick2PrivateWidgetsPlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - QtQuick2PrivateWidgetsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } + QtQuick2PrivateWidgetsPlugin(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtQuick.PrivateWidgets")); diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml index 415d3ad3..bccac8d2 100644 --- a/tests/auto/controls/data/tst_combobox.qml +++ b/tests/auto/controls/data/tst_combobox.qml @@ -418,6 +418,61 @@ TestCase { comboBox.destroy() } + function test_activated_index_QTBUG_43050(){ + if (Qt.platform.os === "osx") + skip("When the menu pops up on OS X, it does not return and the test fails after time out") + if (Qt.platform.os === "windows") + skip("Test randomly fails under Windows") + + var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.2; \ + ComboBox { \ + property bool indexWasUpdated: false; \ + model: 4; \ + onActivated: indexWasUpdated = (index === currentIndex); \ + }', container, ''); + var menuIndex = getMenuIndex(comboBox) + verify(menuIndex !== -1) + comboBox.forceActiveFocus() + verify(!comboBox.data[menuIndex].__popupVisible) + keyPress(Qt.Key_Space) + verify(comboBox.data[menuIndex].__popupVisible) + + waitForRendering(comboBox) + keyPress(Qt.Key_Down) + keyPress(Qt.Key_Down) + verify(!comboBox.indexWasUpdated) + keyPress(Qt.Key_Enter) + verify(comboBox.indexWasUpdated) + + comboBox.destroy() + } + + function test_update_index_on_activated_QTBUG_51113(){ + if (Qt.platform.os === "osx") + skip("When the menu pops up on OS X, it does not return and the test fails after time out") + if (Qt.platform.os === "windows") + skip("Test randomly fails under Windows") + + var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.2; \ + ComboBox { \ + model: 4; \ + onActivated: if (index == 1) currentIndex = 3; \ + }', container, ''); + var menuIndex = getMenuIndex(comboBox) + verify(menuIndex !== -1) + comboBox.forceActiveFocus() + verify(!comboBox.data[menuIndex].__popupVisible) + keyPress(Qt.Key_Space) + verify(comboBox.data[menuIndex].__popupVisible) + + waitForRendering(comboBox) + keyPress(Qt.Key_Down) + keyPress(Qt.Key_Enter) + compare(comboBox.currentIndex, 3) + + comboBox.destroy() + } + function test_activeFocusOnTab() { if (Qt.styleHints.tabFocusBehavior != Qt.TabFocusAllControls) skip("This function doesn't support NOT iterating all.") |