2 * Copyright 2014 Canonical Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 import Ubuntu.Components 1.1
19 import Ubuntu.Gestures 0.1 // For TouchGate
23 objectName: "surfaceContainer"
24 property Item surface: null
25 property bool hadSurface: false
26 property int orientation
27 property bool interactive
31 surface.parent = root;
32 d.forceSurfaceActiveFocusIfReady();
37 Binding { target: surface; property: "anchors.fill"; value: root }
38 Binding { target: surface; property: "orientation"; value: root.orientation }
39 Binding { target: surface; property: "z"; value: 1 }
40 Binding { target: surface; property: "enabled"; value: root.interactive; when: surface }
41 Binding { target: surface; property: "focus"; value: root.interactive; when: surface }
42 Binding { target: surface; property: "antialiasing"; value: !root.interactive; when: surface }
47 enabled: root.surface ? root.surface.enabled : false
53 // FIXME: I would rather not need to do this, but currently it doesn't get
54 // active focus without it and I don't know why.
55 // Possibly because if an item get focus=true before it has a parent, once
56 // it gets a parent QQuickWindow won't check its focus and update its activeFocus
57 // accordingly. Unlike when you focus=true after the item already has a parent.
58 onFocusChanged: d.forceSurfaceActiveFocusIfReady();
59 onParentChanged: d.forceSurfaceActiveFocusIfReady();
60 onEnabledChanged: d.forceSurfaceActiveFocusIfReady();
65 function forceSurfaceActiveFocusIfReady() {
66 if (root.surface !== null &&
68 root.surface.parent === root &&
69 root.surface.enabled) {
70 root.surface.forceActiveFocus();
78 when: surface && !surface.live
83 from: ""; to: "zombie"
85 UbuntuNumberAnimation { target: surface; property: "opacity"; to: 0.0
86 duration: UbuntuAnimation.BriskDuration }
87 PropertyAction { target: surface; property: "visible"; value: false }
88 ScriptAction { script: { if (root.surface) { root.surface.release(); } } }