Skip to content

feat(dconfig-editor): add copy field name in context menu#152

Closed
mhduiy wants to merge 2 commits into
linuxdeepin:masterfrom
mhduiy:master
Closed

feat(dconfig-editor): add copy field name in context menu#152
mhduiy wants to merge 2 commits into
linuxdeepin:masterfrom
mhduiy:master

Conversation

@mhduiy

@mhduiy mhduiy commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Add "copy field name" right-click menu option to copy the field key to clipboard in dde-dconfig-editor.

Changes

  • Added copy field name action to the right-click context menu on the rightmost list
  • Copies the field key name to clipboard on trigger
  • Renamed copyAction to copyValueAction for clarity
  • Added Chinese translation for the new menu item

Test

  • Right-click on a field in the rightmost list → "copy field name" appears in the menu
  • Click it → the field key is copied to clipboard

mhduiy added 2 commits July 8, 2026 13:41
1. Added ExecStartPre to disable Transparent Huge Pages before dconfig daemon starts
2. Uses dde-thp-disable script to prevent THP-related memory issues

Log: Disable THP before dde-dconfig-daemon startup

fix(dde-dconfig-daemon): 服务启动前禁用透明大页

1. 新增 ExecStartPre 在 dconfig daemon 启动前禁用透明大页
2. 通过 dde-thp-disable 脚本避免 THP 导致的内存问题

Log: 在 dde-dconfig-daemon 启动前禁用透明大页
PMS: TASK-390043
1. Added "copy field name" action to the right-click context menu on the rightmost list
2. Copies the field key name to clipboard on trigger
3. Renamed `copyAction` to `copyValueAction` for clarity
4. Added Chinese translation for the new menu item

Log: Add "copy field name" right-click menu option to copy the field key to clipboard

feat(dconfig-editor): 右键菜单新增复制字段名功能

1. 在最右侧列表的右键菜单中新增"复制字段名"选项
2. 点击后将该字段的 key 名称复制到剪贴板
3. 将原有的 `copyAction` 重命名为 `copyValueAction`,避免歧义
4. 添加中文翻译

Log: 在右键菜单中增加复制字段名功能,点击可复制当前字段的 key 到剪贴板

@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 @mhduiy, 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: mhduiy

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-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:95分

■ 【总体评价】

代码实现了右键菜单复制字段名功能增强与系统服务THP优化,逻辑清晰且无安全风险
逻辑正确、质量良好且无安全漏洞,仅因缺少防御性编程检查扣5分

■ 【详细分析】

  • 1.语法逻辑(完全正确)✓

mainwindow.cppContent::onCustomContextMenuRequested 函数中,将原有的 copyAction 合理拆分为 copyFieldActioncopyValueAction。Lambda 表达式通过值捕获 QString 类型的 keyvalue,通过指针捕获 QClipboard,生命周期管理安全,信号槽连接正确,翻译文件 XML 结构合法。
建议:可增加对 QClipboard 指针的空指针防御性检查,提升极端情况下的健壮性

  • 2.代码质量(良好)✓

变量命名 copyFieldActioncopyValueAction 语义明确,符合驼峰命名规范。功能拆分遵循了单一职责原则,使得右键菜单的交互逻辑更加清晰。同时同步更新了 dde-dconfig-editor_zh_CN.ts 翻译文件,保证了国际化支持的完整性。
建议:保持当前的代码组织方式

  • 3.代码性能(无性能问题)✓

新增逻辑仅涉及菜单对象的创建与简单的字符串赋值操作,在用户触发右键菜单时执行,无密集计算、无阻塞系统调用、无额外内存开销,对应用整体性能无影响。
建议:无需优化

  • 4.代码安全(存在0个安全漏洞)✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
代码未引入命令注入、路径遍历或内存越界等安全风险。dde-dconfig-daemon.service 中增加的 ExecStartPre=-/usr/libexec/dde-thp-disable 使用了 - 前缀进行容错处理,依赖系统标准路径下的可执行文件,属于常规的系统级性能调优配置,在标准发行版权限管控下无安全风险。UI 层的剪贴板操作仅限于应用内部获取的配置项字符串,无敏感信息越权泄露风险。
建议:确保部署环境中 /usr/libexec/dde-thp-disable 文件的属主和权限严格限制为 root:root 且不可被其他用户篡改

■ 【改进建议代码示例】

void Content::onCustomContextMenuRequested(QWidget *widget, const QString &appid, const QString &resource, const QString &subpath, const QString &key)
{
    QMenu *menu = new QMenu(widget);

    QAction *exportAction = menu->addAction(tr("export"));
    QAction *copyFieldAction = menu->addAction(tr("copy field name"));
    QAction *copyValueAction = menu->addAction(tr("copy value"));
    QAction *copyCmdAction = menu->addAction(tr("convert to cmd"));
    QAction *resetCmdAction = menu->addAction(tr("reset value"));

    // ... 其他逻辑 ...

    QClipboard *clip = QApplication::clipboard();
    // 增加防御性空指针检查,避免在极端图形环境异常情况下引发崩溃
    if (!clip) {
        qWarning() << "Failed to get system clipboard instance";
        return;
    }

    connect(copyFieldAction, &QAction::triggered, this, [clip, key] {
        clip->setText(key);
    });
    connect(copyValueAction, &QAction::triggered, this, [clip, value] {
        clip->setText(value);
    });
    
    // ... 其他逻辑 ...
}

@mhduiy mhduiy closed this Jul 8, 2026
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.

2 participants