Skip to content

feat: make QDeepinTheme follow DConfig settings#1005

Open
deepin-wm wants to merge 5 commits into
linuxdeepin:masterfrom
deepin-wm:fix/qdeepintheme-follow-dconfig
Open

feat: make QDeepinTheme follow DConfig settings#1005
deepin-wm wants to merge 5 commits into
linuxdeepin:masterfrom
deepin-wm:fix/qdeepintheme-follow-dconfig

Conversation

@deepin-wm

@deepin-wm deepin-wm commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

增强 QDeepinTheme,让 treeland 自身的光标闪动间隔、双击间隔、系统字体、等宽字体跟随 DConfig 设置。

  1. Override themeHint() to return CursorFlashTime and MouseDoubleClickInterval from TreelandUserConfig
  2. Override font() to return SystemFont and FixedFont based on DConfig font/monoFont/fontSize settings
  3. Add notifyThemeChanged() to trigger Qt theme refresh via QWindowSystemInterface::handleThemeChanged()
  4. Add connectConfigSignals() to bind DConfig change signals to theme refresh, with disconnect on user switch to prevent duplicate connections
  5. Connect Helper::configChanged to reconnect signals when user configuration is rebuilt

WM-25

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @deepin-wm, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

[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.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch 5 times, most recently from 8aa9c67 to 6e93e07 Compare June 18, 2026 06:34
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
Comment thread src/main.cpp Outdated
@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch 7 times, most recently from f9c3c96 to 8aa6adc Compare June 18, 2026 08:52
Comment thread src/deepintheme.cpp
Comment thread src/deepintheme.cpp Outdated
Comment thread src/deepintheme.h Outdated
@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch 3 times, most recently from 49a5a03 to cba3420 Compare June 18, 2026 09:48
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
@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch from cba3420 to ef01bc0 Compare June 18, 2026 10:08
@deepin-bot

deepin-bot Bot commented Jun 22, 2026

Copy link
Copy Markdown

TAG Bot

New tag: 0.8.12
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #1036

@deepin-bot

deepin-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

TAG Bot

New tag: 0.8.13
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #1063

deepin-wm added 2 commits July 1, 2026 18: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
@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch 3 times, most recently from 817aff5 to dad6f0c Compare July 1, 2026 11:24
deepin-wm added 2 commits July 1, 2026 19:47
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>
@deepin-wm deepin-wm force-pushed the fix/qdeepintheme-follow-dconfig branch from dad6f0c to f0deb06 Compare July 1, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants