From cd984fddf5a110ffea4bbdd8bcb897bb36f4cec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=AD=90=E6=A5=9A=5Czhuzi?= Date: Wed, 12 Apr 2023 00:15:38 +0800 Subject: [PATCH] update --- src/FluApp.cpp | 6 +++--- src/WindowHelper.cpp | 24 ++++++++++++++++-------- src/WindowHelper.h | 3 +++ src/controls/FluWindow.qml | 6 ++++++ 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/FluApp.cpp b/src/FluApp.cpp index f21a50e..47d91ab 100644 --- a/src/FluApp.cpp +++ b/src/FluApp.cpp @@ -63,14 +63,14 @@ void FluApp::navigate(const QString& route,const QJsonObject& argument,FluRegist } properties.insert("argument",argument); QQuickWindow *view = qobject_cast(component.createWithInitialProperties(properties)); + if(FluTheme::getInstance()->frameless()){ + view->setFlag(Qt::FramelessWindowHint,true); + } wnds.insert(view->winId(),view); if(fluRegister){ fluRegister->to(view); } view->setColor(QColor(Qt::transparent)); - if(view->maximumWidth()==view->minimumWidth()&&view->maximumHeight()==view->minimumHeight()){ - view->resize(view->minimumSize()); - } view->show(); } diff --git a/src/WindowHelper.cpp b/src/WindowHelper.cpp index 0d89d50..4707071 100644 --- a/src/WindowHelper.cpp +++ b/src/WindowHelper.cpp @@ -23,16 +23,24 @@ WindowHelper::WindowHelper(QObject *parent) void WindowHelper::initWindow(QQuickWindow* window){ this->window = window; +} + +void WindowHelper::firstUpdate(){ + if(isFisrt){ #ifdef Q_OS_WIN - if(FluTheme::getInstance()->frameless()){ - HWND wnd = (HWND)window->winId(); - SetWindowLongPtr(wnd, GWL_STYLE, static_cast(Style::aero_borderless)); - const MARGINS shadow_on = { 1, 1, 1, 1 }; - DwmExtendFrameIntoClientArea(wnd, &shadow_on); - SetWindowPos(wnd, Q_NULLPTR, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); - ShowWindow(wnd, SW_SHOW); - } + if(FluTheme::getInstance()->frameless()){ + HWND wnd = (HWND)window->winId(); + SetWindowLongPtr(wnd, GWL_STYLE, static_cast(Style::aero_borderless)); + const MARGINS shadow_on = { 1, 1, 1, 1 }; + DwmExtendFrameIntoClientArea(wnd, &shadow_on); + SetWindowPos(wnd, Q_NULLPTR, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE); + ShowWindow(wnd, SW_SHOW); + window->setFlag(Qt::FramelessWindowHint,false); + } #endif + isFisrt = false; + } + } QVariant WindowHelper::createRegister(const QString& path){ diff --git a/src/WindowHelper.h b/src/WindowHelper.h index 23aa98e..f5fb4f2 100644 --- a/src/WindowHelper.h +++ b/src/WindowHelper.h @@ -18,8 +18,11 @@ public: Q_INVOKABLE void destoryWindow(); Q_INVOKABLE QVariant createRegister(const QString& path); + Q_INVOKABLE void firstUpdate(); + private: QQuickWindow* window; + bool isFisrt=true; }; #endif // WINDOWHELPER_H diff --git a/src/controls/FluWindow.qml b/src/controls/FluWindow.qml index 376e0e6..b8adfa7 100644 --- a/src/controls/FluWindow.qml +++ b/src/controls/FluWindow.qml @@ -32,6 +32,12 @@ ApplicationWindow { clip: true } + onActiveChanged: { + if(active){ + helper.firstUpdate() + } + } + onClosing: (event)=>{ //销毁窗口,释放资源