util: Add wiggle helper
Add Util.wiggle(), which accepts the wiggle offset, duration, and number of times, as parameters. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/768
This commit is contained in:
parent
f2466caef3
commit
d0690c3952
@ -1,7 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
/* exported findUrls, spawn, spawnCommandLine, spawnApp, trySpawnCommandLine,
|
/* exported findUrls, spawn, spawnCommandLine, spawnApp, trySpawnCommandLine,
|
||||||
formatTime, formatTimeSpan, createTimeLabel, insertSorted,
|
formatTime, formatTimeSpan, createTimeLabel, insertSorted,
|
||||||
makeCloseButton, ensureActorVisibleInScrollView */
|
makeCloseButton, ensureActorVisibleInScrollView, wiggle */
|
||||||
|
|
||||||
const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi;
|
const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi;
|
||||||
const Gettext = imports.gettext;
|
const Gettext = imports.gettext;
|
||||||
@ -429,3 +429,37 @@ function ensureActorVisibleInScrollView(scrollView, actor) {
|
|||||||
duration: SCROLL_TIME
|
duration: SCROLL_TIME
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function wiggle(actor, params) {
|
||||||
|
params = Params.parse(params, {
|
||||||
|
offset: 0,
|
||||||
|
duration: 0,
|
||||||
|
wiggleCount: 0,
|
||||||
|
});
|
||||||
|
actor.translation_x = 0;
|
||||||
|
|
||||||
|
// Accelerate before wiggling
|
||||||
|
actor.ease({
|
||||||
|
translation_x: -params.offset,
|
||||||
|
duration: params.duration,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
onComplete: () => {
|
||||||
|
// Wiggle
|
||||||
|
actor.ease({
|
||||||
|
translation_x: params.offset,
|
||||||
|
duration: params.duration,
|
||||||
|
mode: Clutter.AnimationMode.LINEAR,
|
||||||
|
repeatCount: params.wiggleCount,
|
||||||
|
autoReverse: true,
|
||||||
|
onComplete: () => {
|
||||||
|
// Decelerate and return to the original position
|
||||||
|
actor.ease({
|
||||||
|
translation_x: 0,
|
||||||
|
duration: params.duration,
|
||||||
|
mode: Clutter.AnimationMode.EASE_IN_QUAD,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user