diff --git a/CMakeLists.txt b/CMakeLists.txt index a157de726..58d1ee14d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QDrag/qdrag_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp" + "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QWheelEvent/qwheelevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QPaintEvent/qpaintevent_wrap.cpp" diff --git a/src/cpp/include/nodegui/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h b/src/cpp/include/nodegui/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h new file mode 100644 index 000000000..c1949703f --- /dev/null +++ b/src/cpp/include/nodegui/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include + +#include "Extras/Export/export.h" +#include "QtGui/QEvent/QEvent/qevent_macro.h" +#include "core/Component/component_macro.h" + +class DLL_EXPORT QMoveEventWrap : public Napi::ObjectWrap { + COMPONENT_WRAPPED_METHODS_DECLARATION + QEVENT_WRAPPED_METHODS_DECLARATION + + private: + QMoveEvent* instance; + + public: + static Napi::Object init(Napi::Env env, Napi::Object exports); + QMoveEventWrap(const Napi::CallbackInfo& info); + ~QMoveEventWrap(); + QMoveEvent* getInternalInstance(); + // class constructor + static Napi::FunctionReference constructor; + // wrapped methods + Napi::Value oldPos(const Napi::CallbackInfo& info); + Napi::Value pos(const Napi::CallbackInfo& info); +}; diff --git a/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp b/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp new file mode 100644 index 000000000..13245df58 --- /dev/null +++ b/src/cpp/lib/QtGui/QEvent/QMoveEvent/qmoveevent_wrap.cpp @@ -0,0 +1,59 @@ +#include "QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h" + +#include + +#include "Extras/Utils/nutils.h" +#include "QtCore/QPoint/qpoint_wrap.h" + +Napi::FunctionReference QMoveEventWrap::constructor; + +Napi::Object QMoveEventWrap::init(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + char CLASSNAME[] = "QMoveEvent"; + Napi::Function func = + DefineClass(env, CLASSNAME, + {InstanceMethod("oldPos", &QMoveEventWrap::oldPos), + InstanceMethod("pos", &QMoveEventWrap::pos), + + COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QMoveEventWrap) + QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QMoveEventWrap)}); + constructor = Napi::Persistent(func); + exports.Set(CLASSNAME, func); + return exports; +} + +QMoveEvent* QMoveEventWrap::getInternalInstance() { return this->instance; } + +QMoveEventWrap::QMoveEventWrap(const Napi::CallbackInfo& info) + : Napi::ObjectWrap(info) { + Napi::Env env = info.Env(); + if (info.Length() == 1) { + Napi::External eventObject = + info[0].As>(); + this->instance = static_cast(eventObject.Data()); + } else { + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + } + this->rawData = extrautils::configureComponent(this->getInternalInstance()); +} + +QMoveEventWrap::~QMoveEventWrap() { + // Do not destroy instance here. It will be done by Qt Event loop. +} + +Napi::Value QMoveEventWrap::oldPos(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + QPoint ret = this->instance->oldPos(); + auto instance = QPointWrap::constructor.New( + {Napi::External::New(env, new QPoint(ret))}); + return instance; +} + +Napi::Value QMoveEventWrap::pos(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + QPoint ret = this->instance->pos(); + auto instance = QPointWrap::constructor.New( + {Napi::External::New(env, new QPoint(ret))}); + return instance; +} diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index e57bb8297..817660b77 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -29,6 +29,7 @@ #include "QtGui/QEvent/QDropEvent/qdropevent_wrap.h" #include "QtGui/QEvent/QKeyEvent/qkeyevent_wrap.h" #include "QtGui/QEvent/QMouseEvent/qmouseevent_wrap.h" +#include "QtGui/QEvent/QMoveEvent/qmoveevent_wrap.h" #include "QtGui/QEvent/QNativeGestureEvent/qnativegestureevent_wrap.h" #include "QtGui/QEvent/QPaintEvent/qpaintevent_wrap.h" #include "QtGui/QEvent/QResizeEvent/qresizeevent_wrap.h" @@ -202,6 +203,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { QLineEditWrap::init(env, exports); QKeyEventWrap::init(env, exports); QMouseEventWrap::init(env, exports); + QMoveEventWrap::init(env, exports); QWheelEventWrap::init(env, exports); QTabletEventWrap::init(env, exports); QDragWrap::init(env, exports); diff --git a/src/index.ts b/src/index.ts index 62c56c0ce..224ef541d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,6 +24,7 @@ export { QFontMetricsF } from './lib/QtGui/QFontMetricsF'; // Events: Maybe a separate module ? export { QKeyEvent } from './lib/QtGui/QEvent/QKeyEvent'; export { QMouseEvent } from './lib/QtGui/QEvent/QMouseEvent'; +export { QMoveEvent } from './lib/QtGui/QEvent/QMoveEvent'; export { QWheelEvent } from './lib/QtGui/QEvent/QWheelEvent'; export { QNativeGestureEvent } from './lib/QtGui/QEvent/QNativeGestureEvent'; export { QTabletEvent } from './lib/QtGui/QEvent/QTabletEvent'; diff --git a/src/lib/QtGui/QEvent/QMoveEvent.ts b/src/lib/QtGui/QEvent/QMoveEvent.ts new file mode 100644 index 000000000..62c2b0423 --- /dev/null +++ b/src/lib/QtGui/QEvent/QMoveEvent.ts @@ -0,0 +1,18 @@ +import addon from '../../utils/addon'; +import { NativeRawPointer } from '../../core/Component'; +import { QEvent } from './QEvent'; +import { QPoint } from '../../QtCore/QPoint'; + +export class QMoveEvent extends QEvent { + constructor(event: NativeRawPointer<'QEvent'>) { + super(new addon.QMoveEvent(event)); + } + + oldPos(): QPoint { + return new QPoint(this.native.oldPos()); + } + + pos(): QPoint { + return new QPoint(this.native.pos()); + } +}