Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I4b20284eb05b6277c758a1ab5579b803db9a84ca
This commit is contained in:
commit
271fd0924e
|
@ -0,0 +1,51 @@
|
||||||
|
Qt 5.14 introduces many new features and improvements as well as bugfixes
|
||||||
|
over the 5.13.x series. For more details, refer to the online documentation
|
||||||
|
included in this distribution. The documentation is also available online:
|
||||||
|
|
||||||
|
https://doc.qt.io/qt-5/index.html
|
||||||
|
|
||||||
|
The Qt version 5.14 series is binary compatible with the 5.13.x series.
|
||||||
|
Applications compiled for 5.13 will continue to run with 5.14.
|
||||||
|
|
||||||
|
Some of the changes listed in this file include issue tracking numbers
|
||||||
|
corresponding to tasks in the Qt Bug Tracker:
|
||||||
|
|
||||||
|
https://bugreports.qt.io/
|
||||||
|
|
||||||
|
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||||
|
information about a particular change.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Controls *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- ComboBox:
|
||||||
|
* Added valueRole, currentValue and indexOfValue(). These allow
|
||||||
|
convenient management of data for a role associated with the text
|
||||||
|
role.
|
||||||
|
|
||||||
|
- QQuickMenuBar:
|
||||||
|
* Fixed issue with dynamically menu bar items not losing their highlight
|
||||||
|
when their menu was dismissed.
|
||||||
|
|
||||||
|
- QQuickPopup:
|
||||||
|
* Fixed the issue that Popup doesn't respond to CloseOnEscape if the
|
||||||
|
initial value of visible is true
|
||||||
|
|
||||||
|
- [QTBUG-79790] Fixed issue where font changes would result in an extra
|
||||||
|
signal being emitted.
|
||||||
|
- [QTBUG-59330] The documentation now advises against naming root resource
|
||||||
|
directories with the same name as a style name.
|
||||||
|
- [QTBUG-79302] SplitView: fix issue where Repeater items were not created.
|
||||||
|
- [QTBUG-79302] SplitView: fix cursor shape staying as Split*Cursor in some
|
||||||
|
cases.
|
||||||
|
- [QTBUG-79270] Fixed assertion failure when hiding a SplitView with only
|
||||||
|
one item.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Universal *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- TabBar:
|
||||||
|
* Disabled wrapping. The Universal style TabBar now behaves like TabBar
|
||||||
|
from other styles.
|
|
@ -62,6 +62,15 @@ ApplicationWindow {
|
||||||
visible: true
|
visible: true
|
||||||
title: "Qt Quick Controls 2"
|
title: "Qt Quick Controls 2"
|
||||||
|
|
||||||
|
function help()
|
||||||
|
{
|
||||||
|
var url = "https://doc.qt.io/qt-5/"
|
||||||
|
+ (stackView.depth > 1
|
||||||
|
? "qml-qtquick-controls2-" + stackView.currentItem.control + ".html"
|
||||||
|
: "qtquick-controls2-qmlmodule.html");
|
||||||
|
Qt.openUrlExternally(url)
|
||||||
|
}
|
||||||
|
|
||||||
Settings {
|
Settings {
|
||||||
id: settings
|
id: settings
|
||||||
property string style: "Default"
|
property string style: "Default"
|
||||||
|
@ -73,6 +82,11 @@ ApplicationWindow {
|
||||||
onActivated: navigateBackAction.trigger()
|
onActivated: navigateBackAction.trigger()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Shortcut {
|
||||||
|
sequence: StandardKey.HelpContents
|
||||||
|
onActivated: help()
|
||||||
|
}
|
||||||
|
|
||||||
Action {
|
Action {
|
||||||
id: navigateBackAction
|
id: navigateBackAction
|
||||||
icon.name: stackView.depth > 1 ? "back" : "drawer"
|
icon.name: stackView.depth > 1 ? "back" : "drawer"
|
||||||
|
@ -130,6 +144,10 @@ ApplicationWindow {
|
||||||
text: "Settings"
|
text: "Settings"
|
||||||
onTriggered: settingsDialog.open()
|
onTriggered: settingsDialog.open()
|
||||||
}
|
}
|
||||||
|
Action {
|
||||||
|
text: "Help"
|
||||||
|
onTriggered: help()
|
||||||
|
}
|
||||||
Action {
|
Action {
|
||||||
text: "About"
|
text: "About"
|
||||||
onTriggered: aboutDialog.open()
|
onTriggered: aboutDialog.open()
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "busyindicator"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -55,6 +55,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "button"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "checkbox"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "combobox"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
property string control : "delaybutton"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -55,6 +55,8 @@ import QtQuick.Controls 2.12
|
||||||
Pane {
|
Pane {
|
||||||
padding: 0
|
padding: 0
|
||||||
|
|
||||||
|
property string control : "swipedelegate"
|
||||||
|
|
||||||
property var delegateComponentMap: {
|
property var delegateComponentMap: {
|
||||||
"ItemDelegate": itemDelegateComponent,
|
"ItemDelegate": itemDelegateComponent,
|
||||||
"SwipeDelegate": swipeDelegateComponent,
|
"SwipeDelegate": swipeDelegateComponent,
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "dial"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -55,6 +55,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "dialog"
|
||||||
|
|
||||||
readonly property int buttonWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, page.availableWidth / 3))
|
readonly property int buttonWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 2, page.availableWidth / 3))
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "frame"
|
||||||
|
|
||||||
readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
|
readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "groupbox"
|
||||||
|
|
||||||
readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
|
readonly property int itemWidth: Math.max(button.implicitWidth, Math.min(button.implicitWidth * 3, page.availableWidth / 3 * 2))
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "pageindicator"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "progressbar"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "radiobutton"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "rangeslider"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
Flickable {
|
Flickable {
|
||||||
id: flickable
|
id: flickable
|
||||||
|
|
||||||
|
readonly property string control : "scrollbar"
|
||||||
|
|
||||||
contentHeight: pane.height
|
contentHeight: pane.height
|
||||||
|
|
||||||
Pane {
|
Pane {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
Flickable {
|
Flickable {
|
||||||
id: flickable
|
id: flickable
|
||||||
|
|
||||||
|
readonly property string control : "scrollindicator"
|
||||||
|
|
||||||
contentHeight: pane.height
|
contentHeight: pane.height
|
||||||
|
|
||||||
Pane {
|
Pane {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
Page {
|
Page {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "flickable"
|
||||||
|
|
||||||
default property alias content: pane.contentItem
|
default property alias content: pane.contentItem
|
||||||
|
|
||||||
Flickable {
|
Flickable {
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "slider"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : ""
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -55,6 +55,8 @@ StackView {
|
||||||
id: stackView
|
id: stackView
|
||||||
initialItem: page
|
initialItem: page
|
||||||
|
|
||||||
|
readonly property string control : "stackview"
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
Pane {
|
Pane {
|
||||||
id: pane
|
id: pane
|
||||||
|
|
||||||
|
readonly property string control : "swipeview"
|
||||||
|
|
||||||
SwipeView {
|
SwipeView {
|
||||||
id: view
|
id: view
|
||||||
currentIndex: 1
|
currentIndex: 1
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "switch"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
Page {
|
Page {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "tabbar"
|
||||||
|
|
||||||
SwipeView {
|
SwipeView {
|
||||||
id: swipeView
|
id: swipeView
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "textarea"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "textfield"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "tooltip"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -54,6 +54,8 @@ import QtQuick.Controls 2.12
|
||||||
ScrollablePage {
|
ScrollablePage {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
|
readonly property string control : "tumbler"
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
spacing: 40
|
spacing: 40
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
|
@ -170,7 +170,6 @@ private:
|
||||||
int m_selectionEnd;
|
int m_selectionEnd;
|
||||||
|
|
||||||
QFont m_font;
|
QFont m_font;
|
||||||
int m_fontSize;
|
|
||||||
QUrl m_fileUrl;
|
QUrl m_fileUrl;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class QQuickWeekNumberModelPrivate : public QAbstractItemModelPrivate
|
||||||
Q_DECLARE_PUBLIC(QQuickWeekNumberModel)
|
Q_DECLARE_PUBLIC(QQuickWeekNumberModel)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QQuickWeekNumberModelPrivate() : month(-1), year(-1)
|
QQuickWeekNumberModelPrivate() : month(-1), year(-1), weekNumbers{}
|
||||||
{
|
{
|
||||||
QDate date = QDate::currentDate();
|
QDate date = QDate::currentDate();
|
||||||
init(date.month(), date.year(), locale);
|
init(date.month(), date.year(), locale);
|
||||||
|
|
|
@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
Q_GLOBAL_STATIC_WITH_ARGS(QString, GlobalPath, (QLatin1String("qrc:/qt-project.org/imports/QtQuick/Controls.2/Imagine/images/")))
|
Q_GLOBAL_STATIC_WITH_ARGS(QString, GlobalPath, (QLatin1String("qrc:/qt-project.org/imports/QtQuick/Controls.2/Imagine/images/")))
|
||||||
|
|
||||||
static const QString ensureSlash(const QString &path)
|
static QString ensureSlash(const QString &path)
|
||||||
{
|
{
|
||||||
const QChar slash = QLatin1Char('/');
|
const QChar slash = QLatin1Char('/');
|
||||||
return path.endsWith(slash) ? path : path + slash;
|
return path.endsWith(slash) ? path : path + slash;
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,40 @@
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
::
|
||||||
|
:: Copyright (C) 2019 The Qt Company Ltd.
|
||||||
|
:: Contact: https://www.qt.io/licensing/
|
||||||
|
::
|
||||||
|
:: This file is part of the QtQuick module of the Qt Toolkit.
|
||||||
|
::
|
||||||
|
:: $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
:: Commercial License Usage
|
||||||
|
:: Licensees holding valid commercial Qt licenses may use this file in
|
||||||
|
:: accordance with the commercial license agreement provided with the
|
||||||
|
:: Software or, alternatively, in accordance with the terms contained in
|
||||||
|
:: a written agreement between you and The Qt Company. For licensing terms
|
||||||
|
:: and conditions see https://www.qt.io/terms-conditions. For further
|
||||||
|
:: information use the contact form at https://www.qt.io/contact-us.
|
||||||
|
::
|
||||||
|
:: GNU Lesser General Public License Usage
|
||||||
|
:: Alternatively, this file may be used under the terms of the GNU Lesser
|
||||||
|
:: General Public License version 3 as published by the Free Software
|
||||||
|
:: Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||||
|
:: packaging of this file. Please review the following information to
|
||||||
|
:: ensure the GNU Lesser General Public License version 3 requirements
|
||||||
|
:: will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||||
|
::
|
||||||
|
:: GNU General Public License Usage
|
||||||
|
:: Alternatively, this file may be used under the terms of the GNU
|
||||||
|
:: General Public License version 2.0 or (at your option) the GNU General
|
||||||
|
:: Public license version 3 or any later version approved by the KDE Free
|
||||||
|
:: Qt Foundation. The licenses are as published by the Free Software
|
||||||
|
:: Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||||
|
:: included in the packaging of this file. Please review the following
|
||||||
|
:: information to ensure the GNU General Public License requirements will
|
||||||
|
:: be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||||
|
:: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||||
|
::
|
||||||
|
:: $QT_END_LICENSE$
|
||||||
|
::
|
||||||
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
|
qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/RectangularGlow.frag RectangularGlow_rhi.frag
|
|
@ -119,10 +119,15 @@ static QStringList defaultImportPathList()
|
||||||
{
|
{
|
||||||
QStringList importPaths;
|
QStringList importPaths;
|
||||||
importPaths.reserve(3);
|
importPaths.reserve(3);
|
||||||
#ifndef QT_STATIC
|
#ifdef Q_OS_ANDROID
|
||||||
|
// androiddeployqt puts the QML files inside a resource file and they are not
|
||||||
|
// showing up in the Qml2ImportsPath as a result
|
||||||
|
importPaths += QStringLiteral(":/android_rcc_bundle/qml");
|
||||||
|
#else
|
||||||
|
# ifndef QT_STATIC
|
||||||
importPaths += QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
|
importPaths += QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
importPaths += envPathList("QML2_IMPORT_PATH");
|
|
||||||
importPaths += QStringLiteral(":/qt-project.org/imports");
|
importPaths += QStringLiteral(":/qt-project.org/imports");
|
||||||
importPaths += QCoreApplication::applicationDirPath();
|
importPaths += QCoreApplication::applicationDirPath();
|
||||||
return importPaths;
|
return importPaths;
|
||||||
|
|
|
@ -1128,7 +1128,7 @@ void QQuickAbstractButton::buttonChange(ButtonChange change)
|
||||||
break;
|
break;
|
||||||
case ButtonTextChange: {
|
case ButtonTextChange: {
|
||||||
const QString txt = text();
|
const QString txt = text();
|
||||||
setAccessibleName(txt);
|
maybeSetAccessibleName(txt);
|
||||||
#if QT_CONFIG(shortcut)
|
#if QT_CONFIG(shortcut)
|
||||||
setShortcut(QKeySequence::mnemonic(txt));
|
setShortcut(QKeySequence::mnemonic(txt));
|
||||||
#endif
|
#endif
|
||||||
|
@ -1154,7 +1154,7 @@ void QQuickAbstractButton::accessibilityActiveChanged(bool active)
|
||||||
|
|
||||||
Q_D(QQuickAbstractButton);
|
Q_D(QQuickAbstractButton);
|
||||||
if (active) {
|
if (active) {
|
||||||
setAccessibleName(text());
|
maybeSetAccessibleName(text());
|
||||||
setAccessibleProperty("pressed", d->pressed);
|
setAccessibleProperty("pressed", d->pressed);
|
||||||
setAccessibleProperty("checked", d->checked);
|
setAccessibleProperty("checked", d->checked);
|
||||||
setAccessibleProperty("checkable", d->checkable);
|
setAccessibleProperty("checkable", d->checkable);
|
||||||
|
|
|
@ -448,7 +448,7 @@ void QQuickComboBoxPrivate::updateCurrentText()
|
||||||
if (currentText != text) {
|
if (currentText != text) {
|
||||||
currentText = text;
|
currentText = text;
|
||||||
if (!hasDisplayText)
|
if (!hasDisplayText)
|
||||||
q->setAccessibleName(text);
|
q->maybeSetAccessibleName(text);
|
||||||
emit q->currentTextChanged();
|
emit q->currentTextChanged();
|
||||||
}
|
}
|
||||||
if (!hasDisplayText && displayText != text) {
|
if (!hasDisplayText && displayText != text) {
|
||||||
|
@ -1012,7 +1012,7 @@ void QQuickComboBox::setDisplayText(const QString &text)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->displayText = text;
|
d->displayText = text;
|
||||||
setAccessibleName(text);
|
maybeSetAccessibleName(text);
|
||||||
emit displayTextChanged();
|
emit displayTextChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1705,6 +1705,12 @@ bool QQuickComboBox::eventFilter(QObject *object, QEvent *event)
|
||||||
// the user clicked on the popup button to open it, not close it).
|
// the user clicked on the popup button to open it, not close it).
|
||||||
d->hidePopup(false);
|
d->hidePopup(false);
|
||||||
setPressed(false);
|
setPressed(false);
|
||||||
|
|
||||||
|
// The focus left the text field, so if the edit text matches an item in the model,
|
||||||
|
// change our currentIndex to that. This matches widgets' behavior.
|
||||||
|
const int indexForEditText = find(d->extra.value().editText, Qt::MatchFixedString);
|
||||||
|
if (indexForEditText > -1)
|
||||||
|
setCurrentIndex(indexForEditText);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if QT_CONFIG(im)
|
#if QT_CONFIG(im)
|
||||||
|
@ -1945,7 +1951,7 @@ void QQuickComboBox::accessibilityActiveChanged(bool active)
|
||||||
QQuickControl::accessibilityActiveChanged(active);
|
QQuickControl::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
if (active) {
|
if (active) {
|
||||||
setAccessibleName(d->hasDisplayText ? d->displayText : d->currentText);
|
maybeSetAccessibleName(d->hasDisplayText ? d->displayText : d->currentText);
|
||||||
setAccessibleProperty("editable", isEditable());
|
setAccessibleProperty("editable", isEditable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2300,11 +2300,13 @@ QString QQuickControl::accessibleName() const
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QQuickControl::setAccessibleName(const QString &name)
|
void QQuickControl::maybeSetAccessibleName(const QString &name)
|
||||||
{
|
{
|
||||||
#if QT_CONFIG(accessibility)
|
#if QT_CONFIG(accessibility)
|
||||||
if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this))
|
if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) {
|
||||||
accessibleAttached->setName(name);
|
if (!accessibleAttached->wasNameExplicitlySet())
|
||||||
|
accessibleAttached->setNameImplicitly(name);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
Q_UNUSED(name)
|
Q_UNUSED(name)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -287,7 +287,7 @@ protected:
|
||||||
|
|
||||||
// helper functions which avoid to check QT_CONFIG(accessibility)
|
// helper functions which avoid to check QT_CONFIG(accessibility)
|
||||||
QString accessibleName() const;
|
QString accessibleName() const;
|
||||||
void setAccessibleName(const QString &name);
|
void maybeSetAccessibleName(const QString &name);
|
||||||
|
|
||||||
QVariant accessibleProperty(const char *propertyName);
|
QVariant accessibleProperty(const char *propertyName);
|
||||||
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
|
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
|
||||||
|
|
|
@ -219,7 +219,6 @@ void QQuickDialog::setTitle(const QString &title)
|
||||||
{
|
{
|
||||||
Q_D(QQuickDialog);
|
Q_D(QQuickDialog);
|
||||||
d->popupItem->setTitle(title);
|
d->popupItem->setTitle(title);
|
||||||
setAccessibleName(title);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -536,7 +535,7 @@ void QQuickDialog::accessibilityActiveChanged(bool active)
|
||||||
QQuickPopup::accessibilityActiveChanged(active);
|
QQuickPopup::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
setAccessibleName(d->popupItem->title());
|
maybeSetAccessibleName(d->popupItem->title());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ void QQuickGroupBox::setTitle(const QString &title)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->title = title;
|
d->title = title;
|
||||||
setAccessibleName(title);
|
maybeSetAccessibleName(title);
|
||||||
emit titleChanged();
|
emit titleChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +283,7 @@ void QQuickGroupBox::accessibilityActiveChanged(bool active)
|
||||||
QQuickFrame::accessibilityActiveChanged(active);
|
QQuickFrame::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
setAccessibleName(d->title);
|
maybeSetAccessibleName(d->title);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -248,9 +248,7 @@ void QQuickLabelPrivate::updatePalette(const QPalette &palette)
|
||||||
void QQuickLabelPrivate::textChanged(const QString &text)
|
void QQuickLabelPrivate::textChanged(const QString &text)
|
||||||
{
|
{
|
||||||
#if QT_CONFIG(accessibility)
|
#if QT_CONFIG(accessibility)
|
||||||
Q_Q(QQuickLabel);
|
maybeSetAccessibleName(text);
|
||||||
if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q))
|
|
||||||
accessibleAttached->setName(text);
|
|
||||||
#else
|
#else
|
||||||
Q_UNUSED(text)
|
Q_UNUSED(text)
|
||||||
#endif
|
#endif
|
||||||
|
@ -266,13 +264,24 @@ void QQuickLabelPrivate::accessibilityActiveChanged(bool active)
|
||||||
QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true));
|
QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true));
|
||||||
Q_ASSERT(accessibleAttached);
|
Q_ASSERT(accessibleAttached);
|
||||||
accessibleAttached->setRole(accessibleRole());
|
accessibleAttached->setRole(accessibleRole());
|
||||||
accessibleAttached->setName(text);
|
maybeSetAccessibleName(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
QAccessible::Role QQuickLabelPrivate::accessibleRole() const
|
QAccessible::Role QQuickLabelPrivate::accessibleRole() const
|
||||||
{
|
{
|
||||||
return QAccessible::StaticText;
|
return QAccessible::StaticText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QQuickLabelPrivate::maybeSetAccessibleName(const QString &name)
|
||||||
|
{
|
||||||
|
Q_Q(QQuickLabel);
|
||||||
|
auto accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(
|
||||||
|
qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true));
|
||||||
|
if (accessibleAttached) {
|
||||||
|
if (!accessibleAttached->wasNameExplicitlySet())
|
||||||
|
accessibleAttached->setNameImplicitly(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline QString backgroundName() { return QStringLiteral("background"); }
|
static inline QString backgroundName() { return QStringLiteral("background"); }
|
||||||
|
|
|
@ -111,6 +111,7 @@ public:
|
||||||
#if QT_CONFIG(accessibility)
|
#if QT_CONFIG(accessibility)
|
||||||
void accessibilityActiveChanged(bool active) override;
|
void accessibilityActiveChanged(bool active) override;
|
||||||
QAccessible::Role accessibleRole() const override;
|
QAccessible::Role accessibleRole() const override;
|
||||||
|
void maybeSetAccessibleName(const QString &name);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void cancelBackground();
|
void cancelBackground();
|
||||||
|
|
|
@ -285,7 +285,7 @@ void QQuickPage::setTitle(const QString &title)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->title = title;
|
d->title = title;
|
||||||
setAccessibleName(title);
|
maybeSetAccessibleName(title);
|
||||||
emit titleChanged();
|
emit titleChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ void QQuickPage::accessibilityActiveChanged(bool active)
|
||||||
QQuickPane::accessibilityActiveChanged(active);
|
QQuickPane::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
setAccessibleName(d->title);
|
maybeSetAccessibleName(d->title);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -2699,10 +2699,10 @@ QString QQuickPopup::accessibleName() const
|
||||||
return d->popupItem->accessibleName();
|
return d->popupItem->accessibleName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QQuickPopup::setAccessibleName(const QString &name)
|
void QQuickPopup::maybeSetAccessibleName(const QString &name)
|
||||||
{
|
{
|
||||||
Q_D(QQuickPopup);
|
Q_D(QQuickPopup);
|
||||||
d->popupItem->setAccessibleName(name);
|
d->popupItem->maybeSetAccessibleName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant QQuickPopup::accessibleProperty(const char *propertyName)
|
QVariant QQuickPopup::accessibleProperty(const char *propertyName)
|
||||||
|
|
|
@ -459,7 +459,7 @@ protected:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QString accessibleName() const;
|
QString accessibleName() const;
|
||||||
void setAccessibleName(const QString &name);
|
void maybeSetAccessibleName(const QString &name);
|
||||||
|
|
||||||
QVariant accessibleProperty(const char *propertyName);
|
QVariant accessibleProperty(const char *propertyName);
|
||||||
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
|
bool setAccessibleProperty(const char *propertyName, const QVariant &value);
|
||||||
|
|
|
@ -47,6 +47,10 @@
|
||||||
#endif
|
#endif
|
||||||
#include <QtGui/private/qguiapplication_p.h>
|
#include <QtGui/private/qguiapplication_p.h>
|
||||||
|
|
||||||
|
#if QT_CONFIG(accessibility)
|
||||||
|
#include <QtQuick/private/qquickaccessibleattached_p.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
class QQuickPopupItemPrivate : public QQuickPagePrivate
|
class QQuickPopupItemPrivate : public QQuickPagePrivate
|
||||||
|
@ -403,7 +407,28 @@ QAccessible::Role QQuickPopupItem::accessibleRole() const
|
||||||
void QQuickPopupItem::accessibilityActiveChanged(bool active)
|
void QQuickPopupItem::accessibilityActiveChanged(bool active)
|
||||||
{
|
{
|
||||||
Q_D(const QQuickPopupItem);
|
Q_D(const QQuickPopupItem);
|
||||||
|
// Can't just use d->popup->accessibleName() here, because that refers to the accessible
|
||||||
|
// name of us, the popup item, which is not what we want.
|
||||||
|
const QQuickAccessibleAttached *popupAccessibleAttached = QQuickControlPrivate::accessibleAttached(d->popup);
|
||||||
|
const QString oldPopupName = popupAccessibleAttached ? popupAccessibleAttached->name() : QString();
|
||||||
|
const bool wasNameExplicitlySetOnPopup = popupAccessibleAttached && popupAccessibleAttached->wasNameExplicitlySet();
|
||||||
|
|
||||||
QQuickPage::accessibilityActiveChanged(active);
|
QQuickPage::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
|
QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this);
|
||||||
|
const QString ourName = accessibleAttached ? accessibleAttached->name() : QString();
|
||||||
|
if (wasNameExplicitlySetOnPopup && accessibleAttached && ourName != oldPopupName) {
|
||||||
|
// The user set Accessible.name on the Popup. Since the Popup and its popup item
|
||||||
|
// have different accessible attached properties, the popup item doesn't know that
|
||||||
|
// a name was set on the Popup by the user, and that it should use that, rather than
|
||||||
|
// whatever QQuickPage sets. That's why we need to do it here.
|
||||||
|
// To avoid it being overridden by the call to accessibilityActiveChanged() below,
|
||||||
|
// we set it explicitly. It's safe to do this as the popup item is an internal implementation detail.
|
||||||
|
accessibleAttached->setName(oldPopupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This allows the different popup types to set a name on their popup item accordingly.
|
||||||
|
// For example: Dialog uses its title and ToolTip uses its text.
|
||||||
d->popup->accessibilityActiveChanged(active);
|
d->popup->accessibilityActiveChanged(active);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -80,6 +80,9 @@ QT_BEGIN_NAMESPACE
|
||||||
\li \l{SplitHandle::pressed}{SplitHandle.pressed}
|
\li \l{SplitHandle::pressed}{SplitHandle.pressed}
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
|
\note Handles should be purely visual and not handle events, as it can
|
||||||
|
interfere with their hovered and pressed states.
|
||||||
|
|
||||||
The preferred size of items in a SplitView can be specified via
|
The preferred size of items in a SplitView can be specified via
|
||||||
\l{Item::}{implicitWidth} and \l{Item::}{implicitHeight} or
|
\l{Item::}{implicitWidth} and \l{Item::}{implicitHeight} or
|
||||||
\c SplitView.preferredWidth and \c SplitView.preferredHeight:
|
\c SplitView.preferredWidth and \c SplitView.preferredHeight:
|
||||||
|
@ -1091,6 +1094,7 @@ QQuickSplitView::QQuickSplitView(QQuickItem *parent)
|
||||||
d->changeTypes |= QQuickItemPrivate::Visibility;
|
d->changeTypes |= QQuickItemPrivate::Visibility;
|
||||||
|
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
|
setFiltersChildMouseEvents(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
QQuickSplitView::QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent)
|
QQuickSplitView::QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent)
|
||||||
|
@ -1100,6 +1104,7 @@ QQuickSplitView::QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent)
|
||||||
d->changeTypes |= QQuickItemPrivate::Visibility;
|
d->changeTypes |= QQuickItemPrivate::Visibility;
|
||||||
|
|
||||||
setAcceptedMouseButtons(Qt::LeftButton);
|
setAcceptedMouseButtons(Qt::LeftButton);
|
||||||
|
setFiltersChildMouseEvents(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
QQuickSplitView::~QQuickSplitView()
|
QQuickSplitView::~QQuickSplitView()
|
||||||
|
@ -1364,6 +1369,20 @@ void QQuickSplitView::hoverMoveEvent(QHoverEvent *event)
|
||||||
d->updateHoveredHandle(hoveredItem);
|
d->updateHoveredHandle(hoveredItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QQuickSplitView::childMouseEventFilter(QQuickItem *item, QEvent *event)
|
||||||
|
{
|
||||||
|
Q_D(QQuickSplitView);
|
||||||
|
qCDebug(qlcQQuickSplitViewMouse) << "childMouseEventFilter called with" << item << event;
|
||||||
|
if (event->type() != QEvent::HoverEnter)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// If a child item received a hover enter event, then it means our handle is no longer hovered.
|
||||||
|
// Handles should be purely visual and not accept hover events,
|
||||||
|
// so we should never get hover events for them here.
|
||||||
|
d->updateHoveredHandle(nullptr);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void QQuickSplitView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
|
void QQuickSplitView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
|
||||||
{
|
{
|
||||||
Q_D(QQuickSplitView);
|
Q_D(QQuickSplitView);
|
||||||
|
|
|
@ -99,6 +99,7 @@ protected:
|
||||||
|
|
||||||
void componentComplete() override;
|
void componentComplete() override;
|
||||||
void hoverMoveEvent(QHoverEvent *event) override;
|
void hoverMoveEvent(QHoverEvent *event) override;
|
||||||
|
bool childMouseEventFilter(QQuickItem *item, QEvent *event) override;
|
||||||
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
|
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
|
||||||
|
|
||||||
void itemAdded(int index, QQuickItem *item) override;
|
void itemAdded(int index, QQuickItem *item) override;
|
||||||
|
|
|
@ -651,6 +651,13 @@ void QQuickStackView::push(QQmlV4Function *args)
|
||||||
void QQuickStackView::pop(QQmlV4Function *args)
|
void QQuickStackView::pop(QQmlV4Function *args)
|
||||||
{
|
{
|
||||||
Q_D(QQuickStackView);
|
Q_D(QQuickStackView);
|
||||||
|
if (d->removingElements) {
|
||||||
|
d->warn(QStringLiteral("cannot pop while already in the process of removing elements"));
|
||||||
|
args->setReturnValue(QV4::Encode::null());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScopedValueRollback<bool> removingElements(d->removingElements, true);
|
||||||
QScopedValueRollback<QString> rollback(d->operation, QStringLiteral("pop"));
|
QScopedValueRollback<QString> rollback(d->operation, QStringLiteral("pop"));
|
||||||
int argc = args->length();
|
int argc = args->length();
|
||||||
if (d->elements.count() <= 1 || argc > 2) {
|
if (d->elements.count() <= 1 || argc > 2) {
|
||||||
|
@ -806,6 +813,13 @@ void QQuickStackView::pop(QQmlV4Function *args)
|
||||||
void QQuickStackView::replace(QQmlV4Function *args)
|
void QQuickStackView::replace(QQmlV4Function *args)
|
||||||
{
|
{
|
||||||
Q_D(QQuickStackView);
|
Q_D(QQuickStackView);
|
||||||
|
if (d->removingElements) {
|
||||||
|
d->warn(QStringLiteral("cannot replace while already in the process of removing elements"));
|
||||||
|
args->setReturnValue(QV4::Encode::null());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScopedValueRollback<bool> removingElements(d->removingElements, true);
|
||||||
QScopedValueRollback<QString> rollback(d->operation, QStringLiteral("replace"));
|
QScopedValueRollback<QString> rollback(d->operation, QStringLiteral("replace"));
|
||||||
if (args->length() <= 0) {
|
if (args->length() <= 0) {
|
||||||
d->warn(QStringLiteral("missing arguments"));
|
d->warn(QStringLiteral("missing arguments"));
|
||||||
|
@ -902,6 +916,12 @@ void QQuickStackView::clear(Operation operation)
|
||||||
if (d->elements.isEmpty())
|
if (d->elements.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (d->removingElements) {
|
||||||
|
d->warn(QStringLiteral("cannot clear while already in the process of removing elements"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScopedValueRollback<bool> removingElements(d->removingElements, true);
|
||||||
if (operation != Immediate) {
|
if (operation != Immediate) {
|
||||||
QQuickStackElement *exit = d->elements.pop();
|
QQuickStackElement *exit = d->elements.pop();
|
||||||
exit->removal = true;
|
exit->removal = true;
|
||||||
|
|
|
@ -267,7 +267,11 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition
|
||||||
element->setStatus(QQuickStackView::Active);
|
element->setStatus(QQuickStackView::Active);
|
||||||
} else if (element->status == QQuickStackView::Deactivating) {
|
} else if (element->status == QQuickStackView::Deactivating) {
|
||||||
element->setStatus(QQuickStackView::Inactive);
|
element->setStatus(QQuickStackView::Inactive);
|
||||||
element->setVisible(false);
|
QQuickStackElement *existingElement = element->item ? findElement(element->item) : nullptr;
|
||||||
|
// If a different element with the same item is found,
|
||||||
|
// do not call setVisible(false) since it needs to be visible.
|
||||||
|
if (!existingElement || element == existingElement)
|
||||||
|
element->setVisible(false);
|
||||||
if (element->removal || element->isPendingRemoval())
|
if (element->removal || element->isPendingRemoval())
|
||||||
removed += element;
|
removed += element;
|
||||||
}
|
}
|
||||||
|
@ -275,11 +279,21 @@ void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransition
|
||||||
if (transitioner && transitioner->runningJobs.isEmpty()) {
|
if (transitioner && transitioner->runningJobs.isEmpty()) {
|
||||||
// ~QQuickStackElement() emits QQuickStackViewAttached::removed(), which may be used
|
// ~QQuickStackElement() emits QQuickStackViewAttached::removed(), which may be used
|
||||||
// to modify the stack. Set the status first and make a copy of the destroyable stack
|
// to modify the stack. Set the status first and make a copy of the destroyable stack
|
||||||
// elements to exclude any modifications that may happen during the loop. (QTBUG-62153)
|
// elements to exclude any modifications that may happen during qDeleteAll(). (QTBUG-62153)
|
||||||
setBusy(false);
|
setBusy(false);
|
||||||
QList<QQuickStackElement*> elements = removed;
|
QList<QQuickStackElement*> removedElements = removed;
|
||||||
removed.clear();
|
removed.clear();
|
||||||
qDeleteAll(elements);
|
|
||||||
|
for (QQuickStackElement *removedElement : qAsConst(removedElements)) {
|
||||||
|
// If an element with the same item is found in the active stack list,
|
||||||
|
// forget about the item so that we don't hide it.
|
||||||
|
if (removedElement->item && findElement(removedElement->item)) {
|
||||||
|
QQuickItemPrivate::get(removedElement->item)->removeItemChangeListener(removedElement, QQuickItemPrivate::Destroyed);
|
||||||
|
removedElement->item = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
qDeleteAll(removedElements);
|
||||||
}
|
}
|
||||||
|
|
||||||
removing.remove(element);
|
removing.remove(element);
|
||||||
|
|
|
@ -94,6 +94,7 @@ public:
|
||||||
void depthChange(int newDepth, int oldDepth);
|
void depthChange(int newDepth, int oldDepth);
|
||||||
|
|
||||||
bool busy = false;
|
bool busy = false;
|
||||||
|
bool removingElements = false;
|
||||||
QString operation;
|
QString operation;
|
||||||
QJSValue initialItem;
|
QJSValue initialItem;
|
||||||
QQuickItem *currentItem = nullptr;
|
QQuickItem *currentItem = nullptr;
|
||||||
|
|
|
@ -188,7 +188,7 @@ void QQuickToolTip::setText(const QString &text)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->text = text;
|
d->text = text;
|
||||||
setAccessibleName(text);
|
maybeSetAccessibleName(text);
|
||||||
emit textChanged();
|
emit textChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,7 +351,7 @@ void QQuickToolTip::accessibilityActiveChanged(bool active)
|
||||||
QQuickPopup::accessibilityActiveChanged(active);
|
QQuickPopup::accessibilityActiveChanged(active);
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
setAccessibleName(d->text);
|
maybeSetAccessibleName(d->text);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[a11y:Label]
|
||||||
|
opensuse-leap
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue