bevyengine/bevy · error

DiagnosticsOverlay has been tempered with. Node must have `t

Error message

DiagnosticsOverlay has been tempered with. Node must have `top` using `Val::Px`.

What it means

Panic in drag_by_header: the dragged overlay's Node.top style is not Val::Px, so the header-drag system cannot apply the pixel delta to reposition the overlay. Fires only if the overlay node's style was changed after the plugin created it.

Source

Thrown at crates/bevy_dev_tools/src/diagnostics_overlay.rs:443

            )
        ],
    ));
}

fn drag_by_header(
    mut event: On<PointerDrag>,
    mut diagnostics_overlays: Query<&mut Node, With<DiagnosticsOverlay>>,
    diagnostics_overlay_headers: Query<&ChildOf, With<DiagnosticsOverlayHeader>>,
) {
    let entity = event.entity;
    if let Ok(child_of) = diagnostics_overlay_headers.get(entity) {
        event.propagate(false);
        let Ok(mut node) = diagnostics_overlays.get_mut(child_of.get()) else {
            panic!("DiagnosticsOverlayHeader has been tempered with. Parent was not a DiagnosticsOverlay.");
        };
        let delta = event.delta;
        let Val::Px(top) = &mut node.top else {
            panic!(
                "DiagnosticsOverlay has been tempered with. Node must have `top` using `Val::Px`."
            );
        };
        *top += delta.y;
        let Val::Px(left) = &mut node.left else {
            panic!(
                "DiagnosticsOverlay has been tempered with. Node must have `left` using `Val::Px`."
            );
        };
        *left += delta.x;
    }
}

fn collapse_on_click_to_header(
    mut event: On<PointerClick>,
    mut diagnostics_overlays: Query<&Children, With<DiagnosticsOverlay>>,
    mut diagnostics_overlay_contents: Query<&mut Node, With<DiagnosticsOverlayContents>>,
    diagnostics_overlay_header: Query<&ChildOf, With<DiagnosticsOverlayHeader>>,

View on GitHub (pinned to 396ca72708)

Solutions

  1. Keep the overlay Node positioned with Val::Px top/left
  2. Restore default styling or rebuild the overlay via the plugin
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/bevy_dev_tools/src/diagnostics_overlay.rs:443 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20). Data as JSON: /api/errors/dde878563acb00db. Report an issue: GitHub.