From 382f2d7da62c61e71658ec9ddb60824cecf783c7 Mon Sep 17 00:00:00 2001 From: Atul R Date: Sat, 9 Nov 2019 00:05:25 +0100 Subject: [PATCH] Changes unique_ptr to qpointer for qobjects since they can be managed by other parent objects. This fixes double memory free. (#182) --- src/cpp/include/nodegui/Extras/Utils/nutils.h | 8 ++++++++ .../QtGui/QApplication/qapplication_wrap.h | 4 ++-- .../nodegui/QtWidgets/QAction/qaction_wrap.h | 5 +++-- .../nodegui/QtWidgets/QCheckBox/qcheckbox_wrap.h | 3 ++- .../include/nodegui/QtWidgets/QDial/qdial_wrap.h | 4 +++- .../QtWidgets/QGridLayout/qgridlayout_wrap.h | 3 ++- .../nodegui/QtWidgets/QLabel/qlabel_wrap.h | 4 +++- .../nodegui/QtWidgets/QLayout/qlayout_wrap.h | 3 ++- .../nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h | 4 +++- .../QtWidgets/QMainWindow/qmainwindow_wrap.h | 4 +++- .../include/nodegui/QtWidgets/QMenu/qmenu_wrap.h | 4 +++- .../nodegui/QtWidgets/QMenuBar/qmenubar_wrap.h | 4 +++- .../QPlainTextEdit/qplaintextedit_wrap.h | 4 +++- .../QtWidgets/QProgressBar/qprogressbar_wrap.h | 4 +++- .../QtWidgets/QPushButton/qpushbutton_wrap.h | 4 +++- .../QtWidgets/QRadioButton/qradiobutton_wrap.h | 4 +++- .../QtWidgets/QScrollArea/qscrollarea_wrap.h | 4 +++- .../nodegui/QtWidgets/QShortcut/qshortcut_wrap.h | 4 +++- .../nodegui/QtWidgets/QSpinBox/qspinbox_wrap.h | 4 +++- .../QSystemTrayIcon/qsystemtrayicon_wrap.h | 5 +++-- .../QtWidgets/QTabWidget/qtabwidget_wrap.h | 4 +++- .../nodegui/QtWidgets/QWidget/qwidget_wrap.h | 4 +++- .../nodegui/core/FlexLayout/flexlayout_wrap.h | 4 +++- .../include/nodegui/core/YogaWidget/yogawidget.h | 1 - src/cpp/lib/Extras/Utils/nutils.cpp | 2 +- .../lib/QtGui/QApplication/qapplication_wrap.cpp | 2 +- src/cpp/lib/QtWidgets/QAction/qaction_wrap.cpp | 11 ++--------- .../lib/QtWidgets/QCheckBox/qcheckbox_wrap.cpp | 10 ++++------ src/cpp/lib/QtWidgets/QDial/qdial_wrap.cpp | 10 ++++------ .../QtWidgets/QGridLayout/qgridlayout_wrap.cpp | 13 ++++--------- src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp | 13 +++++-------- src/cpp/lib/QtWidgets/QLayout/qlayout_wrap.cpp | 5 +++-- .../lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp | 10 ++++------ .../QtWidgets/QMainWindow/qmainwindow_wrap.cpp | 14 +++++--------- src/cpp/lib/QtWidgets/QMenu/qmenu_wrap.cpp | 10 ++++------ src/cpp/lib/QtWidgets/QMenuBar/qmenubar_wrap.cpp | 14 ++++++-------- .../QPlainTextEdit/qplaintextedit_wrap.cpp | 13 +++++++------ .../QtWidgets/QProgressBar/qprogressbar_wrap.cpp | 14 ++++++-------- .../QtWidgets/QPushButton/qpushbutton_wrap.cpp | 12 ++++-------- .../QtWidgets/QRadioButton/qradiobutton_wrap.cpp | 14 ++++++-------- .../QtWidgets/QScrollArea/qscrollarea_wrap.cpp | 12 ++++-------- .../lib/QtWidgets/QShortcut/qshortcut_wrap.cpp | 11 ++--------- src/cpp/lib/QtWidgets/QSpinBox/qspinbox_wrap.cpp | 10 ++++------ .../QSystemTrayIcon/qsystemtrayicon_wrap.cpp | 4 +++- .../lib/QtWidgets/QTabWidget/qtabwidget_wrap.cpp | 4 ++-- src/cpp/lib/QtWidgets/QWidget/qwidget_wrap.cpp | 16 +++++++--------- src/cpp/lib/core/FlexLayout/flexlayout.cpp | 1 - src/cpp/lib/core/FlexLayout/flexlayout_wrap.cpp | 14 ++++++-------- src/demo.ts | 1 + 49 files changed, 165 insertions(+), 171 deletions(-) diff --git a/src/cpp/include/nodegui/Extras/Utils/nutils.h b/src/cpp/include/nodegui/Extras/Utils/nutils.h index 2fe28bfbe..ed436cac2 100644 --- a/src/cpp/include/nodegui/Extras/Utils/nutils.h +++ b/src/cpp/include/nodegui/Extras/Utils/nutils.h @@ -1,8 +1,16 @@ #pragma once +#include + #include "core/FlexLayout/flexlayout.h" namespace extrautils { YGSize measureQtWidget(YGNodeRef node, float width, YGMeasureMode widthMode, float height, YGMeasureMode heightMode); +template +void safeDelete(QPointer component) { + if (component.isNull()) { + delete component; + } } +} // namespace extrautils diff --git a/src/cpp/include/nodegui/QtGui/QApplication/qapplication_wrap.h b/src/cpp/include/nodegui/QtGui/QApplication/qapplication_wrap.h index b09922aaf..3db5b53c4 100644 --- a/src/cpp/include/nodegui/QtGui/QApplication/qapplication_wrap.h +++ b/src/cpp/include/nodegui/QtGui/QApplication/qapplication_wrap.h @@ -3,10 +3,10 @@ #include #include - +#include class QApplicationWrap : public Napi::ObjectWrap { private: - QApplication* instance; + QPointer instance; static int argc; static char** argv; bool _wasManuallyCreated = false; diff --git a/src/cpp/include/nodegui/QtWidgets/QAction/qaction_wrap.h b/src/cpp/include/nodegui/QtWidgets/QAction/qaction_wrap.h index e33a564da..ea0e6f3b9 100644 --- a/src/cpp/include/nodegui/QtWidgets/QAction/qaction_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QAction/qaction_wrap.h @@ -2,12 +2,13 @@ #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "naction.hpp" - class QActionWrap : public Napi::ObjectWrap { private: - NAction* instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QCheckBox/qcheckbox_wrap.h b/src/cpp/include/nodegui/QtWidgets/QCheckBox/qcheckbox_wrap.h index 825a6c1bf..d26066f91 100644 --- a/src/cpp/include/nodegui/QtWidgets/QCheckBox/qcheckbox_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QCheckBox/qcheckbox_wrap.h @@ -5,10 +5,11 @@ #include "QtWidgets/QWidget/qwidget_macro.h" #include "ncheckbox.hpp" +#include class QCheckBoxWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QDial/qdial_wrap.h b/src/cpp/include/nodegui/QtWidgets/QDial/qdial_wrap.h index b4883f5b4..dcb549c11 100644 --- a/src/cpp/include/nodegui/QtWidgets/QDial/qdial_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QDial/qdial_wrap.h @@ -3,13 +3,15 @@ #include #include +#include + #include "QtWidgets/QAbstractSlider/qabstractslider_macro.h" #include "QtWidgets/QWidget/qwidget_macro.h" #include "ndial.hpp" class QDialWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h b/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h index fdea1c8a1..8b01cace1 100644 --- a/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QGridLayout/qgridlayout_wrap.h @@ -4,12 +4,13 @@ #include #include +#include #include "QtWidgets/QLayout/qlayout_macro.h" class QGridLayoutWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h b/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h index c6f09d3dd..fda4ede8b 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nlabel.hpp" class QLabelWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_wrap.h b/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_wrap.h index 1b93d9799..8a7918f09 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_wrap.h @@ -4,13 +4,14 @@ #include #include +#include #include "QtWidgets/QLayout/qlayout_macro.h" // ABSTRACT CLASS class QLayoutWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static void init(Napi::Env env); diff --git a/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h b/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h index 056dbda9b..b3f673077 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QLineEdit/qlineedit_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nlineedit.hpp" class QLineEditWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QMainWindow/qmainwindow_wrap.h b/src/cpp/include/nodegui/QtWidgets/QMainWindow/qmainwindow_wrap.h index b53b29663..ca621d573 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMainWindow/qmainwindow_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QMainWindow/qmainwindow_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nmainwindow.hpp" class QMainWindowWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QMenu/qmenu_wrap.h b/src/cpp/include/nodegui/QtWidgets/QMenu/qmenu_wrap.h index f76b9f286..29beed394 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMenu/qmenu_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QMenu/qmenu_wrap.h @@ -3,11 +3,13 @@ #include #include +#include + #include "nmenu.hpp" class QMenuWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QMenuBar/qmenubar_wrap.h b/src/cpp/include/nodegui/QtWidgets/QMenuBar/qmenubar_wrap.h index 5bdd478a7..a7d56d655 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMenuBar/qmenubar_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QMenuBar/qmenubar_wrap.h @@ -3,11 +3,13 @@ #include #include +#include + #include "nmenubar.hpp" class QMenuBarWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.h b/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.h index 5c6735a84..61b21a401 100644 --- a/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.h @@ -3,13 +3,15 @@ #include #include +#include + #include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "QtWidgets/QWidget/qwidget_macro.h" #include "nplaintextedit.hpp" class QPlainTextEditWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h b/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h index 7ffc6b41b..904210426 100644 --- a/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nprogressbar.hpp" class QProgressBarWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h b/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h index d132d3504..b4bfd7c30 100644 --- a/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h @@ -3,13 +3,15 @@ #include #include +#include + #include "Extras/Utils/nutils.h" #include "QtWidgets/QWidget/qwidget_macro.h" #include "npushbutton.hpp" class QPushButtonWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QRadioButton/qradiobutton_wrap.h b/src/cpp/include/nodegui/QtWidgets/QRadioButton/qradiobutton_wrap.h index 96d289a4a..4e0d826b4 100644 --- a/src/cpp/include/nodegui/QtWidgets/QRadioButton/qradiobutton_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QRadioButton/qradiobutton_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nradiobutton.hpp" class QRadioButtonWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h b/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h index ff1df4b02..7ce0a7b3c 100644 --- a/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "nscrollarea.hpp" class QScrollAreaWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QShortcut/qshortcut_wrap.h b/src/cpp/include/nodegui/QtWidgets/QShortcut/qshortcut_wrap.h index 67ff7cd73..16d39ec2d 100644 --- a/src/cpp/include/nodegui/QtWidgets/QShortcut/qshortcut_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QShortcut/qshortcut_wrap.h @@ -2,12 +2,14 @@ #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nshortcut.hpp" class QShortcutWrap : public Napi::ObjectWrap { private: - NShortcut* instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QSpinBox/qspinbox_wrap.h b/src/cpp/include/nodegui/QtWidgets/QSpinBox/qspinbox_wrap.h index 96827e43d..16e437e9a 100644 --- a/src/cpp/include/nodegui/QtWidgets/QSpinBox/qspinbox_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QSpinBox/qspinbox_wrap.h @@ -3,13 +3,15 @@ #include #include +#include + #include "Extras/Utils/nutils.h" #include "QtWidgets/QWidget/qwidget_macro.h" #include "nspinbox.hpp" class QSpinBoxWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h index 01d08b4bf..d0beddb9c 100644 --- a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.h @@ -2,12 +2,13 @@ #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nsystemtrayicon.hpp" - class QSystemTrayIconWrap : public Napi::ObjectWrap { private: - NSystemTrayIcon* instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QTabWidget/qtabwidget_wrap.h b/src/cpp/include/nodegui/QtWidgets/QTabWidget/qtabwidget_wrap.h index d5cfad101..a7b39266e 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTabWidget/qtabwidget_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QTabWidget/qtabwidget_wrap.h @@ -2,13 +2,15 @@ #include +#include + #include "Extras/Utils/nutils.h" #include "QtWidgets/QTabWidget/ntabwidget.hpp" #include "QtWidgets/QWidget/qwidget_macro.h" class QTabWidgetWrap : public Napi::ObjectWrap { private: - NTabWidget *instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_wrap.h b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_wrap.h index a00116a9e..adb238ef6 100644 --- a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QWidget/qwidget_macro.h" #include "nwidget.hpp" class QWidgetWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/core/FlexLayout/flexlayout_wrap.h b/src/cpp/include/nodegui/core/FlexLayout/flexlayout_wrap.h index 6f38b98f1..9b313ff3f 100644 --- a/src/cpp/include/nodegui/core/FlexLayout/flexlayout_wrap.h +++ b/src/cpp/include/nodegui/core/FlexLayout/flexlayout_wrap.h @@ -3,12 +3,14 @@ #include #include +#include + #include "QtWidgets/QLayout/qlayout_macro.h" #include "flexlayout.h" class FlexLayoutWrap : public Napi::ObjectWrap { private: - std::unique_ptr instance; + QPointer instance; public: static Napi::Object init(Napi::Env env, Napi::Object exports); diff --git a/src/cpp/include/nodegui/core/YogaWidget/yogawidget.h b/src/cpp/include/nodegui/core/YogaWidget/yogawidget.h index 870acd21d..f3c708d10 100644 --- a/src/cpp/include/nodegui/core/YogaWidget/yogawidget.h +++ b/src/cpp/include/nodegui/core/YogaWidget/yogawidget.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include "core/FlexLayout/flexitem.h" diff --git a/src/cpp/lib/Extras/Utils/nutils.cpp b/src/cpp/lib/Extras/Utils/nutils.cpp index fe192c452..2b52ef191 100644 --- a/src/cpp/lib/Extras/Utils/nutils.cpp +++ b/src/cpp/lib/Extras/Utils/nutils.cpp @@ -25,4 +25,4 @@ YGSize extrautils::measureQtWidget(YGNodeRef node, float width, } } return YGSize{width, height}; -} \ No newline at end of file +} diff --git a/src/cpp/lib/QtGui/QApplication/qapplication_wrap.cpp b/src/cpp/lib/QtGui/QApplication/qapplication_wrap.cpp index 12b9d7fa1..65b07c05c 100644 --- a/src/cpp/lib/QtGui/QApplication/qapplication_wrap.cpp +++ b/src/cpp/lib/QtGui/QApplication/qapplication_wrap.cpp @@ -45,7 +45,7 @@ QApplicationWrap::QApplicationWrap(const Napi::CallbackInfo& info) } QApplicationWrap::~QApplicationWrap() { if (this->_wasManuallyCreated) { - delete this->instance; + extrautils::safeDelete(this->instance); } } diff --git a/src/cpp/lib/QtWidgets/QAction/qaction_wrap.cpp b/src/cpp/lib/QtWidgets/QAction/qaction_wrap.cpp index a1c9fae9f..e629bffc1 100644 --- a/src/cpp/lib/QtWidgets/QAction/qaction_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QAction/qaction_wrap.cpp @@ -1,6 +1,5 @@ #include "QtWidgets/QAction/qaction_wrap.h" -#include #include #include "Extras/Utils/nutils.h" @@ -45,9 +44,7 @@ QActionWrap::QActionWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = new NAction( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NAction(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { this->instance = new NAction(); } else { @@ -56,10 +53,7 @@ QActionWrap::QActionWrap(const Napi::CallbackInfo& info) } } -QActionWrap::~QActionWrap() { - // delete this->instance; This will be destroyed by the qmenu (since it takes - // the ownership) -} +QActionWrap::~QActionWrap() { extrautils::safeDelete(this->instance); } Napi::Value QActionWrap::setText(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -116,7 +110,6 @@ Napi::Value QActionWrap::setShortcutContext(const Napi::CallbackInfo& info) { int shortCutContext = shortcutContextEnum.Int32Value(); this->instance->setShortcutContext( static_cast(shortCutContext)); - qDebug() << "shortCutContext: " << shortCutContext; return env.Null(); } diff --git a/src/cpp/lib/QtWidgets/QCheckBox/qcheckbox_wrap.cpp b/src/cpp/lib/QtWidgets/QCheckBox/qcheckbox_wrap.cpp index 946247eb2..9d2ae714e 100644 --- a/src/cpp/lib/QtWidgets/QCheckBox/qcheckbox_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QCheckBox/qcheckbox_wrap.cpp @@ -21,7 +21,7 @@ Napi::Object QCheckBoxWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NCheckBox* QCheckBoxWrap::getInternalInstance() { return this->instance.get(); } +NCheckBox* QCheckBoxWrap::getInternalInstance() { return this->instance; } QCheckBoxWrap::QCheckBoxWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -32,11 +32,9 @@ QCheckBoxWrap::QCheckBoxWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NCheckBox(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NCheckBox(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -47,7 +45,7 @@ QCheckBoxWrap::QCheckBoxWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QCheckBoxWrap::~QCheckBoxWrap() { this->instance.reset(); } +QCheckBoxWrap::~QCheckBoxWrap() { extrautils::safeDelete(this->instance); } Napi::Value QCheckBoxWrap::setText(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QDial/qdial_wrap.cpp b/src/cpp/lib/QtWidgets/QDial/qdial_wrap.cpp index e56a9fa38..c4adac549 100644 --- a/src/cpp/lib/QtWidgets/QDial/qdial_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QDial/qdial_wrap.cpp @@ -25,7 +25,7 @@ Napi::Object QDialWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NDial* QDialWrap::getInternalInstance() { return this->instance.get(); } +NDial* QDialWrap::getInternalInstance() { return this->instance; } QDialWrap::QDialWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -36,11 +36,9 @@ QDialWrap::QDialWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NDial(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NDial(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -51,7 +49,7 @@ QDialWrap::QDialWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QDialWrap::~QDialWrap() { this->instance.reset(); } +QDialWrap::~QDialWrap() { extrautils::safeDelete(this->instance); } Napi::Value QDialWrap::setNotchesVisible(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp b/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp index 6b1c855ad..5d246d62a 100644 --- a/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QGridLayout/qgridlayout_wrap.cpp @@ -18,9 +18,8 @@ Napi::Object QGridLayoutWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -QGridLayout* QGridLayoutWrap::getInternalInstance() { - return this->instance.get(); -} +QGridLayout* QGridLayoutWrap::getInternalInstance() { return this->instance; } +QGridLayoutWrap::~QGridLayoutWrap() { extrautils::safeDelete(this->instance); } QGridLayoutWrap::QGridLayoutWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -31,19 +30,15 @@ QGridLayoutWrap::QGridLayoutWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new QGridLayout(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new QGridLayout(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } -QGridLayoutWrap::~QGridLayoutWrap() { this->instance.reset(); } - Napi::Value QGridLayoutWrap::addWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp b/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp index 5f29d3f0e..014fe39c5 100644 --- a/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp @@ -5,7 +5,6 @@ #include "Extras/Utils/nutils.h" #include "QtGui/QPixmap/qpixmap_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h" - Napi::FunctionReference QLabelWrap::constructor; Napi::Object QLabelWrap::init(Napi::Env env, Napi::Object exports) { @@ -26,7 +25,9 @@ Napi::Object QLabelWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NLabel* QLabelWrap::getInternalInstance() { return this->instance.get(); } +NLabel* QLabelWrap::getInternalInstance() { return this->instance; } + +QLabelWrap::~QLabelWrap() { extrautils::safeDelete(this->instance); } QLabelWrap::QLabelWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -37,11 +38,9 @@ QLabelWrap::QLabelWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NLabel(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NLabel(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -52,8 +51,6 @@ QLabelWrap::QLabelWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QLabelWrap::~QLabelWrap() { this->instance.reset(); } - Napi::Value QLabelWrap::setWordWrap(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/lib/QtWidgets/QLayout/qlayout_wrap.cpp b/src/cpp/lib/QtWidgets/QLayout/qlayout_wrap.cpp index be4eb5cd5..76555fc53 100644 --- a/src/cpp/lib/QtWidgets/QLayout/qlayout_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QLayout/qlayout_wrap.cpp @@ -1,5 +1,6 @@ #include "QtWidgets/QLayout/qlayout_wrap.h" +#include "Extras/Utils/nutils.h" Napi::FunctionReference QLayoutWrap::constructor; void QLayoutWrap::init(Napi::Env env) { @@ -9,7 +10,7 @@ void QLayoutWrap::init(Napi::Env env) { constructor = Napi::Persistent(func); } -QLayout* QLayoutWrap::getInternalInstance() { return this->instance.get(); } +QLayout* QLayoutWrap::getInternalInstance() { return this->instance; } QLayoutWrap::QLayoutWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -17,4 +18,4 @@ QLayoutWrap::QLayoutWrap(const Napi::CallbackInfo& info) Napi::HandleScope scope(env); } -QLayoutWrap::~QLayoutWrap() { this->instance.reset(); } +QLayoutWrap::~QLayoutWrap() { extrautils::safeDelete(this->instance); } diff --git a/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp b/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp index 570a729f6..1630563e9 100644 --- a/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QLineEdit/qlineedit_wrap.cpp @@ -24,7 +24,7 @@ Napi::Object QLineEditWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NLineEdit* QLineEditWrap::getInternalInstance() { return this->instance.get(); } +NLineEdit* QLineEditWrap::getInternalInstance() { return this->instance; } QLineEditWrap::QLineEditWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -35,11 +35,9 @@ QLineEditWrap::QLineEditWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NLineEdit(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NLineEdit(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -50,7 +48,7 @@ QLineEditWrap::QLineEditWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QLineEditWrap::~QLineEditWrap() { this->instance.reset(); } +QLineEditWrap::~QLineEditWrap() { extrautils::safeDelete(this->instance); } Napi::Value QLineEditWrap::setText(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QMainWindow/qmainwindow_wrap.cpp b/src/cpp/lib/QtWidgets/QMainWindow/qmainwindow_wrap.cpp index c5f79527f..6c5efc646 100644 --- a/src/cpp/lib/QtWidgets/QMainWindow/qmainwindow_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QMainWindow/qmainwindow_wrap.cpp @@ -26,9 +26,9 @@ Napi::Object QMainWindowWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NMainWindow* QMainWindowWrap::getInternalInstance() { - return this->instance.get(); -} +NMainWindow* QMainWindowWrap::getInternalInstance() { return this->instance; } + +QMainWindowWrap::~QMainWindowWrap() { extrautils::safeDelete(this->instance); } QMainWindowWrap::QMainWindowWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -39,19 +39,15 @@ QMainWindowWrap::QMainWindowWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NMainWindow(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NMainWindow(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } -QMainWindowWrap::~QMainWindowWrap() { this->instance.reset(); } - Napi::Value QMainWindowWrap::setCentralWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/lib/QtWidgets/QMenu/qmenu_wrap.cpp b/src/cpp/lib/QtWidgets/QMenu/qmenu_wrap.cpp index bb427c7f8..32c775472 100644 --- a/src/cpp/lib/QtWidgets/QMenu/qmenu_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QMenu/qmenu_wrap.cpp @@ -22,7 +22,7 @@ Napi::Object QMenuWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NMenu* QMenuWrap::getInternalInstance() { return this->instance.get(); } +NMenu* QMenuWrap::getInternalInstance() { return this->instance; } QMenuWrap::QMenuWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -33,11 +33,9 @@ QMenuWrap::QMenuWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NMenu(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NMenu(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -48,7 +46,7 @@ QMenuWrap::QMenuWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QMenuWrap::~QMenuWrap() { this->instance.reset(); } +QMenuWrap::~QMenuWrap() { extrautils::safeDelete(this->instance); } Napi::Value QMenuWrap::setTitle(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QMenuBar/qmenubar_wrap.cpp b/src/cpp/lib/QtWidgets/QMenuBar/qmenubar_wrap.cpp index 7fb59515e..2981d8522 100644 --- a/src/cpp/lib/QtWidgets/QMenuBar/qmenubar_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QMenuBar/qmenubar_wrap.cpp @@ -22,7 +22,7 @@ Napi::Object QMenuBarWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NMenuBar* QMenuBarWrap::getInternalInstance() { return this->instance.get(); } +NMenuBar* QMenuBarWrap::getInternalInstance() { return this->instance; } QMenuBarWrap::QMenuBarWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -31,18 +31,16 @@ QMenuBarWrap::QMenuBarWrap(const Napi::CallbackInfo& info) if (info.Length() == 1) { if (info[0].IsExternal()) { - this->instance = std::unique_ptr( - info[0].As>().Data()); + this->instance = + new NMenuBar(info[0].As>().Data()); } else { Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap->getInternalInstance()); // this sets the parent to - // current widget + this->instance = new NMenuBar(parentWidgetWrap->getInternalInstance()); } } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NMenuBar(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -53,7 +51,7 @@ QMenuBarWrap::QMenuBarWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QMenuBarWrap::~QMenuBarWrap() { this->instance.reset(); } +QMenuBarWrap::~QMenuBarWrap() { extrautils::safeDelete(this->instance); } Napi::Value QMenuBarWrap::addMenu(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.cpp b/src/cpp/lib/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.cpp index 9c36e3e1a..1628c20ab 100644 --- a/src/cpp/lib/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.cpp @@ -32,7 +32,7 @@ Napi::Object QPlainTextEditWrap::init(Napi::Env env, Napi::Object exports) { } NPlainTextEdit *QPlainTextEditWrap::getInternalInstance() { - return this->instance.get(); + return this->instance; } QPlainTextEditWrap::QPlainTextEditWrap(const Napi::CallbackInfo &info) @@ -44,11 +44,10 @@ QPlainTextEditWrap::QPlainTextEditWrap(const Napi::CallbackInfo &info) Napi::Object parentObject = info[0].As(); QWidgetWrap *parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = + new NPlainTextEdit(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NPlainTextEdit(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -59,7 +58,9 @@ QPlainTextEditWrap::QPlainTextEditWrap(const Napi::CallbackInfo &info) &extrautils::measureQtWidget); } -QPlainTextEditWrap::~QPlainTextEditWrap() { this->instance.reset(); } +QPlainTextEditWrap::~QPlainTextEditWrap() { + extrautils::safeDelete(this->instance); +} Napi::Value QPlainTextEditWrap::setPlainText(const Napi::CallbackInfo &info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp b/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp index d914b907a..837c0f948 100644 --- a/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp @@ -24,9 +24,7 @@ Napi::Object QProgressBarWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NProgressBar* QProgressBarWrap::getInternalInstance() { - return this->instance.get(); -} +NProgressBar* QProgressBarWrap::getInternalInstance() { return this->instance; } QProgressBarWrap::QProgressBarWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -37,11 +35,9 @@ QProgressBarWrap::QProgressBarWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NProgressBar(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NProgressBar(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -52,7 +48,9 @@ QProgressBarWrap::QProgressBarWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QProgressBarWrap::~QProgressBarWrap() { this->instance.reset(); } +QProgressBarWrap::~QProgressBarWrap() { + extrautils::safeDelete(this->instance); +} Napi::Value QProgressBarWrap::setValue(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp b/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp index e8306d9a5..27f0b0426 100644 --- a/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp @@ -20,9 +20,7 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NPushButton* QPushButtonWrap::getInternalInstance() { - return this->instance.get(); -} +NPushButton* QPushButtonWrap::getInternalInstance() { return this->instance; } QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -33,11 +31,9 @@ QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NPushButton(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NPushButton(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -48,7 +44,7 @@ QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QPushButtonWrap::~QPushButtonWrap() { this->instance.reset(); } +QPushButtonWrap::~QPushButtonWrap() { extrautils::safeDelete(this->instance); } Napi::Value QPushButtonWrap::setText(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QRadioButton/qradiobutton_wrap.cpp b/src/cpp/lib/QtWidgets/QRadioButton/qradiobutton_wrap.cpp index 0b97bb345..6250bace0 100644 --- a/src/cpp/lib/QtWidgets/QRadioButton/qradiobutton_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QRadioButton/qradiobutton_wrap.cpp @@ -20,9 +20,7 @@ Napi::Object QRadioButtonWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NRadioButton* QRadioButtonWrap::getInternalInstance() { - return this->instance.get(); -} +NRadioButton* QRadioButtonWrap::getInternalInstance() { return this->instance; } QRadioButtonWrap::QRadioButtonWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -33,11 +31,9 @@ QRadioButtonWrap::QRadioButtonWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NRadioButton(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NRadioButton(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -48,7 +44,9 @@ QRadioButtonWrap::QRadioButtonWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QRadioButtonWrap::~QRadioButtonWrap() { this->instance.reset(); } +QRadioButtonWrap::~QRadioButtonWrap() { + extrautils::safeDelete(this->instance); +} Napi::Value QRadioButtonWrap::setText(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp index 50474e4c8..0d03551f4 100644 --- a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp @@ -22,9 +22,7 @@ Napi::Object QScrollAreaWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NScrollArea* QScrollAreaWrap::getInternalInstance() { - return this->instance.get(); -} +NScrollArea* QScrollAreaWrap::getInternalInstance() { return this->instance; } QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -35,18 +33,16 @@ QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NScrollArea(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NScrollArea(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } -QScrollAreaWrap::~QScrollAreaWrap() { this->instance.reset(); } +QScrollAreaWrap::~QScrollAreaWrap() { extrautils::safeDelete(this->instance); } Napi::Value QScrollAreaWrap::setWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QShortcut/qshortcut_wrap.cpp b/src/cpp/lib/QtWidgets/QShortcut/qshortcut_wrap.cpp index 7975c6c5c..bd9bbf00b 100644 --- a/src/cpp/lib/QtWidgets/QShortcut/qshortcut_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QShortcut/qshortcut_wrap.cpp @@ -1,6 +1,5 @@ #include "QtWidgets/QShortcut/qshortcut_wrap.h" -#include #include #include "Extras/Utils/nutils.h" @@ -37,19 +36,14 @@ QShortcutWrap::QShortcutWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = new NShortcut( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NShortcut(parentWidgetWrap->getInternalInstance()); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } -QShortcutWrap::~QShortcutWrap() { - // delete this->instance; This will be destroyed by the qmenu (since it takes - // the ownership) -} +QShortcutWrap::~QShortcutWrap() { extrautils::safeDelete(this->instance); } Napi::Value QShortcutWrap::setEnabled(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -85,6 +79,5 @@ Napi::Value QShortcutWrap::setContext(const Napi::CallbackInfo& info) { Napi::Number shortcutContextEnum = info[0].As(); int shortCutContext = shortcutContextEnum.Int32Value(); this->instance->setContext(static_cast(shortCutContext)); - qDebug() << "shortCutContext: " << shortCutContext; return env.Null(); } diff --git a/src/cpp/lib/QtWidgets/QSpinBox/qspinbox_wrap.cpp b/src/cpp/lib/QtWidgets/QSpinBox/qspinbox_wrap.cpp index f0a8211f0..cf733717e 100644 --- a/src/cpp/lib/QtWidgets/QSpinBox/qspinbox_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QSpinBox/qspinbox_wrap.cpp @@ -27,7 +27,7 @@ Napi::Object QSpinBoxWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NSpinBox* QSpinBoxWrap::getInternalInstance() { return this->instance.get(); } +NSpinBox* QSpinBoxWrap::getInternalInstance() { return this->instance; } QSpinBoxWrap::QSpinBoxWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -38,11 +38,9 @@ QSpinBoxWrap::QSpinBoxWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap - ->getInternalInstance()); // this sets the parent to current widget + this->instance = new NSpinBox(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NSpinBox(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); @@ -53,7 +51,7 @@ QSpinBoxWrap::QSpinBoxWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QSpinBoxWrap::~QSpinBoxWrap() { this->instance.reset(); } +QSpinBoxWrap::~QSpinBoxWrap() { extrautils::safeDelete(this->instance); } Napi::Value QSpinBoxWrap::setPrefix(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.cpp b/src/cpp/lib/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.cpp index 131c42525..12ca63ac1 100644 --- a/src/cpp/lib/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QSystemTrayIcon/qsystemtrayicon_wrap.cpp @@ -52,7 +52,9 @@ QSystemTrayIconWrap::QSystemTrayIconWrap(const Napi::CallbackInfo& info) } } -QSystemTrayIconWrap::~QSystemTrayIconWrap() { delete this->instance; } +QSystemTrayIconWrap::~QSystemTrayIconWrap() { + extrautils::safeDelete(this->instance); +} Napi::Value QSystemTrayIconWrap::show(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); diff --git a/src/cpp/lib/QtWidgets/QTabWidget/qtabwidget_wrap.cpp b/src/cpp/lib/QtWidgets/QTabWidget/qtabwidget_wrap.cpp index 9abe2dbfe..c14a464d1 100644 --- a/src/cpp/lib/QtWidgets/QTabWidget/qtabwidget_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QTabWidget/qtabwidget_wrap.cpp @@ -27,6 +27,8 @@ Napi::Object QTabWidgetWrap::init(Napi::Env env, Napi::Object exports) { NTabWidget* QTabWidgetWrap::getInternalInstance() { return this->instance; } +QTabWidgetWrap::~QTabWidgetWrap() { extrautils::safeDelete(this->instance); } + QTabWidgetWrap::QTabWidgetWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); @@ -51,8 +53,6 @@ QTabWidgetWrap::QTabWidgetWrap(const Napi::CallbackInfo& info) &extrautils::measureQtWidget); } -QTabWidgetWrap::~QTabWidgetWrap() { delete this->instance; } - Napi::Value QTabWidgetWrap::addTab(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/lib/QtWidgets/QWidget/qwidget_wrap.cpp b/src/cpp/lib/QtWidgets/QWidget/qwidget_wrap.cpp index dd21c25c9..7765b306a 100644 --- a/src/cpp/lib/QtWidgets/QWidget/qwidget_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QWidget/qwidget_wrap.cpp @@ -15,7 +15,9 @@ Napi::Object QWidgetWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NWidget* QWidgetWrap::getInternalInstance() { return this->instance.get(); } +NWidget* QWidgetWrap::getInternalInstance() { return this->instance; } + +QWidgetWrap::~QWidgetWrap() { extrautils::safeDelete(this->instance); } QWidgetWrap::QWidgetWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -23,22 +25,18 @@ QWidgetWrap::QWidgetWrap(const Napi::CallbackInfo& info) Napi::HandleScope scope(env); if (info.Length() == 1) { if (info[0].IsExternal()) { - this->instance = std::unique_ptr( - info[0].As>().Data()); + this->instance = + new NWidget(info[0].As>().Data()); } else { Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = std::make_unique( - parentWidgetWrap->getInternalInstance()); // this sets the parent to - // current widget + this->instance = new NWidget(parentWidgetWrap->getInternalInstance()); } } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new NWidget(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } - -QWidgetWrap::~QWidgetWrap() { this->instance.reset(); } diff --git a/src/cpp/lib/core/FlexLayout/flexlayout.cpp b/src/cpp/lib/core/FlexLayout/flexlayout.cpp index 1b3033034..151e20420 100644 --- a/src/cpp/lib/core/FlexLayout/flexlayout.cpp +++ b/src/cpp/lib/core/FlexLayout/flexlayout.cpp @@ -1,6 +1,5 @@ #include "core/FlexLayout/flexlayout.h" -#include #include #include "core/YogaWidget/yogawidget.h" diff --git a/src/cpp/lib/core/FlexLayout/flexlayout_wrap.cpp b/src/cpp/lib/core/FlexLayout/flexlayout_wrap.cpp index 48983c538..5102899bc 100644 --- a/src/cpp/lib/core/FlexLayout/flexlayout_wrap.cpp +++ b/src/cpp/lib/core/FlexLayout/flexlayout_wrap.cpp @@ -1,3 +1,4 @@ + #include "core/FlexLayout/flexlayout_wrap.h" #include "Extras/Utils/nutils.h" @@ -20,9 +21,9 @@ Napi::Object FlexLayoutWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -FlexLayout* FlexLayoutWrap::getInternalInstance() { - return this->instance.get(); -} +FlexLayout* FlexLayoutWrap::getInternalInstance() { return this->instance; } + +FlexLayoutWrap::~FlexLayoutWrap() { extrautils::safeDelete(this->instance); } FlexLayoutWrap::FlexLayoutWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { @@ -33,18 +34,15 @@ FlexLayoutWrap::FlexLayoutWrap(const Napi::CallbackInfo& info) Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); - this->instance = - std::make_unique(parentWidgetWrap->getInternalInstance()); + this->instance = new FlexLayout(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { - this->instance = std::make_unique(); + this->instance = new FlexLayout(); } else { Napi::TypeError::New(env, "Wrong number of arguments") .ThrowAsJavaScriptException(); } } -FlexLayoutWrap::~FlexLayoutWrap() { this->instance.reset(); } - Napi::Value FlexLayoutWrap::addWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/demo.ts b/src/demo.ts index db11e5cc5..010d8cecb 100644 --- a/src/demo.ts +++ b/src/demo.ts @@ -23,6 +23,7 @@ world.setStyleSheet(` border: 1px solid blue; qproperty-alignment: AlignCenter; `); + if (view.layout) { view.layout.addWidget(hello); view.layout.addWidget(world);