summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--src/controls/ComboBox.qml8
-rw-r--r--src/controls/Styles/Android/plugin.cpp9
-rw-r--r--src/controls/Styles/WinRT/plugin.cpp6
-rw-r--r--src/controls/plugin.cpp9
-rw-r--r--src/dialogs/Private/dialogsprivateplugin.cpp9
-rw-r--r--src/dialogs/plugin.cpp9
-rw-r--r--src/extras/Styles/Flat/flatstyleplugin.cpp11
-rw-r--r--src/widgets/widgetsplugin.cpp9
-rw-r--r--tests/auto/controls/data/tst_combobox.qml55
10 files changed, 66 insertions, 61 deletions
diff --git a/.qmake.conf b/.qmake.conf
index d2b37d1b..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.1
+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.")