fix(closeout): address closure-review findings
- gate keybind pill-sync on IsChannelOrExistingLinkshell so an empty linkshell slot no longer desyncs the pill from the real send channel - close manually-popped pop-out windows on logout via an IsOpen filter instead of the PopOut flag (which manual pops never set) - read the router's tell-tab lookup through a lock-wrapped accessor so the framework thread cannot enumerate Config.Tabs mid worker-thread mutation - add a "switch on every tell" toggle (default on) and make the auto-open mode pick the matching layout, so Sidebar vs Top-tab are distinct - comment corrections (stale/contradictory text, TEST-MIRROR path depth)
This commit is contained in:
@@ -54,6 +54,11 @@ internal sealed class ChannelsTab
|
||||
if (ImGui.CollapsingHeader("Tell auto-open mode", ImGuiTreeNodeFlags.DefaultOpen))
|
||||
{
|
||||
DrawTellAutoOpenModeCombo();
|
||||
DrawToggle(
|
||||
"Switch to the tab on every tell",
|
||||
() => Plugin.Config.TellAutoOpenSwitchAlways,
|
||||
v => Plugin.Config.TellAutoOpenSwitchAlways = v
|
||||
);
|
||||
}
|
||||
|
||||
if (ImGui.CollapsingHeader("Sidebar"))
|
||||
|
||||
@@ -161,8 +161,8 @@ internal sealed class MainWindow : Window
|
||||
}
|
||||
|
||||
// Tab-cycle entry point for the ChatTabForward/Backward keybinds. Empty list is a
|
||||
// no-op; a null active tab seeds tabs[0]; a single-tab cycle that lands on the
|
||||
// already-active tab is a no-op (ActivateTab early-returns on the same reference).
|
||||
// no-op; a null active tab seeds the index to 0; a single-tab cycle that lands on
|
||||
// the already-active tab is a no-op (ActivateTab early-returns on the same reference).
|
||||
// Routes through ActivateTab so the cycle strips stale tell state + re-derives the
|
||||
// channel exactly like a sidebar/top-tab click. Pop-out focus-forward stays
|
||||
// deferred (no focus contract) — main-window tabs only.
|
||||
|
||||
Reference in New Issue
Block a user