fix(gestures): drag events are debounced

- Performance regressions in menu, sliding item, toggle, go back swipe and scroll up to refresh.
- Buggy sliding item
This commit is contained in:
Manu Mtz.-Almeida
2017-01-21 00:56:09 +01:00
parent ee2268f42a
commit 23a70e151e
2 changed files with 22 additions and 24 deletions

View File

@ -315,12 +315,7 @@ export class ItemSliding {
openAmount = optsWidth + (openAmount - optsWidth) * ELASTIC_FACTOR; openAmount = optsWidth + (openAmount - optsWidth) * ELASTIC_FACTOR;
} }
// this.debouncer.write(() => { this._setOpenAmount(openAmount, false);
// });
this._dom.write(() => {
this._setOpenAmount(openAmount, false);
});
return openAmount; return openAmount;
} }
@ -362,29 +357,30 @@ export class ItemSliding {
* @private * @private
*/ */
private calculateOptsWidth() { private calculateOptsWidth() {
this._plt.raf(() => { if (!this._optsDirty) {
if (!this._optsDirty) { return;
return; }
} this._optsWidthRightSide = 0;
this._optsWidthRightSide = 0; if (this._rightOptions) {
if (this._rightOptions) { this._optsWidthRightSide = this._rightOptions.width();
this._optsWidthRightSide = this._rightOptions.width(); assert(this._optsWidthRightSide > 0, '_optsWidthRightSide should not be zero');
assert(this._optsWidthRightSide > 0, '_optsWidthRightSide should not be zero'); }
}
this._optsWidthLeftSide = 0; this._optsWidthLeftSide = 0;
if (this._leftOptions) { if (this._leftOptions) {
this._optsWidthLeftSide = this._leftOptions.width(); this._optsWidthLeftSide = this._leftOptions.width();
assert(this._optsWidthLeftSide > 0, '_optsWidthLeftSide should not be zero'); assert(this._optsWidthLeftSide > 0, '_optsWidthLeftSide should not be zero');
} }
this._optsDirty = false; this._optsDirty = false;
});
} }
private _setOpenAmount(openAmount: number, isFinal: boolean) { private _setOpenAmount(openAmount: number, isFinal: boolean) {
const platform = this._plt; const platform = this._plt;
platform.cancelTimeout(this._tmr); if (this._tmr) {
platform.cancelTimeout(this._tmr);
this._tmr = null;
}
this._openAmount = openAmount; this._openAmount = openAmount;
if (isFinal) { if (isFinal) {

View File

@ -110,7 +110,9 @@ export class PanGesture {
pointerMove(ev: any) { pointerMove(ev: any) {
assert(this.started === true, 'started must be true'); assert(this.started === true, 'started must be true');
if (this.captured) { if (this.captured) {
this.onDragMove(ev); this.debouncer.write(() => {
this.onDragMove(ev);
});
return; return;
} }