// Copyright © SixtyFPS GmbH // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.0 OR LicenseRef-Slint-commercial export X := Rectangle { forward-focus: someRect; // ^error{element is not focusable} callback trigger_focus_change(); trigger_focus_change => { someRect.focus(); // ^error{focus\(\) can only be called on focusable elements} } indirect_focus_chain_rect := Rectangle { forward-focus: someRect; // ^error{element is not focusable} } callback trigger_focus_change_2(); trigger_focus_change_2 => { indirect_focus_chain_rect.focus(); // ^error{focus\(\) can only be called on focusable elements} } someRect := Rectangle {} someFocusScope := FocusScope {} callback activate_focus_scope(); activate_focus_scope => { someFocusScope.focus(); // OK! } } export Y := FocusScope { forward-focus: self; // ^error{forward-focus can't refer to itself} x:= X { } key-pressed => { r0.focus(); x.focus(); // ^error{focus\(\) can only be called on focusable elements} accept } r1:= Rectangle { forward-focus: r2; } r0:= Rectangle { forward-focus: r1; } r2 := Rectangle { forward-focus: r3; } r3 := Rectangle { forward-focus: r1; // ^error{forward-focus loop} } }