diff options
author | Shawn Rutledge <shawn.rutledge@digia.com> | 2013-04-18 12:30:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-26 12:06:20 +0200 |
commit | 4e2153a1d5056249fc31e23890d8c525a3986e1b (patch) | |
tree | 6fe37d445255bf2baac7a9cc06ae924a01277e48 /src/imports/dialogs/qquickabstractdialog_p.h | |
parent | a4754a30abc6f650885cbd20d0419da26a504220 (diff) |
Declarative dialog improvements for the non-Window use case
Platforms like Android and EGL don't support multiple top-level
windows, so we have to avoid trying to use widget-based dialogs
(because a widget dialog on top of a scene graph will result in a
second window), allow the QML dialog to be an Item, and decorate it
to look like a window.
Task-number: QTBUG-31898
Change-Id: I9af049f3265188e8be677a05a8bc6d1699b4cd00
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src/imports/dialogs/qquickabstractdialog_p.h')
-rw-r--r-- | src/imports/dialogs/qquickabstractdialog_p.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/imports/dialogs/qquickabstractdialog_p.h b/src/imports/dialogs/qquickabstractdialog_p.h index 2ad24f98e0..ef20333479 100644 --- a/src/imports/dialogs/qquickabstractdialog_p.h +++ b/src/imports/dialogs/qquickabstractdialog_p.h @@ -66,6 +66,7 @@ class QQuickAbstractDialog : public QObject Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibilityChanged) Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged) Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) + Q_PROPERTY(bool isWindow READ isWindow CONSTANT) Q_PROPERTY(int x READ x WRITE setX NOTIFY geometryChanged) Q_PROPERTY(int y READ y WRITE setY NOTIFY geometryChanged) Q_PROPERTY(int width READ width WRITE setWidth NOTIFY geometryChanged) @@ -89,6 +90,7 @@ public: virtual void setModality(Qt::WindowModality m); virtual void setTitle(QString t) = 0; void setQmlImplementation(QObject* obj); + bool isWindow() const { return m_hasNativeWindows; } void setX(int arg); void setY(int arg); void setWidth(int arg); @@ -107,6 +109,7 @@ Q_SIGNALS: void rejected(); protected Q_SLOTS: + void decorationLoaded(); void accept(); void reject(); void visibleChanged(bool v); @@ -124,6 +127,13 @@ protected: protected: // variables for pure-QML implementations only QObject *m_qmlImplementation; QWindow *m_dialogWindow; + QQuickItem *m_contentItem; + QQuickItem *m_windowDecoration; + bool m_hasNativeWindows; + + static QQmlComponent *m_decorationComponent; + + friend class QtQuick2DialogsPlugin; Q_DISABLE_COPY(QQuickAbstractDialog) }; |