pragma ComponentBehavior: Bound import QtQuick import TNCat // Root is not a window. Exactly one of the two layouts is built, because both // of them drive the controller's catCenter; having both alive made the two // bindings overwrite each other every frame and the eyes jumped with them. QtObject { id: app required property CatController cat required property AppSettings settings function openSettings() { settingsWindow.show() settingsWindow.raise() settingsWindow.requestActivate() } readonly property Loader desktopLoader: Loader { active: !Platform.overlayMode sourceComponent: Desktop { cat: app.cat settings: app.settings onSettingsRequested: app.openSettings() } } readonly property Loader overlayLoader: Loader { active: Platform.overlayMode sourceComponent: OverlayWindow { cat: app.cat settings: app.settings overlayActive: true onSettingsRequested: app.openSettings() } } readonly property SettingsWindow settingsWindow: SettingsWindow { cat: app.cat settings: app.settings } }