on xenial help sign in
Make the wiggle-rotation happen center-aligned with the icon... even if in folded state.
c293465Mirco Müller
qml/Launcher/LauncherDelegate.qml+15−6
@@ -42,6 +42,7 @@ Item {
42 property real offset: 0
42 property real offset: 0
43 property real itemOpacity: 1
43 property real itemOpacity: 1
44 property real brightness: 0
44 property real brightness: 0
45+ property real wiggleAngle: 0
45
46
46 Connections {
47 Connections {
47 target: mainColumn.parent
48 target: mainColumn.parent
@@ -103,7 +104,7 @@ Item {
103
104
104 NumberAnimation {
105 NumberAnimation {
105 target: privWiggleAnim.target
106 target: privWiggleAnim.target
106− property: "rotation"
107+ property: "wiggleAngle"
107 from: 0
108 from: 0
108 to: privWiggleAnim.angle
109 to: privWiggleAnim.angle
109 duration: privWiggleAnim.duration
110 duration: privWiggleAnim.duration
@@ -112,7 +113,7 @@ Item {
112
113
113 NumberAnimation {
114 NumberAnimation {
114 target: privWiggleAnim.target
115 target: privWiggleAnim.target
115− property: "rotation"
116+ property: "wiggleAngle"
116 from: privWiggleAnim.angle
117 from: privWiggleAnim.angle
117 to: -privWiggleAnim.angle
118 to: -privWiggleAnim.angle
118 duration: privWiggleAnim.duration
119 duration: privWiggleAnim.duration
@@ -121,7 +122,7 @@ Item {
121
122
122 NumberAnimation {
123 NumberAnimation {
123 target: privWiggleAnim.target
124 target: privWiggleAnim.target
124− property: "rotation"
125+ property: "wiggleAngle"
125 from: -privWiggleAnim.angle
126 from: -privWiggleAnim.angle
126 to: privWiggleAnim.angle
127 to: privWiggleAnim.angle
127 duration: privWiggleAnim.duration
128 duration: privWiggleAnim.duration
@@ -130,7 +131,7 @@ Item {
130
131
131 NumberAnimation {
132 NumberAnimation {
132 target: privWiggleAnim.target
133 target: privWiggleAnim.target
133− property: "rotation"
134+ property: "wiggleAngle"
134 from: -privWiggleAnim.angle
135 from: -privWiggleAnim.angle
135 to: privWiggleAnim.angle
136 to: privWiggleAnim.angle
136 duration: privWiggleAnim.duration
137 duration: privWiggleAnim.duration
@@ -139,7 +140,7 @@ Item {
139
140
140 NumberAnimation {
141 NumberAnimation {
141 target: privWiggleAnim.target
142 target: privWiggleAnim.target
142− property: "rotation"
143+ property: "wiggleAngle"
143 from: privWiggleAnim.angle
144 from: privWiggleAnim.angle
144 to: -privWiggleAnim.angle
145 to: -privWiggleAnim.angle
145 duration: privWiggleAnim.duration
146 duration: privWiggleAnim.duration
@@ -148,7 +149,7 @@ Item {
148
149
149 NumberAnimation {
150 NumberAnimation {
150 target: privWiggleAnim.target
151 target: privWiggleAnim.target
151− property: "rotation"
152+ property: "wiggleAngle"
152 from: -privWiggleAnim.angle
153 from: -privWiggleAnim.angle
153 to: 0
154 to: 0
154 duration: privWiggleAnim.duration
155 duration: privWiggleAnim.duration
@@ -287,6 +288,14 @@ Item {
287 }
288 }
288
289
289 transform: [
290 transform: [
291+ // The rotation about the icon's center/z-axis for the wiggle
292+ // needs to happen here too, because there's no other way to
293+ // align the wiggle with the icon-folding otherwise
294+ Rotation {
295+ axis { x: 0; y: 0; z: 1 }
296+ origin { x: iconItem.width / 2; y: iconItem.height / 2; z: 0 }
297+ angle: root.wiggleAngle
298+ },
290 // Rotating 3 times at top/bottom because that increases the perspective.
299 // Rotating 3 times at top/bottom because that increases the perspective.
291 // This is a hack, but as QML does not support real 3D coordinates
300 // This is a hack, but as QML does not support real 3D coordinates
292 // getting a higher perspective can only be done by a hack. This is the most
301 // getting a higher perspective can only be done by a hack. This is the most