aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-12-19 11:20:15 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-12-19 18:35:05 +0000
commit27a7cb2b36a2e23845f3b91c55b6254681f40545 (patch)
tree909e78c71b2aaeaddb1f869d0a1b3e4d9774a8de /src
parent6b1bc337410dcfcafc6ceecaa268464f6214ea33 (diff)
Just tidy up QQuickPopup a bit
Change-Id: Ibc8097299f0796f943682f0c1de628a8da87e430 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/templates/qquickoverlay.cpp13
-rw-r--r--src/templates/qquickpopup.cpp56
-rw-r--r--src/templates/qquickpopup_p.h10
-rw-r--r--src/templates/qquickpopup_p_p.h10
4 files changed, 41 insertions, 48 deletions
diff --git a/src/templates/qquickoverlay.cpp b/src/templates/qquickoverlay.cpp
index a3f9b573..949715c4 100644
--- a/src/templates/qquickoverlay.cpp
+++ b/src/templates/qquickoverlay.cpp
@@ -138,7 +138,6 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
Q_D(QQuickOverlay);
QQuickItem::itemChange(change, data);
- QQuickItem *contentItem = const_cast<QQuickItem *>(data.item);
QQuickPopup *popup = Q_NULLPTR;
if (change == ItemChildAddedChange || change == ItemChildRemovedChange) {
QQuickDrawer *drawer = qobject_cast<QQuickDrawer *>(data.item);
@@ -152,7 +151,7 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
}
d->updateBackground();
} else {
- popup = qobject_cast<QQuickPopup *>(contentItem->parent());
+ popup = qobject_cast<QQuickPopup *>(data.item->parent());
}
setVisible(!childItems().isEmpty());
}
@@ -160,27 +159,27 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
return;
if (change == ItemChildAddedChange) {
- if (QQuickPopup *prevPopup = d->popups.value(contentItem)) {
- qmlInfo(popup).nospace() << "Popup is sharing item " << contentItem << " with " << prevPopup
+ if (QQuickPopup *prevPopup = d->popups.value(data.item)) {
+ qmlInfo(popup).nospace() << "Popup is sharing item " << data.item << " with " << prevPopup
<< ". This is not supported and strange things are about to happen.";
return;
}
- d->popups.insert(contentItem, popup);
+ d->popups.insert(data.item, popup);
if (popup->isModal())
++d->modalPopups;
connect(this, &QQuickOverlay::pressed, popup, &QQuickPopup::pressedOutside);
connect(this, &QQuickOverlay::released, popup, &QQuickPopup::releasedOutside);
} else if (change == ItemChildRemovedChange) {
- Q_ASSERT(popup == d->popups.value(contentItem));
+ Q_ASSERT(popup == d->popups.value(data.item));
disconnect(this, &QQuickOverlay::pressed, popup, &QQuickPopup::pressedOutside);
disconnect(this, &QQuickOverlay::released, popup, &QQuickPopup::releasedOutside);
if (popup->isModal())
--d->modalPopups;
- d->popups.remove(contentItem);
+ d->popups.remove(data.item);
}
d->updateBackground();
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index f3c87846..2da468d0 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -38,6 +38,7 @@
#include "qquickpopup_p_p.h"
#include "qquickapplicationwindow_p.h"
#include "qquickoverlay_p.h"
+
#include <QtQml/qqmlinfo.h>
#include <QtQuick/qquickitem.h>
#include <QtQuick/private/qquicktransition_p.h>
@@ -58,17 +59,15 @@ QT_BEGIN_NAMESPACE
QQuickPopupPrivate::QQuickPopupPrivate()
: QObjectPrivate()
- , contentItem(Q_NULLPTR)
- , overlay(Q_NULLPTR)
, focus(false)
, modal(false)
+ , contentItem(Q_NULLPTR)
+ , overlay(Q_NULLPTR)
, enter(Q_NULLPTR)
, exit(Q_NULLPTR)
, transitionManager(this)
-{ }
-
-QQuickPopupPrivate::~QQuickPopupPrivate()
-{ }
+{
+}
void QQuickPopupPrivate::finalizeEnterTransition()
{
@@ -78,16 +77,18 @@ void QQuickPopupPrivate::finalizeEnterTransition()
void QQuickPopupPrivate::finalizeExitTransition()
{
+ Q_Q(QQuickPopup);
overlay = Q_NULLPTR;
contentItem->setParentItem(Q_NULLPTR);
- emit q_func()->visibleChanged();
+ emit q->visibleChanged();
}
-QQuickPopupTransitionManager::QQuickPopupTransitionManager(QQuickPopupPrivate *priv)
+QQuickPopupTransitionManager::QQuickPopupTransitionManager(QQuickPopupPrivate *popup)
: QQuickTransitionManager()
, state(Off)
- , pp(priv)
-{ }
+ , popup(popup)
+{
+}
void QQuickPopupTransitionManager::transitionEnter()
{
@@ -95,7 +96,7 @@ void QQuickPopupTransitionManager::transitionEnter()
return;
QList<QQuickStateAction> actions;
state = Enter;
- transition(actions, pp->enter, pp->contentItem);
+ transition(actions, popup->enter, popup->contentItem);
}
void QQuickPopupTransitionManager::transitionExit()
@@ -104,15 +105,15 @@ void QQuickPopupTransitionManager::transitionExit()
return;
QList<QQuickStateAction> actions;
state = Exit;
- transition(actions, pp->exit, pp->contentItem);
+ transition(actions, popup->exit, popup->contentItem);
}
void QQuickPopupTransitionManager::finished()
{
if (state == Enter)
- pp->finalizeEnterTransition();
+ popup->finalizeEnterTransition();
else if (state == Exit)
- pp->finalizeExitTransition();
+ popup->finalizeExitTransition();
state = Off;
}
@@ -127,10 +128,6 @@ QQuickPopup::QQuickPopup(QQuickPopupPrivate &dd, QObject *parent)
{
}
-QQuickPopup::~QQuickPopup()
-{
-}
-
/*!
\qmlmethod void Qt.labs.controls::Popup::open()
@@ -149,33 +146,33 @@ void QQuickPopup::open()
return;
}
- QQuickWindow *win = Q_NULLPTR;
+ QQuickWindow *window = Q_NULLPTR;
QObject *p = parent();
- while (p && !win) {
+ while (p && !window) {
if (QQuickItem *item = qobject_cast<QQuickItem *>(p)) {
- win = item->window();
- if (!win)
+ window = item->window();
+ if (!window)
p = item->parentItem();
} else {
- win = qobject_cast<QQuickWindow *>(p);
- if (!win)
+ window = qobject_cast<QQuickWindow *>(p);
+ if (!window)
p = p->parent();
}
}
- if (!win) {
+ if (!window) {
qmlInfo(this) << "cannot find any window to open popup in.";
return;
}
- if (QQuickApplicationWindow *appWin = qobject_cast<QQuickApplicationWindow*>(win)) {
- d->overlay = static_cast<QQuickOverlay *>(appWin->overlay());
- d->contentItem->setParentItem(d->overlay);
- } else {
+ QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(window);
+ if (!applicationWindow) {
// FIXME Maybe try to open it in that window somehow
qmlInfo(this) << "is not in an ApplicationWindow.";
return;
}
+ d->overlay = static_cast<QQuickOverlay *>(applicationWindow->overlay());
+ d->contentItem->setParentItem(d->overlay);
emit aboutToShow();
d->transitionManager.transitionEnter();
emit visibleChanged();
@@ -189,7 +186,6 @@ void QQuickPopup::open()
void QQuickPopup::close()
{
Q_D(QQuickPopup);
-
if (!d->overlay) {
// TODO This could mean we opened the popup item in a plain QQuickWindow
qmlInfo(this) << "trying to close non-visible Popup.";
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index c8095609..d2c04316 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -69,7 +69,6 @@ class Q_LABSTEMPLATES_EXPORT QQuickPopup : public QObject
public:
explicit QQuickPopup(QObject *parent = Q_NULLPTR);
- ~QQuickPopup();
QQuickItem *contentItem() const;
void setContentItem(QQuickItem *item);
@@ -88,6 +87,10 @@ public:
QQuickTransition *exit() const;
void setExit(QQuickTransition *transition);
+public Q_SLOTS:
+ void open();
+ void close();
+
Q_SIGNALS:
void contentItemChanged();
void focusChanged();
@@ -103,11 +106,6 @@ Q_SIGNALS:
void aboutToShow();
void aboutToHide();
-
-public Q_SLOTS:
- void open();
- void close();
-
protected:
QQuickPopup(QQuickPopupPrivate &dd, QObject *parent);
diff --git a/src/templates/qquickpopup_p_p.h b/src/templates/qquickpopup_p_p.h
index 900ced9b..b0c6d709 100644
--- a/src/templates/qquickpopup_p_p.h
+++ b/src/templates/qquickpopup_p_p.h
@@ -63,7 +63,8 @@ class QQuickOverlay;
class QQuickPopupTransitionManager : public QQuickTransitionManager
{
public:
- QQuickPopupTransitionManager(QQuickPopupPrivate *);
+ QQuickPopupTransitionManager(QQuickPopupPrivate *popup);
+
void transitionEnter();
void transitionExit();
@@ -76,7 +77,7 @@ private:
};
TransitionState state;
- QQuickPopupPrivate *pp;
+ QQuickPopupPrivate *popup;
};
class QQuickPopupPrivate : public QObjectPrivate
@@ -85,15 +86,14 @@ class QQuickPopupPrivate : public QObjectPrivate
public:
QQuickPopupPrivate();
- ~QQuickPopupPrivate();
void finalizeEnterTransition();
void finalizeExitTransition();
- QQuickItem *contentItem;
- QQuickOverlay *overlay;
bool focus;
bool modal;
+ QQuickItem *contentItem;
+ QQuickOverlay *overlay;
QQuickTransition *enter;
QQuickTransition *exit;
QQuickPopupTransitionManager transitionManager;