slint/internal/compiler/tests/syntax/basic/layout2.slint
David Faure ba89ae53b8 GridLayout: keep row/col/rowspan/colspan properties specified by the user
When an item in a grid layout specifies row or col, this property is no
longer removed by the compiler.

That's the one liner that changes removes() with get(), but the side
effect of that is that the code that checks that no row/col/etc.
property is still there afterwards (to give compile-time errors)
had to be improved to check if this is an item inside of a grid layout,
since the property stays now.
2025-09-22 11:46:56 +02:00

57 lines
2.2 KiB
Text

// 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
export X := Rectangle {
// ^warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
lay := GridLayout {
property<string> foo: "hello";
Row {
Text {
text: lay.foo + parent.width;
// ^error{Element 'Row' does not have a property 'width'}
colspan: 1 + 1;
// ^error{'colspan' must be an integer literal}
rowspan: 2;
}
Text {
row: 3;
col: -2;
// ^error{'col' must be an integer literal}
rowspan: 2.2;
// ^error{'rowspan' must be a positive integer}
y: 0;
// ^error{The property 'y' cannot be set for elements placed in this layout, because the layout is already setting it}
animate x { duration: 100ms; }
// ^error{The property 'x' cannot be set for elements placed in this layout, because the layout is already setting it}
init => {
self.colspan = 45;
// ^error{The property must be known at compile time and cannot be changed at runtime}
}
}
}
Row {
Text {
x: 12px;
// ^error{The property 'x' cannot be set for elements placed in this layout, because the layout is already setting it}
}}
Text{
row: 200000; // that's actually bigger than 65535
// ^error{'row' must be a positive integer}
Rectangle { row: 3; }
// ^error{row used outside of a GridLayout}
}
}
Text { colspan: 3; }
// ^error{colspan used outside of a GridLayout}
col: 3;
// ^error{col used outside of a GridLayout}
HorizontalLayout {
col: 3;
// ^error{col used outside of a GridLayout}
}
}