// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.2 OR LicenseRef-Slint-commercial

Wrap := Rectangle {
    property woo <=> text.wrap;

    VerticalLayout {
//  ^error{The binding for the property 'layout-cache' is part of a binding loop}
//  ^^error{The binding for the property 'height' is part of a binding loop}
        HorizontalLayout {
//      ^error{The binding for the property 'layout-cache' is part of a binding loop}
//      ^^error{The binding for the property 'width' is part of a binding loop}
//      ^^^error{The binding for the property 'layoutinfo-v' is part of a binding loop}
            text := Text {
                text: "Hello World";
            }
            square := Rectangle {
//                    ^error{The binding for the property 'height' is part of a binding loop}
                width: height;
//                     ^error{The binding for the property 'width' is part of a binding loop}
                background: violet;
            }
        }
        Rectangle {}
    }
    property <bool> test: square.width == square.height;
}

export Test := Rectangle {
    property <image> source;
    GridLayout {
//  ^error{The binding for the property 'layout-cache-h' is part of a binding loop}
//  ^^error{The binding for the property 'width' is part of a binding loop}
//  ^^^error{The binding for the property 'layout-cache-v' is part of a binding loop}
//  ^^^^error{The binding for the property 'height' is part of a binding loop}
        Image {
            source: root.source;
        }
        Rectangle {
            width: height;
//                 ^error{The binding for the property 'width' is part of a binding loop}
        }
    }

    w := Wrap { }
    callback set_wrap();
    set_wrap => { w.woo = TextWrap.word-wrap; }

}
