aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-05-05 15:52:53 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-05-05 15:52:54 +0200
commit9f6a3bf96fabeca58599029f9d9d59b7ed852569 (patch)
treed8a47b67c3b5817d1f5f77c312adbe655b1ca576 /src
parente807f9d1d80559b8ff91f1c3cfdd755b3da56a6d (diff)
parenta2eef6b511988b2435c4e39b6b5551e857ce7775 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'src')
-rw-r--r--src/qml/types/qqmlconnections.cpp9
-rw-r--r--src/quick/items/qquickaccessibleattached.cpp15
-rw-r--r--src/quick/items/qquickaccessibleattached_p.h2
-rw-r--r--src/quick/items/qquicktextutil.cpp2
-rw-r--r--src/quick/items/qquickwindowmodule.cpp16
-rw-r--r--src/quick/items/qquickwindowmodule_p.h3
6 files changed, 35 insertions, 12 deletions
diff --git a/src/qml/types/qqmlconnections.cpp b/src/qml/types/qqmlconnections.cpp
index 29946b1da4..c913e2d11a 100644
--- a/src/qml/types/qqmlconnections.cpp
+++ b/src/qml/types/qqmlconnections.cpp
@@ -47,6 +47,7 @@
#include <private/qqmlvmemetaobject_p.h>
#include <qqmlinfo.h>
+#include <QtCore/qloggingcategory.h>
#include <QtCore/qdebug.h>
#include <QtCore/qstringlist.h>
@@ -54,6 +55,8 @@
QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcQmlConnections, "qt.qml.connections")
+
class QQmlConnectionsPrivate : public QObjectPrivate
{
public:
@@ -276,8 +279,10 @@ void QQmlConnections::connectSignals()
connectSignalsToMethods();
} else {
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
- qmlWarning(this) << tr("Implicitly defined onFoo properties in Connections are deprecated. "
- "Use this syntax instead: function onFoo(<arguments>) { ... }");
+ if (lcQmlConnections().isWarningEnabled()) {
+ qmlWarning(this) << tr("Implicitly defined onFoo properties in Connections are deprecated. "
+ "Use this syntax instead: function onFoo(<arguments>) { ... }");
+ }
#endif
connectSignalsToBindings();
}
diff --git a/src/quick/items/qquickaccessibleattached.cpp b/src/quick/items/qquickaccessibleattached.cpp
index ae23c4c07e..67d17c98e5 100644
--- a/src/quick/items/qquickaccessibleattached.cpp
+++ b/src/quick/items/qquickaccessibleattached.cpp
@@ -41,6 +41,8 @@
#if QT_CONFIG(accessibility)
+#include <QtQml/qqmlinfo.h>
+
#include "private/qquickitem_p.h"
QT_BEGIN_NAMESPACE
@@ -335,14 +337,15 @@ QQuickAccessibleAttached::QQuickAccessibleAttached(QObject *parent)
: QObject(parent), m_role(QAccessible::NoRole)
{
Q_ASSERT(parent);
- QQuickItem *item = qobject_cast<QQuickItem*>(parent);
- if (!item)
+ if (!item()) {
+ qmlWarning(parent) << "Accessible must be attached to an Item";
return;
+ }
// Enable accessibility for items with accessible content. This also
// enables accessibility for the ancestors of souch items.
- item->d_func()->setAccessible();
- QAccessibleEvent ev(item, QAccessible::ObjectCreated);
+ item()->d_func()->setAccessible();
+ QAccessibleEvent ev(item(), QAccessible::ObjectCreated);
QAccessible::updateAccessibility(&ev);
if (!parent->property("value").isNull()) {
@@ -433,12 +436,12 @@ QQuickAccessibleAttached *QQuickAccessibleAttached::qmlAttachedProperties(QObjec
bool QQuickAccessibleAttached::ignored() const
{
- return !item()->d_func()->isAccessible;
+ return item() ? !item()->d_func()->isAccessible : false;
}
void QQuickAccessibleAttached::setIgnored(bool ignored)
{
- if (this->ignored() != ignored) {
+ if (this->ignored() != ignored && item()) {
item()->d_func()->isAccessible = !ignored;
emit ignoredChanged();
}
diff --git a/src/quick/items/qquickaccessibleattached_p.h b/src/quick/items/qquickaccessibleattached_p.h
index 8a71c492a3..c4ccbb5a10 100644
--- a/src/quick/items/qquickaccessibleattached_p.h
+++ b/src/quick/items/qquickaccessibleattached_p.h
@@ -219,7 +219,7 @@ Q_SIGNALS:
void nextPageAction();
private:
- QQuickItem *item() const { return static_cast<QQuickItem*>(parent()); }
+ QQuickItem *item() const { return qobject_cast<QQuickItem*>(parent()); }
QAccessible::Role m_role;
QAccessible::State m_state;
diff --git a/src/quick/items/qquicktextutil.cpp b/src/quick/items/qquicktextutil.cpp
index eb356a9c48..024b2b7a5b 100644
--- a/src/quick/items/qquicktextutil.cpp
+++ b/src/quick/items/qquicktextutil.cpp
@@ -87,7 +87,7 @@ qreal QQuickTextUtil::alignedX(const qreal textWidth, const qreal itemWidth, int
x = itemWidth - textWidth;
break;
case Qt::AlignHCenter:
- x = (itemWidth - textWidth) / 2;
+ x = qRound(itemWidth / 2.0) - textWidth / 2.0;
break;
}
return x;
diff --git a/src/quick/items/qquickwindowmodule.cpp b/src/quick/items/qquickwindowmodule.cpp
index 6100d1466a..7d7cf20210 100644
--- a/src/quick/items/qquickwindowmodule.cpp
+++ b/src/quick/items/qquickwindowmodule.cpp
@@ -39,6 +39,7 @@
#include "qquickwindowmodule_p.h"
#include "qquickwindowattached_p.h"
+#include "qquickrendercontrol.h"
#include "qquickscreen_p.h"
#include "qquickview_p.h"
#include "qquickwindowmodule_p_p.h"
@@ -68,7 +69,7 @@ void QQuickWindowQmlImpl::setVisible(bool visible)
{
Q_D(QQuickWindowQmlImpl);
d->visible = visible;
- if (d->complete && (!transientParent() || transientParent()->isVisible()))
+ if (d->complete && (!transientParent() || transientParentVisible()))
QQuickWindow::setVisible(visible);
}
@@ -135,7 +136,7 @@ QQuickWindowQmlImpl::QQuickWindowQmlImpl(QQuickWindowQmlImplPrivate &dd, QWindow
void QQuickWindowQmlImpl::setWindowVisibility()
{
Q_D(QQuickWindowQmlImpl);
- if (transientParent() && !transientParent()->isVisible())
+ if (transientParent() && !transientParentVisible())
return;
if (QQuickItem *senderItem = qmlobject_cast<QQuickItem *>(sender())) {
@@ -189,6 +190,17 @@ void QQuickWindowQmlImpl::setScreen(QObject *screen)
QWindow::setScreen(screenWrapper ? screenWrapper->wrappedScreen() : nullptr);
}
+bool QQuickWindowQmlImpl::transientParentVisible()
+{
+ Q_ASSERT(transientParent());
+ if (!transientParent()->isVisible()) {
+ // handle case where transient parent is offscreen window
+ QWindow *rw = QQuickRenderControl::renderWindowFor(qobject_cast<QQuickWindow*>(transientParent()));
+ return rw && rw->isVisible();
+ }
+ return true;
+}
+
QT_END_NAMESPACE
#include "moc_qquickwindowmodule_p.cpp"
diff --git a/src/quick/items/qquickwindowmodule_p.h b/src/quick/items/qquickwindowmodule_p.h
index dc260dd47a..87f0b240b8 100644
--- a/src/quick/items/qquickwindowmodule_p.h
+++ b/src/quick/items/qquickwindowmodule_p.h
@@ -96,6 +96,9 @@ private Q_SLOTS:
void setWindowVisibility();
private:
+ bool transientParentVisible();
+
+private:
Q_DISABLE_COPY(QQuickWindowQmlImpl)
Q_DECLARE_PRIVATE(QQuickWindowQmlImpl)
};