i-slint-compiler 1.18.1

Internal Slint Compiler Library
Documentation
// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0

// cSpell: ignore Unnamespaced
export component Def {
    // Unnamespaced access
    TouchArea {
        mouse-cursor: ew-resize;
    }

    // Namespaced access
    TouchArea {
        mouse-cursor: MouseCursor.ew-resize;
    }

    // Custom cursor macro
    TouchArea {
        mouse-cursor: MouseCursor.custom(@image-url("cursor.png"), 0, 0);
    }

    // Custom cursor macro (without namespace)
    TouchArea {
        mouse-cursor: custom(@image-url("cursor.png"), 0, 0);
    }

    // Custom cursor macro (simple properties)
    TouchArea {
        property <image> cursor: @image-url("cursor.png");

        mouse-cursor: custom(cursor, 0, 0);
    }

    // Custom cursor macro (conditional properties)
    TouchArea {
        property <bool> cross-cursor: false;
        property <image> cursor: cross-cursor ? @image-url("cross.png") : @image-url("cursor.png");
        property <int> hotspot-x: cross-cursor ? 5 : 0;
        property <int> hotspot-y: cross-cursor ? 5 : 0;

        mouse-cursor: custom(cursor, hotspot-x, hotspot-y);
    }

    // Invalid unnamespaced access
    TouchArea {
        mouse-cursor: square-resize;
//                    >           <error{Unknown unqualified identifier 'square-resize'}
    }

    // Invalid namespaced access
    TouchArea {
        mouse-cursor: MouseCursor.square-resize;
//                                >           <error{'square-resize' is not a member of the namespace MouseCursor}
    }

    // Custom cursor macro (too many arguments)
    TouchArea {
        mouse-cursor: MouseCursor.custom(@image-url("cursor.png"), 0, 0, 0);
//                                                                       ^error{Too many arguments for custom cursor}
    }

    // Custom cursor macro (one missing argument)
    TouchArea {
        mouse-cursor: MouseCursor.custom(@image-url("cursor.png"), 0);
//                                >    <error{Not enough arguments}
    }

    // Custom cursor macro (two missing arguments)
    TouchArea {
        mouse-cursor: MouseCursor.custom(@image-url("cursor.png"));
//                                >    <error{Not enough arguments}
    }

    // Custom cursor macro (missing all arguments)
    TouchArea {
        mouse-cursor: MouseCursor.custom();
//                                >    <error{Not enough arguments}
    }

    // Custom cursor macro (not called)
    TouchArea {
        mouse-cursor: MouseCursor.custom;
//                    >                <error{Builtin function must be called. Did you forgot the '()'?}
    }

    // MouseCursor-type property
    TouchArea {
        property <MouseCursor> current-cursor: MouseCursor.default;

        mouse-cursor: current-cursor;
    }

    // Property assignment
    TouchArea {
        clicked => { self.mouse-cursor = MouseCursor.ew-resize; }
    }
}