3e79b09fece90f516f055bbdb0d6e147b490c047
The panel has to say what the left button does right now -- "Place" or "Apply settings", "Select" or "Toggle deconstruct" -- and that answer lived in the if-chain at the top of mousePressEvent, where the panel could not reach it. So the chain becomes a switch on the resolved action, and the panel will read the same resolver. Which branch runs is now decided in one place; what each branch does is untouched, drag state machines and all. Right-click gets the clearest win: cancel-the-drag versus leave-the-mode was two nested conditions inspecting belt state, and is now the two actions the table already distinguishes for the panel's sake. Ctrl variants fall back to the plain gesture wherever nothing claims them, which is what keeps Ctrl+click placing a building in builder mode and Ctrl+drag deconstructing an area -- the modifier means something only where an action says it does, rather than every handler re-deciding whether to ignore it. Behaviour is unchanged. Full suite passes; the app runs clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YHcUerKAZKWNvSKJxYKbnG
Description
No description provided
Languages
C++
96%
CMake
2.2%
Python
1.2%
C
0.6%