summaryrefslogtreecommitdiffstats
path: root/src/window-lib/inprocesswindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/window-lib/inprocesswindow.cpp')
-rw-r--r--src/window-lib/inprocesswindow.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/window-lib/inprocesswindow.cpp b/src/window-lib/inprocesswindow.cpp
index 94bb2839..4a508bab 100644
--- a/src/window-lib/inprocesswindow.cpp
+++ b/src/window-lib/inprocesswindow.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "inprocesswindow.h"
+#include "inprocesssurfaceitem.h"
QT_BEGIN_NAMESPACE_AM
@@ -62,38 +63,44 @@ static bool isName(const QByteArray &key)
InProcessWindow::InProcessWindow(const Application *app, QQuickItem *surfaceItem)
: Window(app, surfaceItem)
{
- surfaceItem->installEventFilter(this);
+ auto ipsi = qobject_cast<InProcessSurfaceItem *>(surfaceItem);
+ if (ipsi)
+ m_windowProperties = ipsi->windowProperties();
+ else
+ m_windowProperties.reset(new QObject());
+
+ m_windowProperties->installEventFilter(this);
}
bool InProcessWindow::setWindowProperty(const QString &name, const QVariant &value)
{
QByteArray key = nameToKey(name);
- QVariant oldValue = windowItem()->property(key);
+ QVariant oldValue = m_windowProperties->property(key);
bool changed = !oldValue.isValid() || (oldValue != value);
- if (changed) {
- windowItem()->setProperty(key, value);
- }
+ if (changed)
+ m_windowProperties->setProperty(key, value);
+
return true;
}
QVariant InProcessWindow::windowProperty(const QString &name) const
{
QByteArray key = nameToKey(name);
- return windowItem()->property(key);
+ return m_windowProperties->property(key);
}
QVariantMap InProcessWindow::windowProperties() const
{
- const QList<QByteArray> keys = windowItem()->dynamicPropertyNames();
+ const QList<QByteArray> keys = m_windowProperties->dynamicPropertyNames();
QVariantMap map;
for (const QByteArray &key : keys) {
if (!isName(key))
continue;
- QString name = QString::fromUtf8(key.mid(4));
- map[name] = windowItem()->property(key);
+ QString name = keyToName(key);
+ map[name] = m_windowProperties->property(key);
}
return map;
@@ -101,15 +108,13 @@ QVariantMap InProcessWindow::windowProperties() const
bool InProcessWindow::eventFilter(QObject *o, QEvent *e)
{
- if ((o == windowItem()) && (e->type() == QEvent::DynamicPropertyChange)) {
+ if ((o == m_windowProperties) && (e->type() == QEvent::DynamicPropertyChange)) {
QDynamicPropertyChangeEvent *dpce = static_cast<QDynamicPropertyChangeEvent *>(e);
QByteArray key = dpce->propertyName();
if (isName(key)) {
QString name = keyToName(dpce->propertyName());
- emit windowPropertyChanged(name, windowItem()->property(key));
-
- //qWarning() << "IPW: got change" << name << " --> " << surfaceItem()->property(key).toString();
+ emit windowPropertyChanged(name, m_windowProperties->property(key));
}
}