aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickshadereffect/data/hideParent.qml
blob: 57ff9ad2ae828f33e38241dc61cd0262e2014e05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

import QtQuick 2.12

Item {
    id: root
    width: 640
    height: 480
    objectName: "qtbug86402Container"

    property bool finished

    Item {
        id: popup
        objectName: "popup"
        width: 200
        height: 200

        Rectangle {
            id: rect
            objectName: "rect"
            implicitWidth: 100
            implicitHeight: 100
            color: "blue"

            Item {
                id: ripple
                objectName: "ripple"
                anchors.fill: parent
                visible: false

                Rectangle {
                    id: rippleBox
                    objectName: "rippleBox"
                    property real cx
                    property real cy
                    x: cx - width / 2
                    y: cy - height / 2
                    width: 0
                    height: width
                    radius: width / 2
                    color: Qt.darker("red", 1.8)
                }
                layer.effect: ShaderEffect {
                    id: mask
                    objectName: "shaderEffect"
                    property variant source
                    property variant maskSource: rect

                    fragmentShader: "opacity-mask.frag.qsb"
                }
            }

            SequentialAnimation {
                id: rippleStartAnimation
                running: popup.visible
                onFinished: {
                    popup.parent = null
                    rippleEndAnimation.start()
                }

                ScriptAction {
                    script: {
                        rippleBox.width = 0
                        rippleBox.opacity = 0.3
                        ripple.visible = true
                        ripple.layer.enabled = true
                    }
                }
                NumberAnimation {
                    target: rippleBox
                    property: "width"
                    from: 0
                    to: Math.max(rect.width,
                                 rect.height) * 2.2
                    duration: 100
                }
            }
            SequentialAnimation {
                id: rippleEndAnimation

                onFinished: root.finished = true

                //Causes Crash on QT Versions > 5.12.5
                NumberAnimation {
                    target: rippleBox
                    property: "opacity"
                    to: 0
                    duration: 100
                }
                ScriptAction {
                    script: {
                        rippleBox.opacity = 0
                        ripple.layer.enabled = false
                        ripple.visible = false
                    }
                }
            }
        }
    }
}