Skip to content

fix(view): lazily create nondefault thumbnail views#457

Merged
wyu71 merged 1 commit into
linuxdeepin:masterfrom
wyu71:master
Jul 15, 2026
Merged

fix(view): lazily create nondefault thumbnail views#457
wyu71 merged 1 commit into
linuxdeepin:masterfrom
wyu71:master

Conversation

@wyu71

@wyu71 wyu71 commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Create nondefault thumbnail views on first selection and keep them loaded. 仅在首次选择时创建非默认缩略图视图,并在之后保持加载。

Log: 延后非默认缩略图视图与日视图的创建
Influence: 应用启动时间和首次切换各缩略图视图

Create nondefault thumbnail views on first selection and keep them loaded.
仅在首次选择时创建非默认缩略图视图,并在之后保持加载。

Log: 延后非默认缩略图视图与日视图的创建
Influence: 应用启动时间和首次切换各缩略图视图

@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 @wyu71, 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

deepin pr auto review

★ 总体评分:95分

■ 【总体评价】

代码通过移除不可靠的Timer预加载机制,改为按需加载并永久保留视图,有效解决了窗口map阻塞导致的图标闪烁问题。
逻辑正确且显著提升了启动性能,代码结构更加清晰,无安全漏洞。

■ 【详细分析】

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

修改涉及CollecttionView.qml、DeferredView.qml和ThumbnailImage.qml。移除了原有的Timer和ready属性,引入了loadedOnce和dayLoadedOnce状态变量。在DeferredView.qml中,active绑定改为loadedOnce || GStatus.currentViewType === viewType,并在onLoaded回调中将loadedOnce置为true,确保视图首次加载后永久保留。在CollecttionView.qml中,dayCollectionLoader的active绑定改为currentViewIndex === 2 || dayLoadedOnce,逻辑自洽,无语法错误。
潜在问题:无
建议:无需修改

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

移除了ThumbnailImage.qml中冗余的viewDelayTimer和delayedViewsReady逻辑,简化了各个DeferredView的声明,去除了重复的ready: delayedViewsReady绑定。注释也相应更新,准确描述了按需加载的策略。变量命名如loadedOnce和dayLoadedOnce清晰表达了意图。
潜在问题:无
建议:无需修改

  • 3.代码性能(高效)✓

原代码在启动时通过1ms Timer尝试预加载8个含QWidget的重视图,由于Timer触发时机不可控,可能阻塞窗口map导致dock超时。修改后,启动时仅创建默认的CollecttionView,其余视图延迟到用户首次交互时按需创建,消除了启动期的性能瓶颈,显著提升了应用启动速度和用户体验。
潜在问题:无
建议:无需修改

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

存在0个安全漏洞
漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
本次修改为纯QML前端UI加载逻辑调整,不涉及外部输入处理、文件操作或网络请求,无攻击面。

  • 建议:无需修改

■ 【改进建议代码示例】

// 当前代码逻辑已较为完善,无需额外修复,以下为确认后的核心逻辑:
diff --git a/src/qml/ThumbnailImageView/DeferredView.qml b/src/qml/ThumbnailImageView/DeferredView.qml
--- a/src/qml/ThumbnailImageView/DeferredView.qml
+++ b/src/qml/ThumbnailImageView/DeferredView.qml
@@ -5,16 +5,14 @@
 Loader {
     property int viewType: -1
     property bool loadedOnce: false
 
     anchors.fill: parent
     asynchronous: false
     active: loadedOnce || GStatus.currentViewType === viewType
     onLoaded: loadedOnce = true
 }

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: pengfeixx, wyu71

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

@wyu71
wyu71 merged commit 352e317 into linuxdeepin:master Jul 15, 2026
20 checks passed
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