diff --git a/packages/canvas-media/video/index.android.ts b/packages/canvas-media/video/index.android.ts index 7b9286739..e52c3d8ee 100644 --- a/packages/canvas-media/video/index.android.ts +++ b/packages/canvas-media/video/index.android.ts @@ -89,7 +89,7 @@ export class Video extends VideoBase { getCurrentFrame(context?: WebGLRenderingContext) { const ctx = arguments[1] as any; const flipY = ctx._flipY; - const ptr = ctx._canvas._canvas.getNativeGL(); + const ptr = ctx._canvas._canvas.getNativeContext(); this._instance.getCurrentFrame(!!this.isLoaded, ptr, flipY, arguments[4], arguments[5]); } diff --git a/packages/canvas-polyfill/DOM/EventTarget.ts b/packages/canvas-polyfill/DOM/EventTarget.ts index 04afe9bf8..b1b2cc191 100644 --- a/packages/canvas-polyfill/DOM/EventTarget.ts +++ b/packages/canvas-polyfill/DOM/EventTarget.ts @@ -49,7 +49,13 @@ export class EventTarget { } } - dispatchEvent(event) { + /** + * Dispatches an event to this EventTarget. + * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent + * @param event + * @returns false if event is cancelable, and at least one of the event handlers which received event called Event.preventDefault(). Otherwise true. + */ + dispatchEvent(event): boolean { let emitter: Observable; if (global.isAndroid) { @@ -63,5 +69,7 @@ export class EventTarget { if (emitter !== null && emitter !== undefined) { emitter.notify({ ...event, eventName: event.type, object: emitter }); } + + return !event?.defaultPrevented; } } diff --git a/packages/canvas-polyfill/index.ts b/packages/canvas-polyfill/index.ts index 6b8ef0fc6..fb38dfcfd 100644 --- a/packages/canvas-polyfill/index.ts +++ b/packages/canvas-polyfill/index.ts @@ -1,4 +1,4 @@ -require('globals'); +require('@nativescript/core/globals'); if (__ANDROID__ && !(global as any).__canvasLoaded) { try { diff --git a/packages/canvas/Canvas/common.ts b/packages/canvas/Canvas/common.ts index 5fe5e5a82..7483d1953 100644 --- a/packages/canvas/Canvas/common.ts +++ b/packages/canvas/Canvas/common.ts @@ -73,6 +73,15 @@ export class Event { } } +export class CustomEvent extends Event { + detail: any; + + constructor(type: string, options?: EventOptions & { detail?: any }) { + super(type, options); + this.detail = options?.detail ?? null; + } +} + interface UIEventOptions extends EventOptions { detail?: number; view?: any;