Inform Qt about taskbar hider

This allows the feature to work without patching Qt
This commit is contained in:
Ilya Fedin 2021-10-04 10:09:39 +04:00 committed by John Preston
parent fc8a0d0efd
commit c2212c719e
2 changed files with 7 additions and 1 deletions

View file

@ -115,7 +115,8 @@ struct MainWindow::Private {
MainWindow::MainWindow(not_null<Window::Controller*> controller)
: Window::MainWindow(controller)
, _private(std::make_unique<Private>())
, ps_tbHider_hWnd(createTaskbarHider()) {
, ps_tbHider_hWnd(createTaskbarHider())
, ps_tbHider(QWindow::fromWinId(WId(ps_tbHider_hWnd))) {
QCoreApplication::instance()->installNativeEventFilter(
EventFilter::CreateInstance(this));
@ -238,6 +239,7 @@ void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
if (psOwner) {
SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, 0);
windowHandle()->setTransientParent(nullptr);
psRefreshTaskbarIcon();
}
} break;
@ -247,6 +249,7 @@ void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
if (!psOwner) {
SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, (LONG_PTR)ps_tbHider_hWnd);
windowHandle()->setTransientParent(ps_tbHider);
}
} break;
@ -260,6 +263,7 @@ void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
if (psOwner) {
SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, 0);
windowHandle()->setTransientParent(nullptr);
psRefreshTaskbarIcon();
}
} break;
@ -533,6 +537,7 @@ MainWindow::~MainWindow() {
}
psDestroyIcons();
if (ps_tbHider) delete ps_tbHider;
if (ps_tbHider_hWnd) DestroyWindow(ps_tbHider_hWnd);
EventFilter::Destroy();

View file

@ -87,6 +87,7 @@ private:
HWND ps_hWnd = nullptr;
HWND ps_tbHider_hWnd = nullptr;
QWindow *ps_tbHider = nullptr;
HICON ps_iconBig = nullptr;
HICON ps_iconSmall = nullptr;
HICON ps_iconOverlay = nullptr;