aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/imports/nativestyle/items/qquickstyleitem.cpp16
-rw-r--r--src/imports/nativestyle/items/qquickstyleitem.h1
2 files changed, 15 insertions, 2 deletions
diff --git a/src/imports/nativestyle/items/qquickstyleitem.cpp b/src/imports/nativestyle/items/qquickstyleitem.cpp
index cabc6631..0cc94b42 100644
--- a/src/imports/nativestyle/items/qquickstyleitem.cpp
+++ b/src/imports/nativestyle/items/qquickstyleitem.cpp
@@ -113,8 +113,11 @@ void QQuickStyleItem::connectToControl() const
{
connect(m_control, &QQuickStyleItem::enabledChanged, this, &QQuickStyleItem::markImageDirty);
connect(m_control, &QQuickItem::activeFocusChanged, this, &QQuickStyleItem::markImageDirty);
- connect(m_control, &QQuickStyleItem::windowChanged, this, &QQuickStyleItem::markImageDirty);
- connect(window(), &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty);
+
+ if (QQuickWindow *win = window()) {
+ connect(win, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty);
+ m_connectedWindow = win;
+ }
}
void QQuickStyleItem::markImageDirty()
@@ -253,6 +256,15 @@ void QQuickStyleItem::itemChange(QQuickItem::ItemChange change, const QQuickItem
if (data.boolValue)
markImageDirty();
break;
+ case QQuickItem::ItemSceneChange: {
+ markImageDirty();
+ QQuickWindow *win = data.window;
+ if (m_connectedWindow)
+ disconnect(m_connectedWindow, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty);
+ if (win)
+ connect(win, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty);
+ m_connectedWindow = win;
+ break;}
default:
break;
}
diff --git a/src/imports/nativestyle/items/qquickstyleitem.h b/src/imports/nativestyle/items/qquickstyleitem.h
index 0a89454b..e262055f 100644
--- a/src/imports/nativestyle/items/qquickstyleitem.h
+++ b/src/imports/nativestyle/items/qquickstyleitem.h
@@ -285,6 +285,7 @@ private:
DirtyFlags m_dirty = Everything;
bool m_useNinePatchImage = true;
bool m_polishing = false;
+ mutable QQuickWindow *m_connectedWindow = nullptr;
#ifdef Q_OS_MACOS
int m_transitionDuration = 150;