summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergio Martins <sergio.martins@kdab.com>2015-07-15 15:43:09 +0100
committerGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-07-15 15:52:04 +0000
commit4572541637f7ce1f93f3b4e0f4d0ab69b01f6ed2 (patch)
tree930e32bff93678afa2ba4f69b8df14c1034c36fd
parent835c8459c0448f211e2692dfbfaa65e46cd05fce (diff)
downloadqtquickcontrols-4572541637f7ce1f93f3b4e0f4d0ab69b01f6ed2.tar.gz
Protect the content item with a QPointer since we don't own it.
Fixes a CI crash reproducible at least on Ubuntu Change-Id: I45a59054c20c3a99da30b79d33e24184bf328db9 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
-rw-r--r--src/controls/qquickmenupopupwindow.cpp8
-rw-r--r--src/controls/qquickpopupwindow_p.h6
2 files changed, 9 insertions, 5 deletions
diff --git a/src/controls/qquickmenupopupwindow.cpp b/src/controls/qquickmenupopupwindow.cpp
index 6a6af0d4..2a91940e 100644
--- a/src/controls/qquickmenupopupwindow.cpp
+++ b/src/controls/qquickmenupopupwindow.cpp
@@ -130,11 +130,15 @@ void QQuickMenuPopupWindow::setGeometry(int posx, int posy, int w, int h)
void QQuickMenuPopupWindow::updateSize()
{
+ const QQuickItem *contentItem = popupContentItem();
+ if (!contentItem)
+ return;
+
qreal x = m_initialPos.x();
qreal y = m_initialPos.y();
if (qGuiApp->layoutDirection() == Qt::RightToLeft)
- x -= popupContentItem()->width();
- setGeometry(x, y, popupContentItem()->width(), popupContentItem()->height());
+ x -= contentItem->width();
+ setGeometry(x, y, contentItem->width(), contentItem->height());
}
void QQuickMenuPopupWindow::updatePosition()
diff --git a/src/controls/qquickpopupwindow_p.h b/src/controls/qquickpopupwindow_p.h
index b95275c0..617df53d 100644
--- a/src/controls/qquickpopupwindow_p.h
+++ b/src/controls/qquickpopupwindow_p.h
@@ -37,12 +37,12 @@
#ifndef QQUICKPOPUPWINDOW_H
#define QQUICKPOPUPWINDOW_H
+#include <QtCore/QPointer>
+#include <QtQuick/qquickitem.h>
#include <QtQuick/qquickwindow.h>
QT_BEGIN_NAMESPACE
-class QQuickItem;
-
class QQuickPopupWindow : public QQuickWindow
{
Q_OBJECT
@@ -84,7 +84,7 @@ private:
void forwardEventToTransientParent(QMouseEvent *);
QQuickItem *m_parentItem;
- QQuickItem *m_contentItem;
+ QPointer<QQuickItem> m_contentItem;
bool m_mouseMoved;
bool m_needsActivatedEvent;
bool m_dismissed;