// 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; }
}
}