diff --git a/src/cpp/include/nodegui/QtGui/QWindow/qwindow_wrap.h b/src/cpp/include/nodegui/QtGui/QWindow/qwindow_wrap.h index 5f35e3ad5..70722f5bb 100644 --- a/src/cpp/include/nodegui/QtGui/QWindow/qwindow_wrap.h +++ b/src/cpp/include/nodegui/QtGui/QWindow/qwindow_wrap.h @@ -50,6 +50,8 @@ class DLL_EXPORT QWindowWrap : public Napi::ObjectWrap, Napi::Value startSystemResize(const Napi::CallbackInfo& info); Napi::Value setWindowState(const Napi::CallbackInfo& info); Napi::Value windowState(const Napi::CallbackInfo& info); + Napi::Value visibility(const Napi::CallbackInfo& info); + Napi::Value setVisibility(const Napi::CallbackInfo& info); protected: bool eventFilter(QObject* watched, QEvent* event) override; diff --git a/src/cpp/lib/QtGui/QWindow/qwindow_wrap.cpp b/src/cpp/lib/QtGui/QWindow/qwindow_wrap.cpp index 1f230d367..00b0d98a7 100644 --- a/src/cpp/lib/QtGui/QWindow/qwindow_wrap.cpp +++ b/src/cpp/lib/QtGui/QWindow/qwindow_wrap.cpp @@ -20,6 +20,8 @@ Napi::Object QWindowWrap::init(Napi::Env env, Napi::Object exports) { InstanceMethod("startSystemResize", &QWindowWrap::startSystemResize), InstanceMethod("setWindowState", &QWindowWrap::setWindowState), InstanceMethod("windowState", &QWindowWrap::windowState), + InstanceMethod("visibility", &QWindowWrap::visibility), + InstanceMethod("setVisibility", &QWindowWrap::setVisibility), QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QWindowWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -59,6 +61,15 @@ void QWindowWrap::connectSignalsToEventEmitter() { {Napi::String::New(env, "screenChanged"), instance}); }); + QObject::connect( + this->instance.data(), &QWindow::visibilityChanged, + [=](QWindow::Visibility visibility) { + Napi::Env env = this->emitOnNode.Env(); + Napi::HandleScope scope(env); + this->emitOnNode.Call({Napi::String::New(env, "visibilityChanged"), + Napi::Number::New(env, visibility)}); + }); + this->instance->installEventFilter(this); } @@ -117,12 +128,26 @@ Napi::Value QWindowWrap::setWindowState(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::Number state = info[0].As(); this->instance->setWindowState( - static_cast(state.Int32Value())); + static_cast(state.Uint32Value())); return env.Null(); } Napi::Value QWindowWrap::windowState(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); - int state = static_cast(this->instance->windowState()); + uint state = static_cast(this->instance->windowState()); return Napi::Value::From(env, state); } + +Napi::Value QWindowWrap::visibility(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + uint state = static_cast(this->instance->visibility()); + return Napi::Value::From(env, state); +} + +Napi::Value QWindowWrap::setVisibility(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::Number state = info[0].As(); + this->instance->setVisibility( + static_cast(state.Uint32Value())); + return env.Null(); +} diff --git a/src/lib/QtEnums/Visibility/index.ts b/src/lib/QtEnums/Visibility/index.ts new file mode 100644 index 000000000..9ad6179d8 --- /dev/null +++ b/src/lib/QtEnums/Visibility/index.ts @@ -0,0 +1,8 @@ +export enum Visibility { + Hidden = 0, + AutomaticVisibility = 1, + Windowed = 2, + Minimized = 3, + Maximized = 4, + FullScreen = 5, +} diff --git a/src/lib/QtEnums/index.ts b/src/lib/QtEnums/index.ts index 07483ce80..9286ad095 100644 --- a/src/lib/QtEnums/index.ts +++ b/src/lib/QtEnums/index.ts @@ -90,3 +90,4 @@ export { WindowType } from './WindowType'; export { PenStyle } from './PenStyle'; export { PenCapStyle } from './PenCapStyle'; export { DialogCode } from './DialogCode'; +export { Visibility } from './Visibility'; diff --git a/src/lib/QtGui/QWindow.ts b/src/lib/QtGui/QWindow.ts index d0274bd73..7adcc620e 100644 --- a/src/lib/QtGui/QWindow.ts +++ b/src/lib/QtGui/QWindow.ts @@ -3,7 +3,7 @@ import { checkIfNativeElement, registerNativeWrapFunction } from '../utils/helpe import { NodeObject, QObjectSignals } from '../QtCore/QObject'; import { QScreen } from './QScreen'; import { wrapperCache } from '../core/WrapperCache'; -import { Edge, WindowState } from '../QtEnums'; +import { Edge, Visibility, WindowState } from '../QtEnums'; export class QWindow extends NodeObject { native: NativeElement; @@ -66,10 +66,17 @@ export class QWindow extends NodeObject { windowState(): WindowState { return this.native.windowState(); } + visibility(): Visibility { + return this.native.visibility(); + } + setVisibility(visibility: Visibility): void { + return this.native.setVisibility(visibility); + } } export interface QWindowSignals extends QObjectSignals { screenChanged: (screen: QScreen) => void; + visibilityChanged: (visibility: Visibility) => void; } registerNativeWrapFunction('QWindowWrap', (native: any) => {