diff --git a/src/FluFramelessHelper.cpp b/src/FluFramelessHelper.cpp index 9a009a21..94a522e3 100644 --- a/src/FluFramelessHelper.cpp +++ b/src/FluFramelessHelper.cpp @@ -33,7 +33,7 @@ static inline bool isCompositionEnabled(){ static inline void showShadow(HWND hwnd){ if(isCompositionEnabled()){ - const MARGINS shadow = { 1, 0, 0, 0 }; + const MARGINS shadow = { 1, 1, 1, 1 }; typedef HRESULT (WINAPI* DwmExtendFrameIntoClientAreaPtr)(HWND hWnd, const MARGINS *pMarInset); HMODULE module = LoadLibraryW(L"dwmapi.dll"); if (module) @@ -113,14 +113,6 @@ bool FramelessEventFilter::nativeEventFilter(const QByteArray &eventType, void * QGuiApplication::sendEvent(_helper->maximizeButton(),&event); } return false; - }else if(uMsg == WM_GETMINMAXINFO){ - if(IsZoomed(hwnd)){ - RECT frame = {0,0,0,0}; - AdjustWindowRectEx(&frame,WS_OVERLAPPEDWINDOW,FALSE,0); - _helper->setOffsetXY(QPoint(floor(abs(frame.left)/_helper->window->devicePixelRatio()),floor(abs(frame.bottom)/_helper->window->devicePixelRatio()))); - }else{ - _helper->setOffsetXY(QPoint(0,0)); - } } return false; #endif @@ -247,7 +239,6 @@ void FluFramelessHelper::componentComplete(){ #endif _stayTop = QQmlProperty(window,"stayTop"); _screen = QQmlProperty(window,"screen"); - _offsetXY = QQmlProperty(window,"_offsetXY"); _onStayTopChange(); _stayTop.connectNotifySignal(this,SLOT(_onStayTopChange())); _screen.connectNotifySignal(this,SLOT(_onScreenChanged())); @@ -341,10 +332,6 @@ QObject* FluFramelessHelper::maximizeButton(){ return var.value(); } -void FluFramelessHelper::setOffsetXY(QPoint val){ - _offsetXY.write(val); -} - bool FluFramelessHelper::resizeable(){ return !(window->width() == window->maximumWidth() && window->width() == window->minimumWidth() && window->height() == window->maximumHeight() && window->height() == window->minimumHeight()); } diff --git a/src/FluFramelessHelper.h b/src/FluFramelessHelper.h index 0943f96b..09334533 100644 --- a/src/FluFramelessHelper.h +++ b/src/FluFramelessHelper.h @@ -39,7 +39,6 @@ public: bool hoverMaxBtn(); bool resizeable(); QObject* maximizeButton(); - void setOffsetXY(QPoint val); Q_INVOKABLE void showSystemMenu(); protected: bool eventFilter(QObject *obj, QEvent *event) override; @@ -55,7 +54,6 @@ private: FramelessEventFilter* _nativeEvent = nullptr; QQmlProperty _stayTop; QQmlProperty _screen; - QQmlProperty _offsetXY; }; #endif // FLUFRAMELESSHELPER_H diff --git a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml index 7bf8f890..f97de0ca 100644 --- a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml +++ b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml @@ -73,6 +73,19 @@ Window { Component.onDestruction: { lifecycle.onDestruction() } + onVisibilityChanged: { + if(visibility === Window.Maximized || visibility === Window.FullScreen){ + var dx = window.x-Screen.virtualX + var dy = window.y-Screen.virtualY + if(dx<0 && dy<0){ + _offsetXY = Qt.point(Math.abs(dx+1),Math.abs(dy+1)) + }else{ + _offsetXY = Qt.point(0,0) + } + }else{ + _offsetXY = Qt.point(0,0) + } + } onShowSystemMenu: { if(loader_frameless_helper.item){ loader_frameless_helper.item.showSystemMenu() diff --git a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml index 4a43568b..ecc18978 100644 --- a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml +++ b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml @@ -72,6 +72,19 @@ Window { Component.onDestruction: { lifecycle.onDestruction() } + onVisibilityChanged: { + if(visibility === Window.Maximized || visibility === Window.FullScreen){ + var dx = window.x-Screen.virtualX + var dy = window.y-Screen.virtualY + if(dx<0 && dy<0){ + _offsetXY = Qt.point(Math.abs(dx+1),Math.abs(dy+1)) + }else{ + _offsetXY = Qt.point(0,0) + } + }else{ + _offsetXY = Qt.point(0,0) + } + } onShowSystemMenu: { if(loader_frameless_helper.item){ loader_frameless_helper.item.showSystemMenu()