summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2016-05-11 14:28:56 +0200
committerJohan Helsing <johan.helsing@qt.io>2016-05-20 12:11:17 +0000
commit5e5e866c8c1fc8234c25770d84e9591041e67d69 (patch)
tree111913497f39e6cbad7403743ab40a5d9aed734c /examples
parent8817a981389b4f22a614f258f3575360645f2fd9 (diff)
Create a general ShellSurfaceItem to avoid duplication
XdgSurfaceItem and WlShellSurfaceItem have been removed in favor of the more general ShellSurfaceItem. An XdgSurface or a WlShellSurface can be assigned to the shellSurface property of a ShellSurfaceItem and leaves open the possibility for additional shells. A shared base class for QWaylandXdgSurface and QWaylandWlShellSurface has been added which has a factory method for creating a QWaylandQuickShellIntegration for that shell implementation. The property "shellSurface" on the ShellSurfaceItem allows QML code to attach to signals regardless of whether it's a WlShell or XdgShell client. The pure-qml example has been updated to take advantage of this. Change-Id: I9d3427586e100d6c44a24f319dd8e1486ff062ee Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/wayland/custom-extension/compositor/qml/main.qml2
-rw-r--r--examples/wayland/multi-output/qml/ShellChrome.qml5
-rw-r--r--examples/wayland/pure-qml/pure-qml.pro1
-rw-r--r--examples/wayland/pure-qml/pure-qml.qrc1
-rw-r--r--examples/wayland/pure-qml/qml/Chrome.qml31
-rw-r--r--examples/wayland/pure-qml/qml/XdgChrome.qml90
-rw-r--r--examples/wayland/pure-qml/qml/main.qml12
7 files changed, 29 insertions, 113 deletions
diff --git a/examples/wayland/custom-extension/compositor/qml/main.qml b/examples/wayland/custom-extension/compositor/qml/main.qml
index ff83133be..097bfe30b 100644
--- a/examples/wayland/custom-extension/compositor/qml/main.qml
+++ b/examples/wayland/custom-extension/compositor/qml/main.qml
@@ -64,7 +64,7 @@ WaylandCompositor {
Component {
id: chromeComponent
- WlShellSurfaceItem {
+ ShellSurfaceItem {
id: chrome
onSurfaceDestroyed: {
if (chrome === lastItem)
diff --git a/examples/wayland/multi-output/qml/ShellChrome.qml b/examples/wayland/multi-output/qml/ShellChrome.qml
index 1dc90647d..dac3eb096 100644
--- a/examples/wayland/multi-output/qml/ShellChrome.qml
+++ b/examples/wayland/multi-output/qml/ShellChrome.qml
@@ -41,12 +41,9 @@
import QtQuick 2.0
import QtWayland.Compositor 1.0
-WlShellSurfaceItem {
+ShellSurfaceItem {
id: rootChrome
- shellSurface: WlShellSurface {
- }
-
onSurfaceDestroyed: {
view.bufferLock = true;
destroyAnimation.start();
diff --git a/examples/wayland/pure-qml/pure-qml.pro b/examples/wayland/pure-qml/pure-qml.pro
index f0a10260a..20fc529ed 100644
--- a/examples/wayland/pure-qml/pure-qml.pro
+++ b/examples/wayland/pure-qml/pure-qml.pro
@@ -8,7 +8,6 @@ OTHER_FILES = \
qml/Screen.qml \
qml/Chrome.qml \
qml/Keyboard.qml \
- qml/XdgChrome.qml \
images/background.jpg \
RESOURCES += pure-qml.qrc
diff --git a/examples/wayland/pure-qml/pure-qml.qrc b/examples/wayland/pure-qml/pure-qml.qrc
index 333f5e613..8c95434d3 100644
--- a/examples/wayland/pure-qml/pure-qml.qrc
+++ b/examples/wayland/pure-qml/pure-qml.qrc
@@ -5,6 +5,5 @@
<file>qml/Screen.qml</file>
<file>qml/Chrome.qml</file>
<file>qml/Keyboard.qml</file>
- <file>qml/XdgChrome.qml</file>
</qresource>
</RCC>
diff --git a/examples/wayland/pure-qml/qml/Chrome.qml b/examples/wayland/pure-qml/qml/Chrome.qml
index 1dc90647d..1c9066ef1 100644
--- a/examples/wayland/pure-qml/qml/Chrome.qml
+++ b/examples/wayland/pure-qml/qml/Chrome.qml
@@ -41,17 +41,27 @@
import QtQuick 2.0
import QtWayland.Compositor 1.0
-WlShellSurfaceItem {
+ShellSurfaceItem {
id: rootChrome
- shellSurface: WlShellSurface {
- }
-
onSurfaceDestroyed: {
view.bufferLock = true;
destroyAnimation.start();
}
+ Connections {
+ target: shellSurface
+
+ // some signals are not available on wl_shell, so let's ignore them
+ ignoreUnknownSignals: true
+
+ onActivatedChanged: { // xdg_shell only
+ if (shellSurface.activated) {
+ receivedFocusAnimation.start();
+ }
+ }
+ }
+
SequentialAnimation {
id: destroyAnimation
ParallelAnimation {
@@ -62,12 +72,23 @@ WlShellSurfaceItem {
ScriptAction { script: { rootChrome.destroy(); } }
}
+ SequentialAnimation {
+ id: receivedFocusAnimation
+ ParallelAnimation {
+ NumberAnimation { target: scaleTransform; property: "yScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad }
+ NumberAnimation { target: scaleTransform; property: "xScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad }
+ }
+ ParallelAnimation {
+ NumberAnimation { target: scaleTransform; property: "yScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad }
+ NumberAnimation { target: scaleTransform; property: "xScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad }
+ }
+ }
+
transform: [
Scale {
id:scaleTransform
origin.x: rootChrome.width / 2
origin.y: rootChrome.height / 2
-
}
]
}
diff --git a/examples/wayland/pure-qml/qml/XdgChrome.qml b/examples/wayland/pure-qml/qml/XdgChrome.qml
deleted file mode 100644
index afe137c68..000000000
--- a/examples/wayland/pure-qml/qml/XdgChrome.qml
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtWayland.Compositor 1.0
-
-XdgSurfaceItem {
- id: rootChrome
-
- xdgSurface: XdgSurface {
- id: xdgSurface
- onActivatedChanged: {
- if (xdgSurface.activated) {
- receivedFocusAnimation.start();
- }
- }
- }
-
- onSurfaceDestroyed: {
- view.bufferLock = true;
- destroyAnimation.start();
- }
-
- SequentialAnimation {
- id: receivedFocusAnimation
- ParallelAnimation {
- NumberAnimation { target: scaleTransform; property: "yScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad }
- NumberAnimation { target: scaleTransform; property: "xScale"; to: 1.02; duration: 100; easing.type: Easing.OutQuad }
- }
- ParallelAnimation {
- NumberAnimation { target: scaleTransform; property: "yScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad }
- NumberAnimation { target: scaleTransform; property: "xScale"; to: 1; duration: 100; easing.type: Easing.InOutQuad }
- }
- }
-
- SequentialAnimation {
- id: destroyAnimation
- ParallelAnimation {
- NumberAnimation { target: scaleTransform; property: "yScale"; to: 2/height; duration: 150 }
- NumberAnimation { target: scaleTransform; property: "xScale"; to: 0.4; duration: 150 }
- }
- NumberAnimation { target: scaleTransform; property: "xScale"; to: 0; duration: 150 }
- ScriptAction { script: { rootChrome.destroy(); } }
- }
-
- transform: [
- Scale {
- id: scaleTransform
- origin.x: rootChrome.width / 2
- origin.y: rootChrome.height / 2
- }
- ]
-}
diff --git a/examples/wayland/pure-qml/qml/main.qml b/examples/wayland/pure-qml/qml/main.qml
index c50d4b67d..6ee09f802 100644
--- a/examples/wayland/pure-qml/qml/main.qml
+++ b/examples/wayland/pure-qml/qml/main.qml
@@ -57,12 +57,6 @@ WaylandCompositor {
}
Component {
- id: xdgChromeComponent
- XdgChrome {
- }
- }
-
- Component {
id: surfaceComponent
WaylandSurface {
}
@@ -74,17 +68,13 @@ WaylandCompositor {
onShowIsFullScreenChanged: console.debug("Show is fullscreen hint for Qt applications:", showIsFullScreen)
},
WlShell {
- id: defaultShell
-
onShellSurfaceCreated: {
chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": shellSurface } );
}
},
XdgShell {
- id: xdgShell
-
onXdgSurfaceCreated: {
- xdgChromeComponent.createObject(defaultOutput.surfaceArea, { "xdgSurface": xdgSurface } );
+ chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": xdgSurface } );
}
},
TextInputManager {