diff --git a/src/cpp/include/nodegui/core/Events/eventwidget_macro.h b/src/cpp/include/nodegui/core/Events/eventwidget_macro.h index c93bc01c2..b258e76ca 100644 --- a/src/cpp/include/nodegui/core/Events/eventwidget_macro.h +++ b/src/cpp/include/nodegui/core/Events/eventwidget_macro.h @@ -40,10 +40,12 @@ Napi::String eventString = info[0].As(); \ EventWidget* eventWidget = \ dynamic_cast(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(); \ diff --git a/src/lib/core/EventWidget.ts b/src/lib/core/EventWidget.ts index 3e7c9c6a9..c7d1a0ae4 100644 --- a/src/lib/core/EventWidget.ts +++ b/src/lib/core/EventWidget.ts @@ -129,8 +129,18 @@ export abstract class EventWidget 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: SignalType, callback: Signals[SignalType]): void;