Fix up QHeaderView failing on the default nodejs MS compiler

This commit is contained in:
Simon Edwards 2021-08-31 18:22:32 +02:00
parent 391971f80b
commit 87af1db2bc
3 changed files with 31 additions and 13 deletions

View File

@ -12,5 +12,13 @@ class DLL_EXPORT NHeaderView : public QHeaderView, public NodeWidget {
public:
using QHeaderView::QHeaderView;
virtual void connectSignalsToEventEmitter() { QABSTRACTITEMVIEW_SIGNALS }
virtual void connectSignalsToEventEmitter(){QABSTRACTITEMVIEW_SIGNALS}
QModelIndex _protected_indexAt(const QPoint &p) const {
return indexAt(p);
}
void _protected_scrollTo(const QModelIndex &index, ScrollHint hint) {
scrollTo(index, hint);
}
};

View File

@ -17,22 +17,32 @@ class DLL_EXPORT QHeaderViewWrap : public Napi::ObjectWrap<QHeaderViewWrap> {
QPointWrap* pointWrap =
Napi::ObjectWrap<QPointWrap>::Unwrap(info[0].As<Napi::Object>());
QPoint* point = pointWrap->getInternalInstance();
QModelIndex result = this->instance->QAbstractItemView::indexAt(*point);
auto resultInstance = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(result))});
return resultInstance;
NHeaderView* wrapper = dynamic_cast<NHeaderView*>(this->instance.data());
if (wrapper) {
QModelIndex result = wrapper->_protected_indexAt(*point);
auto resultInstance = QModelIndexWrap::constructor.New(
{Napi::External<QModelIndex>::New(env, new QModelIndex(result))});
return resultInstance;
} else {
return env.Null();
}
}
Napi::Value scrollTo(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
QModelIndexWrap* indexWrap =
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>());
QModelIndex* index = indexWrap->getInternalInstance();
QAbstractItemView::ScrollHint hint =
static_cast<QAbstractItemView::ScrollHint>(
info[1].As<Napi::Number>().Int32Value());
this->instance->QAbstractItemView::scrollTo(*index, hint);
NHeaderView* wrapper = dynamic_cast<NHeaderView*>(this->instance.data());
if (wrapper) {
QModelIndexWrap* indexWrap =
Napi::ObjectWrap<QModelIndexWrap>::Unwrap(info[0].As<Napi::Object>());
QModelIndex* index = indexWrap->getInternalInstance();
QAbstractItemView::ScrollHint hint =
static_cast<QAbstractItemView::ScrollHint>(
info[1].As<Napi::Number>().Int32Value());
wrapper->_protected_scrollTo(*index, hint);
}
return env.Null();
}

View File

@ -28,7 +28,7 @@ QHeaderViewWrap::QHeaderViewWrap(const Napi::CallbackInfo& info)
Napi::Env env = info.Env();
Napi::HandleScope scope(env);
int len = info.Length();
size_t len = info.Length();
this->disableDeletion = false;
if (len == 1) {