Warn when using addEventListener() on an instance not from NodeGui

This commit is contained in:
Simon Edwards 2021-08-16 22:38:52 +02:00
parent 053fc9dc65
commit d81b781d1f
2 changed files with 15 additions and 3 deletions

View File

@ -40,10 +40,12 @@
Napi::String eventString = info[0].As<Napi::String>(); \
EventWidget* eventWidget = \
dynamic_cast<EventWidget*>(this->instance.data()); \
bool success = false; \
if (eventWidget) { \
eventWidget->subscribeToQtEvent(eventString.Utf8Value()); \
success = true; \
} \
return env.Null(); \
return Napi::Boolean::New(env, success); \
} \
Napi::Value unSubscribeToQtEvent(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \

View File

@ -129,8 +129,18 @@ export abstract class EventWidget<Signals extends unknown> extends Component {
*/
addEventListener(eventType: WidgetEventTypes, callback: (event?: NativeRawPointer<'QEvent'>) => void): void;
addEventListener(eventOrSignalType: string, callback: (...payloads: any[]) => void): void {
this.native.subscribeToQtEvent(eventOrSignalType);
this.emitter.addListener(eventOrSignalType, callback);
if (this.native.subscribeToQtEvent(eventOrSignalType)) {
this.emitter.addListener(eventOrSignalType, callback);
} else {
try {
throw new Error();
} catch (ex) {
console.log(
`WARNING: Unable to add event listener '${eventOrSignalType}'. (Perhaps this instance was not created by NodeGui.)`,
);
console.log(ex);
}
}
}
removeEventListener<SignalType extends keyof Signals>(signalType: SignalType, callback: Signals[SignalType]): void;