diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/nativestyle/items/qquickstyleitem.cpp | 16 | ||||
-rw-r--r-- | src/imports/nativestyle/items/qquickstyleitem.h | 1 |
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; |