| 1718 | } |
| 1719 | |
| 1720 | void ThemeManager::declareWidgetTokens(QWidget* widget, const QStringList& tokens) |
| 1721 | { |
| 1722 | if (!widget) return; |
| 1723 | |
| 1724 | // Hook the destroyed() signal exactly once per widget — same convention |
| 1725 | // as applyStyleSheet so the inspector reverse-map never holds a |
| 1726 | // dangling pointer. |
| 1727 | if (!m_trackedWidgets.contains(widget)) { |
| 1728 | connect(widget, &QObject::destroyed, |
| 1729 | this, &ThemeManager::onTrackedWidgetDestroyed); |
| 1730 | } |
| 1731 | // Preserve any regions previously declared for the widget — token |
| 1732 | // updates and region updates are independent facets. |
| 1733 | TrackedWidget ctx = m_trackedWidgets.value(widget); |
| 1734 | ctx.stylesheetTemplate.clear(); |
| 1735 | ctx.tokens = tokens; |
| 1736 | m_trackedWidgets.insert(widget, ctx); |
| 1737 | } |
| 1738 | |
| 1739 | void ThemeManager::declareWidgetRegions(QWidget* widget, |
| 1740 | const QList<ThemeRegion>& regions) |