diff --git a/package.json b/package.json index 1ac7f666a..8214598b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nodegui/nodegui", - "version": "0.50.0", + "version": "0.51.0", "description": "A cross-platform library to build native desktop apps.", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h index 93e313677..f6eb6c937 100644 --- a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h @@ -6,9 +6,11 @@ #include "QtCore/QObject/qobject_wrap.h" #include "QtCore/QPoint/qpoint_wrap.h" +#include "QtCore/QRect/qrect_wrap.h" #include "QtCore/QSize/qsize_wrap.h" #include "QtGui/QCursor/qcursor_wrap.h" #include "QtGui/QIcon/qicon_wrap.h" +#include "QtGui/QPixmap/qpixmap_wrap.h" #include "QtGui/QStyle/qstyle_wrap.h" #include "QtGui/QWindow/qwindow_wrap.h" #include "QtWidgets/QAction/qaction_wrap.h" @@ -454,6 +456,17 @@ this->instance->clearMask(); \ return env.Null(); \ } \ + Napi::Value grab(const Napi::CallbackInfo& info) { \ + Napi::Env env = info.Env(); \ + Napi::Object boundingRectObject = info[0].As(); \ + QRectWrap* boundingRectWrap = \ + Napi::ObjectWrap::Unwrap(boundingRectObject); \ + auto pixmap = \ + this->instance->grab(*boundingRectWrap->getInternalInstance()); \ + auto instance = QPixmapWrap::constructor.New( \ + {Napi::External::New(env, new QPixmap(pixmap))}); \ + return instance; \ + } \ Napi::Value grabKeyboard(const Napi::CallbackInfo& info) { \ Napi::Env env = info.Env(); \ this->instance->grabKeyboard(); \ @@ -633,6 +646,7 @@ InstanceMethod("setFixedWidth", &WidgetWrapName::setFixedWidth), \ InstanceMethod("ensurePolished", &WidgetWrapName::ensurePolished), \ InstanceMethod("clearMask", &WidgetWrapName::clearMask), \ + InstanceMethod("grab", &WidgetWrapName::grab), \ InstanceMethod("grabKeyboard", &WidgetWrapName::grabKeyboard), \ InstanceMethod("grabMouse", &WidgetWrapName::grabMouse), \ InstanceMethod("hasHeightForWidth", &WidgetWrapName::hasHeightForWidth), \ diff --git a/src/lib/QtWidgets/QWidget.ts b/src/lib/QtWidgets/QWidget.ts index 2b088b151..047e9b33d 100644 --- a/src/lib/QtWidgets/QWidget.ts +++ b/src/lib/QtWidgets/QWidget.ts @@ -12,6 +12,7 @@ import { YogaWidget } from '../core/YogaWidget'; import { QPoint } from '../QtCore/QPoint'; import { QSize } from '../QtCore/QSize'; import { QRect } from '../QtCore/QRect'; +import { QPixmap } from '../QtGui/QPixmap'; import { QObjectSignals } from '../QtCore/QObject'; import { QFont } from '../QtGui/QFont'; import { QAction } from './QAction'; @@ -152,7 +153,10 @@ export class QWidget extends Yo geometry(): QRect { return QRect.fromQVariant(this.property('geometry')); } - // TODO: QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))) + grab(rect?: QRect): QPixmap { + const arg = rect ?? new QRect(0, 0, -1, -1); + return this.native.grab(arg.native); + } // TODO: void grabGesture(Qt::GestureType gesture, Qt::GestureFlags flags = Qt::GestureFlags()) grabKeyboard(): void { this.native.grabKeyboard();