feat: make QDeepinTheme follow DConfig settings#1005
Conversation
There was a problem hiding this comment.
Sorry @deepin-wm, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: deepin-wm The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
8aa9c67 to
6e93e07
Compare
| // Notify all top-level windows about the theme change | ||
| for (auto *window : QGuiApplication::topLevelWindows()) { | ||
| QEvent event(QEvent::ThemeChange); | ||
| QCoreApplication::sendEvent(static_cast<QObject*>(window), &event); |
There was a problem hiding this comment.
这样做意义不大,应该调用 QGuiApplicationPrivate::handleThemeChanged ,而且应该只在theme icon等相关变化时才调用。
There was a problem hiding this comment.
QGuiApplicationPrivate::handleThemeChanged() is a protected method and cannot be called from QDeepinTheme (which is not a subclass of QGuiApplicationPrivate). This caused a build failure in CI (Qt 6.11.1). As an alternative, QCoreApplication::postEvent(qGuiApp, new QEvent(QEvent::ThemeChange)) is used, which is functionally equivalent — Qt internally delivers the event and eventually calls handleThemeChanged(), just asynchronously.
f9c3c96 to
8aa6adc
Compare
49a5a03 to
cba3420
Compare
Implement QDeepinTheme that reads DConfig settings and applies them to the Qt platform theme, so QPA follows treeland user preferences. - Split QDeepinTheme to separate deepintheme.h/.cpp files - Track connections via QMetaObject::Connection for proper cleanup - Disconnect only own connections from old config on rebind - Use QStyleHints setters for properties that have them: setCursorFlashTime, setMouseDoubleClickInterval, setStartDragDistance, setColorScheme - Set font via QGuiApplication::setFont(), only on font changes - Use QGuiApplicationPrivate::handleThemeChanged() for theme/icon changes - Support: cursorBlink/cursorBlinkTime, doubleClickTime, doubleClickDistance, dndDragThreshold, font/monoFont/fontSize, iconThemeName, themeName, preferDark, cursorThemeName
cba3420 to
ef01bc0
Compare
|
TAG Bot New tag: 0.8.12 |
|
TAG Bot New tag: 0.8.13 |
- Replace QCoreApplication::postEvent(ThemeChange) with QGuiApplicationPrivate::handleThemeChanged() in applyThemeSettings() - Supplement themeHint() with CursorFlashTime, MouseDoubleClickInterval, MouseCursorSize, KeyboardAutoRepeatRate, KeyboardInputInterval - Add bindSeatConfig/applyKeyboardSettings/disconnectSeatConfig for keyboard settings via SeatUserDConfig using QStyleHints::setXXX - Connect cursorSizeChanged to applyThemeSettings() in bindConfig() - Add InputManager::seatConfigChanged signal emitted from setupSeatUserConfig() - Connect InputManager::seatConfigChanged to QDeepinTheme::bindSeatConfig in main.cpp - Add Helper::inputManager() getter
- MouseCursorSize: return QSizeF instead of int for Qt toSizeF() compatibility - doubleClickDistanceChanged: connect to applyThemeSettings() instead of applyStyleHintSettings() - cursorThemeNameChanged: connect to applyThemeSettings() instead of applyStyleHintSettings() - Remove unused #include <functional> from deepintheme.h
817aff5 to
dad6f0c
Compare
QGuiApplicationPrivate::handleThemeChanged() is protected in Qt 6.11.1 and cannot be called from QDeepinTheme. Revert to QCoreApplication::postEvent(ThemeChange) which is the public API.
- Replace protected QGuiApplicationPrivate::handleThemeChanged() with QCoreApplication::postEvent(ThemeChange) which is the public API - Add missing setKeyboardAutoRepeatRate() call in applyKeyboardSettings() - Remove unused #include <private/qguiapplication_p.h>
dad6f0c to
f0deb06
Compare
增强 QDeepinTheme,让 treeland 自身的光标闪动间隔、双击间隔、系统字体、等宽字体跟随 DConfig 设置。
WM-25