| | |
| | | |
| | | namespace QWK { |
| | | |
| | | class Win10BorderHandler; |
| | | |
| | | class QWK_CORE_EXPORT Win32WindowContext : public AbstractWindowContext { |
| | | Q_OBJECT |
| | | public: |
| | | Win32WindowContext(QWindow *window, WindowItemDelegate *delegate); |
| | | Win32WindowContext(); |
| | | ~Win32WindowContext() override; |
| | | |
| | | enum WindowPart { |
| | |
| | | TitleBar, |
| | | }; |
| | | |
| | | public: |
| | | bool setup() override; |
| | | QString key() const override; |
| | | void virtual_hook(int id, void *data) override; |
| | | |
| | | Q_INVOKABLE bool needWin10BorderHandler() const; |
| | | Q_INVOKABLE void setWin10BorderHandler(Win10BorderHandler *handler); |
| | | |
| | | protected: |
| | | bool setupHost() override; |
| | | |
| | | public: |
| | | bool windowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result); |
| | | |
| | | bool systemMenuHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, |
| | | LRESULT *result); |
| | | |
| | | // In order to perfectly apply Windows 11 Snap Layout into the Qt window, we need to |
| | | // intercept and simulate most of the mouse events, so that the processing logic |
| | |
| | | bool customWindowHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, |
| | | LRESULT *result); |
| | | |
| | | bool nonClientCalcSizeHandler(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, |
| | | LRESULT *result); |
| | | |
| | | protected: |
| | | WId windowId = 0; |
| | | |
| | |
| | | // Whether the last mouse leave message is blocked, mainly for handling the unexpected |
| | | // WM_MOUSELEAVE. |
| | | bool mouseLeaveBlocked = false; |
| | | |
| | | bool centered = false; |
| | | |
| | | std::unique_ptr<Win10BorderHandler> win10BorderHandler; |
| | | }; |
| | | |
| | | } |