From 7fe52362c4488614a4ebf9a7e47cd5d3f1a13149 Mon Sep 17 00:00:00 2001 From: oliver Date: Tue, 16 Jun 2026 15:11:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(taskbar):=20=E4=BD=BF=E7=94=A8=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E4=BB=BB=E5=8A=A1=E9=A1=B9=E6=95=B0=E9=87=8F=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加一个共享的 syncTaskbarLayout 辅助方法,用于根据当前 DOM 项计算任务栏的数量、显示状态和宽度。 在打开和关闭窗口时使用此辅助方法,以避免使用过时的计数值,并保持任务栏大小和可见性的一致性。 --- desktop.js | 13 ++++++++----- module/window.js | 9 +++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/desktop.js b/desktop.js index 86b5b229..f764b51b 100755 --- a/desktop.js +++ b/desktop.js @@ -1887,6 +1887,12 @@ function geticon(name) { else return name + '.svg'; } +function syncTaskbarLayout() { + const count = $('#taskbar>a').length; + $('#taskbar').attr('count', count); + $('#taskbar').css('display', count == 0 ? 'none' : 'flex'); + $('#taskbar').css('width', 4 + count * (34 + 4)); +} function openapp(name) { if (taskmgrTasks.findIndex(elt => elt.link == name) > -1 && apps.taskmgr.tasks.findIndex(elt => elt.link == name) == -1) { @@ -1901,14 +1907,11 @@ function openapp(name) { } $('.window.' + name).addClass('load'); showwin(name); - $('#taskbar').attr('count', Number($('#taskbar').attr('count')) + 1); $('#taskbar').append(``); - if ($('#taskbar').attr('count') == '1') { - $('#taskbar').css('display', 'flex'); - } + syncTaskbarLayout(); $('#taskbar>.' + name).addClass('foc'); setTimeout(() => { - $('#taskbar').css('width', 4 + $('#taskbar').attr('count') * (34 + 4)); + syncTaskbarLayout(); }, 0); let tmp = name.replace(/\-(\w)/g, function (all, letter) { return letter.toUpperCase(); diff --git a/module/window.js b/module/window.js index 6827db9d..8bcf353f 100644 --- a/module/window.js +++ b/module/window.js @@ -36,13 +36,10 @@ function hidewin(name, arg = 'window') { closeVideo() } if (arg == 'window') { - $('#taskbar').attr('count', Number($('#taskbar').attr('count')) - 1); $('#taskbar>.' + name).remove(); - $('#taskbar').css('width', 4 + $('#taskbar').attr('count') * (34 + 4)); + syncTaskbarLayout(); setTimeout(() => { - if ($('#taskbar').attr('count') == '0') { - $('#taskbar').css('display', 'none'); - } + syncTaskbarLayout(); }, 80); } setTimeout(() => { @@ -496,4 +493,4 @@ function taskbarclick(name) { minwin(name); } focwin(name); -} \ No newline at end of file +}