diff --git a/bricks/layout.js b/bricks/layout.js index 4fe66b9..41e147c 100644 --- a/bricks/layout.js +++ b/bricks/layout.js @@ -63,6 +63,13 @@ bricks.Layout = class extends bricks.JsWidget { this.selected_item = w; this.selected_item.selected(true); } + unselect_item(w){ + // 与 select_item 对称:仅当 w 是当前选中项时取消选中 + if (this.selected_item === w){ + w.selected(false); + this.selected_item = null; + } + } select_default_item(){ if (!this.keyselectable) return; var w = this.children[0]; diff --git a/bricks/tab.js b/bricks/tab.js index 3e24ef1..1949cc9 100644 --- a/bricks/tab.js +++ b/bricks/tab.js @@ -190,6 +190,7 @@ bricks.TabPanel = class extends bricks.Layout { } this.content_buffer[tdesc.name] = w; } + this._push_tab_history(tdesc.name); this.cur_tab_name = tdesc.name; this.switch_content(w); return; @@ -216,8 +217,10 @@ bricks.TabPanel = class extends bricks.Layout { if (w && this.cur_tab_name === desc.name) this.switch_content(w); } // 动态打开 tab:已存在则切换(默认刷新内容,desc.refresh===false 用缓存), - // 不存在则新增。同步返回:立即切换+高亮,content 异步加载。 - open_tab(desc){ + // 不存在则新增。content 异步加载不阻塞;新增时等 createTool 真正建出按钮 + // 再 toolbar.click —— createTool 是 async(await widgetBuild),若同步 click, + // 新按钮还没进 toolList,click 空转 → active 高亮不切换(2026-09-08 bugfix)。 + async open_tab(desc){ var existing = null; for (var i=0;i=0;i--){ + for (var j=0;j