FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fixed multiple gestures for Android by enchev · Pull Request #657 · NativeScript/NativeScript · GitHub

Repository navigation

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .ts  (5) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
34 changes: 6 additions & 28 deletions ui/core/view-common.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -142,14 +142,10 @@ export class View extends proxy.ProxyObject implements definition.View {

public _cssClasses: Array<string> = [];

public _gestureObservers: Map<number, Array<gestures.GesturesObserver>>;
public _gestureObservers = {};

public getGestureObservers(type: gestures.GestureTypes): Array<gestures.GesturesObserver> {
var result;
if (this._gestureObservers) {
result = this._gestureObservers.get(type) ? this._gestureObservers.get(type).slice(0) : undefined;
}
return result;
return this._gestureObservers[type];
}

private _updatingInheritedProperties: boolean;
Expand All @@ -167,29 +163,11 @@ export class View extends proxy.ProxyObject implements definition.View {
}

observe(type: gestures.GestureTypes, callback: (args: gestures.GestureEventData) => void, thisArg?: any): void {
var gesturesList = this._getGesturesList(type, true);
gesturesList.push(gestures.observe(this, type, callback, thisArg));
}
if (!this._gestureObservers[type]) {
this._gestureObservers[type] = [];
}

private _getGesturesList(gestureType: number, createIfNeeded): Array<gestures.GesturesObserver> {
if (!gestureType) {
throw new Error("GestureType must be a valid gesture!");
}

var list: Array<gestures.GesturesObserver>;
if (this._gestureObservers && this._gestureObservers.has(gestureType)) {
list = this._gestureObservers.get(gestureType);
}
else {
if (createIfNeeded) {
list = [];
if (!this._gestureObservers) {
this._gestureObservers = new Map<number, Array<gestures.GesturesObserver>>();
}
this._gestureObservers.set(gestureType, list);
}
}
return list;
this._gestureObservers[type].push(gestures.observe(this, type, callback, thisArg));
}

public addEventListener(arg: string | gestures.GestureTypes, callback: (data: observable.EventData) => void, thisArg?: any) {
Expand Down
17 changes: 6 additions & 11 deletions ui/core/view.android.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export class View extends viewCommon.View {
}

private hasGestureObservers() {
return this._gestureObservers ? this._gestureObservers.size > 0 : false;
return this._gestureObservers && Object.keys(this._gestureObservers).length > 0
}

private setOnTouchListener() {
Expand All @@ -114,18 +114,13 @@ export class View extends viewCommon.View {
return false;
}

var i;
for (var gestType in gestures.GestureTypes) {
if (gestures.GestureTypes.hasOwnProperty(gestType) && typeof gestures.GestureTypes[gestType] === "number") {
var gestArray = owner.getGestureObservers(parseInt(gestures.GestureTypes[gestType]));
if (gestArray) {
for (i = 0; i < gestArray.length; i++) {
var gestObserver = gestArray[i];
gestObserver.androidOnTouchEvent(motionEvent);
}
}
for (let type in owner._gestureObservers) {
let list = owner._gestureObservers[type];
for (let i = 0; i < list.length; i++) {
list[i].androidOnTouchEvent(motionEvent);
}
}

return owner._nativeView.onTouchEvent(motionEvent);
}
}));
Expand Down
2 changes: 1 addition & 1 deletion ui/core/view.d.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ declare module "ui/core/view" {

// TODO: Implement logic for stripping these lines out
//@private
_gestureObservers: Map<number, Array<gestures.GesturesObserver>>;
_gestureObservers: any;
_isInheritedChange(): boolean;
_domId: number;
_cssClasses: Array<string>;
Expand Down
15 changes: 6 additions & 9 deletions ui/gestures/gestures-common.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -126,18 +126,15 @@ export class GesturesObserver implements definition.GesturesObserver {
public disconnect() {
// remove gesture observer from map
if (this.target) {
var gestureObserversArray = this.target._gestureObservers.get(this.type);
if (gestureObserversArray) {
var i;
for (i = 0; i < gestureObserversArray.length; i++) {
if (gestureObserversArray[i].callback === this.callback) {
var list = this.target.getGestureObservers(this.type);
if (list && list.length > 0) {
for (let i = 0; i < list.length; i++) {
if (list[i].callback === this.callback) {
break;
}
}
gestureObserversArray.splice(i, 1);
if (gestureObserversArray.length === 0) {
this.target._gestureObservers.delete(this.type);
}
list.length = 0;
this.target._gestureObservers.delete(this.type);
}
}
this._target = null;
Expand Down
9 changes: 4 additions & 5 deletions ui/gestures/gestures.android.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -185,15 +185,15 @@ class TapAndDoubleTapGestureListener extends android.view.GestureDetector.Simple
}

public onSingleTapConfirmed(motionEvent: android.view.MotionEvent): boolean {
if (this._type === definition.GestureTypes.tap) {
if (this._type & definition.GestureTypes.tap) {
var args = _getArgs(definition.GestureTypes.tap, this._target, motionEvent);
_executeCallback(this._observer, args);
}
return true;
}

public onDoubleTap(motionEvent: android.view.MotionEvent): boolean {
if (this._type === definition.GestureTypes.doubleTap) {
if (this._type & definition.GestureTypes.doubleTap) {
var args = _getArgs(definition.GestureTypes.doubleTap, this._target, motionEvent);
_executeCallback(this._observer, args);
}
Expand All @@ -204,12 +204,11 @@ class TapAndDoubleTapGestureListener extends android.view.GestureDetector.Simple
return true;
}

public onLongPress(motionEvent: android.view.MotionEvent): boolean {
if (this._type === definition.GestureTypes.longPress) {
public onLongPress(motionEvent: android.view.MotionEvent): void {
if (this._type & definition.GestureTypes.longPress) {
var args = _getArgs(definition.GestureTypes.longPress, this._target, motionEvent);
_executeCallback(this._observer, args);
}
return true;
}
}

Expand Down

Back | FazBrowse Home | New Git URL