From 2f6ed1150baf340d80d3351202ad11da7059314c Mon Sep 17 00:00:00 2001 From: Steve <48870638+svan71@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:54:38 -0400 Subject: [PATCH] Fix unmounted volume's name staying on screen after its icon is removed The mount reconciler dropped a stale icon with _extraIcons.remove_child(), which unparents the item without destroying it. DashItemContainer's label is parented to the chrome rather than to the item, and _cleanupIcon() - which unparents that label and drops the item's menu actor from Main.uiGroup - only ever runs from the icon's 'destroy' handler. Unparenting never fires it, so the label was left in the chrome, and since the item was no longer in _icons the animator never reset its opacity either. Hovering a mount icon to reach its Unmount action therefore left the volume's name floating over the desktop for the rest of the session. --- dock.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dock.js b/dock.js index d3202ad..b6526cc 100644 --- a/dock.js +++ b/dock.js @@ -873,7 +873,16 @@ export let Dock = GObject.registerClass( return; } if (!mounted.includes(extra._mountPath)) { + // the label is parented to the chrome, not to the item, so + // remove_child() leaves it on screen at whatever opacity the + // animator last gave it - 255 whenever the icon was hovered to + // reach its Unmount action. _cleanupIcon() is the existing + // teardown for that, but it only ever ran from the icon's + // 'destroy' handler, which unparenting never triggers. + extra._label = extra._label || extra.label; + this._cleanupIcon(extra); this._extraIcons.remove_child(extra); + extra.destroy(); this._icons = null; } });