feat(editor): tab-aware action strip + simpler tap handling

Reposition the per-tab action buttons under the TabBar so the
operator's eye flows TabBar → context buttons → canvas. Graph
keeps Add-Step + Save + Run, Text trims to Save + Run, Run
hides them entirely (the Run tab has its own start button).

Drop the outer wrapping GestureDetector that competed with the
inner Positioned.fill detector inside the canvas Stack — two
TapGestureRecognizers in the same arena meant the inner one
sometimes lost edge-tap and background-tap.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-02 16:32:27 +02:00
parent 59aa8fe78e
commit 73736769a0
3 changed files with 106 additions and 69 deletions

View file

@ -429,26 +429,6 @@ class _FlowCanvasState extends State<FlowCanvas>
: BoxDecoration(color: theme.colorScheme.surface),
child: Stack(
children: [
// Outer-most tap layer catches clicks on the
// dark area OUTSIDE the canvas grid (when the
// operator has panned / zoomed so the grid
// doesn't fill the viewport). Translucent so
// InteractiveViewer below still handles pan +
// zoom; the gesture arena gives the tap to
// whichever child claims it first, and on
// canvas-empty pointers nobody else does.
Positioned.fill(
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
// Deselect both step + edge so the
// properties panel closes when the operator
// clicks the empty backdrop.
widget.controller.selectStep(null);
widget.controller.selectEdge(null);
},
),
),
InteractiveViewer(
transformationController: _transform,
constrained: false,