Skip to content

Commit e506d01

Browse files
committed
ProjectPlayer: Clip contents properly
1 parent 43ab6b9 commit e506d01

File tree

1 file changed

+63
-56
lines changed

1 file changed

+63
-56
lines changed

ScratchCPPGui/ProjectPlayer.qml

Lines changed: 63 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ ProjectScene {
2121
signal failedToLoad()
2222

2323
id: root
24-
clip: true
2524
engine: loader.engine
2625
stageScale: (stageWidth == 0 || stageHeight == 0) ? 1 : Math.min(width / stageWidth, height / stageHeight)
2726
onFileNameChanged: priv.loading = true;
@@ -46,15 +45,6 @@ ProjectScene {
4645
}
4746
}
4847

49-
RenderedTarget {
50-
id: stageTarget
51-
engine: loader.engine
52-
stageModel: loader.stage
53-
mouseArea: sceneMouseArea
54-
stageScale: root.stageScale
55-
onStageModelChanged: stageModel.renderedTarget = this
56-
}
57-
5848
function start() {
5949
loader.start();
6050
}
@@ -63,68 +53,85 @@ ProjectScene {
6353
loader.stop();
6454
}
6555

66-
Repeater {
67-
id: sprites
68-
model: loader.sprites
56+
Item {
57+
anchors.left: parent.left
58+
anchors.top: parent.top
59+
width: stageWidth * stageScale
60+
height: stageHeight * stageScale
61+
clip: true
6962

7063
RenderedTarget {
71-
id: target
64+
id: stageTarget
7265
engine: loader.engine
73-
spriteModel: modelData
66+
stageModel: loader.stage
7467
mouseArea: sceneMouseArea
7568
stageScale: root.stageScale
76-
transform: Scale { xScale: mirrorHorizontally ? -1 : 1 }
77-
Component.onCompleted: modelData.renderedTarget = this
69+
onStageModelChanged: stageModel.renderedTarget = this
7870
}
79-
}
8071

81-
Loader {
82-
anchors.fill: parent
83-
active: showLoadingProgress && loading
72+
Repeater {
73+
id: sprites
74+
model: loader.sprites
75+
76+
RenderedTarget {
77+
id: target
78+
engine: loader.engine
79+
spriteModel: modelData
80+
mouseArea: sceneMouseArea
81+
stageScale: root.stageScale
82+
transform: Scale { xScale: mirrorHorizontally ? -1 : 1 }
83+
Component.onCompleted: modelData.renderedTarget = this
84+
}
85+
}
8486

85-
sourceComponent: ColumnLayout {
87+
Loader {
8688
anchors.fill: parent
89+
active: showLoadingProgress && loading
8790

88-
Item { Layout.fillHeight: true }
91+
sourceComponent: ColumnLayout {
92+
anchors.fill: parent
8993

90-
BusyIndicator {
91-
Layout.fillWidth: true
92-
Layout.maximumWidth: 100
93-
Layout.alignment: Qt.AlignHCenter
94-
running: true
95-
}
94+
Item { Layout.fillHeight: true }
9695

97-
Label {
98-
Layout.alignment: Qt.AlignHCenter
99-
font.bold: true
100-
font.pointSize: 12
101-
text: {
102-
if(loading)
103-
return assetCount == downloadedAssets ? qsTr("Loading project...") : qsTr("Downloading assets... (%1 of %2)").arg(downloadedAssets).arg(assetCount);
104-
else
105-
return "";
96+
BusyIndicator {
97+
Layout.fillWidth: true
98+
Layout.maximumWidth: 100
99+
Layout.alignment: Qt.AlignHCenter
100+
running: true
106101
}
107-
}
108102

109-
ProgressBar {
110-
Layout.fillWidth: true
111-
from: 0
112-
to: assetCount
113-
value: downloadedAssets
114-
indeterminate: assetCount == downloadedAssets
115-
}
103+
Label {
104+
Layout.alignment: Qt.AlignHCenter
105+
font.bold: true
106+
font.pointSize: 12
107+
text: {
108+
if(loading)
109+
return assetCount == downloadedAssets ? qsTr("Loading project...") : qsTr("Downloading assets... (%1 of %2)").arg(downloadedAssets).arg(assetCount);
110+
else
111+
return "";
112+
}
113+
}
114+
115+
ProgressBar {
116+
Layout.fillWidth: true
117+
from: 0
118+
to: assetCount
119+
value: downloadedAssets
120+
indeterminate: assetCount == downloadedAssets
121+
}
116122

117-
Item { Layout.fillHeight: true }
123+
Item { Layout.fillHeight: true }
124+
}
118125
}
119-
}
120126

121-
SceneMouseArea {
122-
id: sceneMouseArea
123-
anchors.fill: parent
124-
stage: stageTarget
125-
spriteRepeater: sprites
126-
onMouseMoved: (x, y)=> root.handleMouseMove(x, y)
127-
onMousePressed: root.handleMousePress()
128-
onMouseReleased: root.handleMouseRelease()
127+
SceneMouseArea {
128+
id: sceneMouseArea
129+
anchors.fill: parent
130+
stage: stageTarget
131+
spriteRepeater: sprites
132+
onMouseMoved: (x, y)=> root.handleMouseMove(x, y)
133+
onMousePressed: root.handleMousePress()
134+
onMouseReleased: root.handleMouseRelease()
135+
}
129136
}
130137
}

0 commit comments

Comments
 (0)