FyroxEngine/Fyrox · warning

Window name is empty, wrong widget will be used as a tile…

Error message

Window name is empty, wrong widget will be used as a tile content. Assign a unique name to the window used in a docking manager!

What it means

The docking manager's find_window resolves a serialized tile's content by looking up a Window widget by its unique name. If the stored window name is empty it cannot resolve the correct window, emits this warning, and falls back to using whatever handle the lookup yields — the wrong widget may appear as tile content. It signals a docking layout config missing window names.

Solutions

  1. Assign a unique name to every Window used with the docking manager before saving/serializing its layout.
  2. Inspect the layout/config file (docking manager layout JSON) and fill in the empty window name entries.
  3. Re-serialize the layout after windows are named so tiles reference the correct windows.
  4. Guard programmatic window creation with builder .name("unique-id") calls to prevent empty names.

Example fix

// before
let window = WindowBuilder::new(widget_builder)
    // no name set
    .build(&mut ui.build_ctx());
// after
let window = WindowBuilder::new(widget_builder)
    .with_name("MyToolWindow") // unique per docking-managed window
    .build(&mut ui.build_ctx());
Defensive patterns

Strategy: validation

Validate before calling

// Before creating/serializing docking tiles
assert!(!window.widget().name.is_empty(), "docking-managed window must have a unique name");

Prevention

When it happens

Trigger: Deserializing/creating a docking tile layout whose TileDefinition or DockingManagerLayout references windows with an empty name string; create_tile calls find_window with an empty ImmutableString window_name.

Common situations: A docking layout was serialized before windows were named, layout JSON was hand-edited and the name field cleared, or windows created programmatically were never given unique .name values before being registered with the docking manager.

Understand the failure class

Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.

Related errors


AI-assisted analysis of FyroxEngine/Fyrox@76c91aad8e (2026-09-10). Data as JSON: /api/errors/c1e4d141e36f3467. Report an issue: GitHub.

Appendix: source

Thrown at fyrox-ui/src/dock/config.rs:142

            TileContentDescriptor::SplitTiles(tiles) => {
                for tile in tiles.children.iter() {
                    if tile.content.has_window(window) {
                        return true;
                    }
                }
                false
            }
        }
    }
}

fn find_window(
    window_name: &ImmutableString,
    ui: &mut UserInterface,
    windows: &[Handle<Window>],
) -> Handle<Window> {
    if window_name.is_empty() {
        Log::warn(
            "Window name is empty, wrong widget will be used as a \
        tile content. Assign a unique name to the window used in a docking \
        manager!",
        );
    }

    let window_handle = ui
        .find_handle(ui.root(), &mut |n| {
            n.is_or_has_field::<Window>() && n.name == *window_name
        })
        .to_variant();

    if window_handle.is_none() {
        for other_window_handle in windows.iter().cloned() {
            if let Ok(window_node) = ui.try_get(other_window_handle) {
                if &window_node.name == window_name {
                    return other_window_handle;
                }

View on GitHub (pinned to 76c91aad8e)