diff --git a/src/cpp/include/nodegui/QtWidgets/QAbstractItemView/qabstractitemview_macro.h b/src/cpp/include/nodegui/QtWidgets/QAbstractItemView/qabstractitemview_macro.h index ea1cf49c8..5c28796ae 100644 --- a/src/cpp/include/nodegui/QtWidgets/QAbstractItemView/qabstractitemview_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QAbstractItemView/qabstractitemview_macro.h @@ -211,6 +211,16 @@ this->instance->setItemDelegateForRow(row, delegate); \ } \ return env.Null(); \ + } \ + Napi::Value sizeHintForIndex(const Napi::CallbackInfo& info) { \ + Napi::Env env = info.Env(); \ + QModelIndexWrap* indexWrap = \ + Napi::ObjectWrap::Unwrap(info[0].As()); \ + QModelIndex* index = indexWrap->getInternalInstance(); \ + QSize result = this->instance->sizeHintForIndex(*index); \ + auto resultInstance = QSizeWrap::constructor.New( \ + {Napi::External::New(env, new QSize(result))}); \ + return resultInstance; \ } #define QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION \ @@ -235,6 +245,16 @@ info[1].As().Int32Value()); \ this->instance->scrollTo(*index, hint); \ return env.Null(); \ + } \ + Napi::Value visualRect(const Napi::CallbackInfo& info) { \ + Napi::Env env = info.Env(); \ + QModelIndexWrap* indexWrap = \ + Napi::ObjectWrap::Unwrap(info[0].As()); \ + QModelIndex* index = indexWrap->getInternalInstance(); \ + QRect ret = this->instance->visualRect(*index); \ + auto instance = QRectWrap::constructor.New( \ + {Napi::External::New(env, new QRect(ret))}); \ + return instance; \ } #endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_DECLARATION @@ -275,7 +295,9 @@ InstanceMethod("setItemDelegateForColumn", \ &WidgetWrapName::setItemDelegateForColumn), \ InstanceMethod("setItemDelegateForRow", \ - &WidgetWrapName::setItemDelegateForRow), + &WidgetWrapName::setItemDelegateForRow), \ + InstanceMethod("visualRect", &WidgetWrapName::visualRect), \ + InstanceMethod("sizeHintForIndex", &WidgetWrapName::sizeHintForIndex), #endif // QABSTRACTITEMVIEW_WRAPPED_METHODS_EXPORT_DEFINE diff --git a/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp b/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp index 750a33495..356011173 100644 --- a/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QHeaderView/nheaderview.hpp @@ -21,4 +21,7 @@ class DLL_EXPORT NHeaderView : public QHeaderView, public NodeWidget { void _protected_scrollTo(const QModelIndex &index, ScrollHint hint) { scrollTo(index, hint); } + QRect _protected_visualRect(const QModelIndex &index) const { + return visualRect(index); + } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QHeaderView/qheaderview_wrap.h b/src/cpp/include/nodegui/QtWidgets/QHeaderView/qheaderview_wrap.h index f6b9281cf..81d07f6ee 100644 --- a/src/cpp/include/nodegui/QtWidgets/QHeaderView/qheaderview_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QHeaderView/qheaderview_wrap.h @@ -43,6 +43,22 @@ class DLL_EXPORT QHeaderViewWrap : public Napi::ObjectWrap { return env.Null(); } + Napi::Value visualRect(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + + NHeaderView* wrapper = dynamic_cast(this->instance.data()); + if (wrapper) { + QModelIndexWrap* indexWrap = + Napi::ObjectWrap::Unwrap(info[0].As()); + QModelIndex* index = indexWrap->getInternalInstance(); + QRect ret = wrapper->_protected_visualRect(*index); + auto instance = QRectWrap::constructor.New( + {Napi::External::New(env, new QRect(ret))}); + return instance; + } + return env.Null(); + } + private: QPointer instance; diff --git a/src/lib/QtWidgets/QAbstractItemView.ts b/src/lib/QtWidgets/QAbstractItemView.ts index eb7bcbfb7..57e8dcb7f 100644 --- a/src/lib/QtWidgets/QAbstractItemView.ts +++ b/src/lib/QtWidgets/QAbstractItemView.ts @@ -10,6 +10,7 @@ import { QItemSelectionModel } from '../QtCore/QItemSelectionModel'; import { NativeElement } from '../core/Component'; import { wrapperCache } from '../core/WrapperCache'; import { QAbstractItemDelegate } from './QAbstractItemDelegate'; +import { QRect } from '../QtCore/QRect'; /** @@ -197,9 +198,11 @@ export abstract class QAbstractItemView