From 4429959fed2243f304d00b3cb5ef378884974b57 Mon Sep 17 00:00:00 2001 From: Nathanael Anderson Date: Tue, 31 Aug 2021 16:44:13 -0500 Subject: [PATCH] Fix QWidgetTableItem Wrapper --- .../QTableWidgetItem/qtablewidgetitem_wrap.h | 1 + .../qtablewidgetitem_wrap.cpp | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/cpp/include/nodegui/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.h b/src/cpp/include/nodegui/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.h index d189a0a8b..94badbf2d 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.h @@ -12,6 +12,7 @@ class DLL_EXPORT QTableWidgetItemWrap COMPONENT_WRAPPED_METHODS_DECLARATION private: QTableWidgetItem* instance; + bool disableDeletion; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/lib/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.cpp b/src/cpp/lib/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.cpp index 8e87ed8c0..c51861a96 100644 --- a/src/cpp/lib/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.cpp @@ -56,22 +56,35 @@ Napi::Object QTableWidgetItemWrap::init(Napi::Env env, Napi::Object exports) { QTableWidgetItem* QTableWidgetItemWrap::getInternalInstance() { return this->instance; } -QTableWidgetItemWrap::~QTableWidgetItemWrap() { delete this->instance; } +QTableWidgetItemWrap::~QTableWidgetItemWrap() { + if (!this->disableDeletion) { + delete this->instance; + } +} QTableWidgetItemWrap::QTableWidgetItemWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - if (info.Length() == 1) { - QString text = - QString::fromUtf8(info[0].As().Utf8Value().c_str()); - this->instance = new QTableWidgetItem(text); - } else if (info.Length() == 0) { - this->instance = new QTableWidgetItem(); + + if (info.Length() > 0 && info[0].IsExternal()) { + // --- if external --- + this->instance = info[0].As>().Data(); + if (info.Length() == 2) { + this->disableDeletion = info[1].As().Value(); + } } else { - Napi::TypeError::New(env, "Wrong number of arguments") - .ThrowAsJavaScriptException(); + if (info.Length() == 1) { + QString text = + QString::fromUtf8(info[0].As().Utf8Value().c_str()); + this->instance = new QTableWidgetItem(text); + } else if (info.Length() == 0) { + this->instance = new QTableWidgetItem(); + } else { + Napi::TypeError::New(env, "QTableWidgetItemWrap: Wrong number of arguments") + .ThrowAsJavaScriptException(); + } } this->rawData = extrautils::configureComponent(this->getInternalInstance()); }