Skip to content

fix(dock): close legacy tray tooltip on popup destruction#1663

Draft
svan71 wants to merge 1 commit into
linuxdeepin:masterfrom
svan71:agent/fix-legacy-tray-tooltip-destroy
Draft

fix(dock): close legacy tray tooltip on popup destruction#1663
svan71 wants to merge 1 commit into
linuxdeepin:masterfrom
svan71:agent/fix-legacy-tray-tooltip-destroy

Conversation

@svan71

@svan71 svan71 commented Jul 12, 2026

Copy link
Copy Markdown

What changed

Close a legacy tray tooltip directly when its PluginPopup emits
aboutToDestroy.

Fixes linuxdeepin/developer-center#13616.

Root cause

Legacy tray tooltip content is owned by a plugin popup while the translucent
tooltip host is owned by dde-shell. The plugin loader correctly hides and
destroys its popup, but ShellSurfaceItemProxy.onSurfaceDestroyed is not emitted
for this teardown. TrayItemSurfacePopup therefore never closes the shared host,
leaving an empty translucent background after the text disappears.

PluginPopup.aboutToDestroy is the authoritative server-side lifecycle signal
and is emitted immediately before the popup object is deleted. Connecting the
tooltip to that signal closes the host at the correct boundary.

Impact

Legacy tray items such as Volume and Clipboard dismiss their tooltip background
correctly. Native actions such as Quick Actions and Collapse Tray are unchanged.

Validation

  • Captured the complete plugin lifecycle: pointer leave, QWidget/QWindow hide,
    popup-map removal, and PluginPopupSurface destruction all completed.
  • Confirmed the old ShellSurfaceItemProxy.onSurfaceDestroyed handler did not
    run for the plugin popup teardown.
  • Built a clean Arch package from dde-shell 2.0.50 containing only this lifecycle
    connection.
  • Live-tested Volume and Clipboard with the exact straight-down pointer exit;
    both now dismiss cleanly.
  • Rebuilt without diagnostic logging and repeated the live test successfully.

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

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

Hi @svan71. Thanks for your PR. 😃

@deepin-ci-robot

Copy link
Copy Markdown

Hi @svan71. Thanks for your PR.

I'm waiting for a linuxdeepin member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Legacy tray tooltip leaves empty background because popup destruction is not forwarded

2 participants