Summary
The Move Components picker (EditPlacementOverlay) picks up any component under the cursor, regardless of the currently selected copper layer or the View-menu visibility toggles. With "bottom" selected in the layer dropdown and "Show Top Components" toggled off, you can still grab a top-side component by clicking through the now-empty space — but you can't see what you grabbed, and dragging silently moves a component on the wrong side.
Repro
- Open a 2-layer board with components on both top and bottom.
- Layer dropdown → "bottom".
- View ▼ → uncheck "Show Top Components".
- Click "Move Components".
- Click on the empty area where a top-side chip used to be (or anywhere — the hit area is the bounding box, padded).
- → A red highlight appears on a hidden top-side component, and dragging moves it.
Expected
The picker should respect:
- the selected copper layer (don't pick a component on the layer that isn't selected), and
- the visibility toggles (don't pick a component you've explicitly hidden).
Through-hole / via components (which have no layer because they exist on both sides) should remain pickable regardless.
Cause
src/components/EditPlacementOverlay.tsx iterates soup in two places — the onMouseDown click loop and the absolutely-positioned hit-area <div>s — and only tests e.type === "pcb_component" plus a bounding-box hit-test. No layer or visibility check.
Fix
PR coming (stacked on the visibility-toggles feature #756 since that's where is_showing_top_components / is_showing_bottom_components come from). Adds an isPickable() guard used at both call sites that filters by layer and by visibility toggles.
🤖 Generated with Claude Code
Summary
The Move Components picker (
EditPlacementOverlay) picks up any component under the cursor, regardless of the currently selected copper layer or the View-menu visibility toggles. With "bottom" selected in the layer dropdown and "Show Top Components" toggled off, you can still grab a top-side component by clicking through the now-empty space — but you can't see what you grabbed, and dragging silently moves a component on the wrong side.Repro
Expected
The picker should respect:
Through-hole / via components (which have no
layerbecause they exist on both sides) should remain pickable regardless.Cause
src/components/EditPlacementOverlay.tsxiteratessoupin two places — theonMouseDownclick loop and the absolutely-positioned hit-area<div>s — and only testse.type === "pcb_component"plus a bounding-box hit-test. No layer or visibility check.Fix
PR coming (stacked on the visibility-toggles feature #756 since that's where
is_showing_top_components/is_showing_bottom_componentscome from). Adds anisPickable()guard used at both call sites that filters by layer and by visibility toggles.🤖 Generated with Claude Code