From 86ef9c7fbcc2798d4436dc8bab78143153a11c60 Mon Sep 17 00:00:00 2001 From: Wu JiangYu Date: Tue, 29 Sep 2026 16:53:58 +0800 Subject: [PATCH] feat: add window blur control to DialogWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Add enableBehindWindowBlur property to DialogWindow with default true 2. Bind StyledBehindWindowBlur visibility to this new property 3. Disable behind window blur in SettingsDialog for better performance 4. Set SettingsDialog background to palette.base instead of transparent 5. Add rounded corner styling to SettingsDialog content background 6. Enable clipping on navigation and content ListViews to prevent overflow 7. Restructure content padding using individual padding properties Log: Added blur control option for dialog windows and improved settings dialog appearance Influence: 1. Test dialog windows with blur enabled/disabled to verify visual effects 2. Verify SettingsDialog displays correctly without blur effect 3. Check rounded corner appearance on settings content background 4. Test navigation list scrolling with clip enabled 5. Verify content list scrolling behavior with clip property 6. Test dialog window on different platforms for blur compatibility 7. Verify padding changes don't break layout on various screen sizes feat: 为 DialogWindow 添加窗口模糊控制 1. 为 DialogWindow 添加 enableBehindWindowBlur 属性,默认值为 true 2. 将 StyledBehindWindowBlur 的可见性绑定到新属性 3. 在 SettingsDialog 中禁用窗口后模糊以提升性能 4. 将 SettingsDialog 背景设置为 palette.base 而非透明 5. 为 SettingsDialog 内容背景添加圆角样式 6. 启用导航和内容 ListView 的裁剪以防止溢出 7. 使用独立的内边距属性重构内容布局 Log: 新增对话框窗口模糊控制选项并改进设置对话框外观 Influence: 1. 测试启用/禁用模糊效果的对话框窗口,验证视觉效果 2. 验证 SettingsDialog 在无模糊效果下的显示是否正确 3. 检查设置内容背景的圆角外观 4. 测试启用裁剪后的导航列表滚动 5. 验证内容列表在裁剪属性下的滚动行为 6. 在不同平台上测试对话框窗口的模糊兼容性 7. 验证内边距更改不会在各种屏幕尺寸下破坏布局 PMS: BUG-378325 --- qt6/src/qml/DialogWindow.qml | 2 ++ qt6/src/qml/settings/SettingsDialog.qml | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/qt6/src/qml/DialogWindow.qml b/qt6/src/qml/DialogWindow.qml index 5e5b899e8..ff77d5c0a 100644 --- a/qt6/src/qml/DialogWindow.qml +++ b/qt6/src/qml/DialogWindow.qml @@ -21,6 +21,7 @@ Window { D.DWindow.wmWindowTypes: D.WindowManagerHelper.DialogType flags: Qt.Dialog | Qt.WindowCloseButtonHint | Qt.MSWindowsFixedSizeDialogHint D.ColorSelector.family: D.Palette.CrystalColor + property bool enableBehindWindowBlur: true color: "transparent" height: content.height width: content.width @@ -34,6 +35,7 @@ Window { property real topPadding: title === "" ? 0 : DS.Style.dialogWindow.contentVMargin D.StyledBehindWindowBlur { + visible: control.enableBehindWindowBlur control: control anchors.fill: parent blendColor: { diff --git a/qt6/src/qml/settings/SettingsDialog.qml b/qt6/src/qml/settings/SettingsDialog.qml index e11726df0..6b67d514a 100644 --- a/qt6/src/qml/settings/SettingsDialog.qml +++ b/qt6/src/qml/settings/SettingsDialog.qml @@ -10,6 +10,8 @@ import org.deepin.dtk 1.0 DialogWindow { id: control + enableBehindWindowBlur: false + color: palette.base property list groups property QtObject config @@ -39,6 +41,7 @@ DialogWindow { ListView { id: navigationView + clip: true model: container.navigationModel leftMargin: DS.Style.settings.navigation.margin rightMargin: DS.Style.settings.navigation.margin @@ -57,14 +60,30 @@ DialogWindow { left: navigationBg.right top: control.top } - padding: DS.Style.settings.content.margin + height: Math.max(0, control.height - parent.y) + leftPadding: DS.Style.settings.content.margin + rightPadding: DS.Style.settings.content.margin + topPadding: DS.Style.settings.content.margin + bottomPadding: DS.Style.settings.content.margin background: Rectangle { anchors.fill: parent - color: palette.base + color: palette.window + radius: DS.Style.control.radius + Rectangle { + anchors { + fill: parent + leftMargin: contentBg.leftPadding + rightMargin: contentBg.rightPadding + topMargin: contentBg.topPadding + bottomMargin: contentBg.bottomPadding + } + color: palette.base + } } ListView { id: contentView + clip: true model: container.contentModel highlightRangeMode: ListView.StrictlyEnforceRange currentIndex: 0