diff --git a/app/SysTray-X/SysTray-X.pro b/app/SysTray-X/SysTray-X.pro index bf440b8..7890ea9 100644 --- a/app/SysTray-X/SysTray-X.pro +++ b/app/SysTray-X/SysTray-X.pro @@ -142,7 +142,7 @@ win32: { } else { JSON_EXE_PATH = $$system(powershell -Command "('$$shell_path($${OUT_PWD}/release/$${TARGET}.exe)').replace('\\','\\\\')") - QMAKE_POST_LINK = $$[QT_INSTALL_BINS]\windeployqt.exe "$$shell_path($${OUT_PWD}/release/$${TARGET}.exe)" + QMAKE_POST_LINK = $$[QT_INSTALL_BINS]\windeployqt.exe "$$shell_path($${OUT_PWD}/release/$${TARGET}.exe)" & QMAKE_POST_LINK += powershell -Command \"(Get-Content $$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json.template) ).replace(\'SYSTRAY_X_PATH\',\'$$JSON_EXE_PATH\') | Set-Content $$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json)\" & } diff --git a/app/SysTray-X/windowctrl-win.cpp b/app/SysTray-X/windowctrl-win.cpp index 3ab7996..30f767a 100644 --- a/app/SysTray-X/windowctrl-win.cpp +++ b/app/SysTray-X/windowctrl-win.cpp @@ -77,9 +77,14 @@ QList< quint64 > WindowCtrlWin::getWinIds() /* * Minimize a window */ -void WindowCtrlWin::minimizeWindow( quint64 window ) +void WindowCtrlWin::minimizeWindow( quint64 window, bool hide ) { ShowWindow( (HWND)window, SW_MINIMIZE ); + + if( hide ) + { + hideWindow( (HWND)window ); + } } @@ -89,14 +94,24 @@ void WindowCtrlWin::minimizeWindow( quint64 window ) void WindowCtrlWin::normalizeWindow( quint64 window ) { ShowWindow( (HWND)window, SW_RESTORE ); + SetForegroundWindow( (HWND)window ); } /* * Hide a window */ -void WindowCtrlWin::hideWindow( quint64 window, bool state ) +void WindowCtrlWin::hideWindow( HWND hwnd ) { + emit signalConsole( "Hide" ); + + long style = GetWindowLong( hwnd, GWL_STYLE ); + + style &= ~(WS_VISIBLE); + style |= WS_EX_TOOLWINDOW; + style &= ~(WS_EX_APPWINDOW); + + SetWindowLong( hwnd, GWL_STYLE, style ); } #endif // Q_OS_WIN diff --git a/app/SysTray-X/windowctrl-win.h b/app/SysTray-X/windowctrl-win.h index ee9f8e7..9c40097 100644 --- a/app/SysTray-X/windowctrl-win.h +++ b/app/SysTray-X/windowctrl-win.h @@ -57,8 +57,9 @@ class WindowCtrlWin : public QObject * @brief minimizeWindow. Minimize window. * * @param window The window. + * @param hide Hide from taskbar */ - void minimizeWindow( quint64 window ); + void minimizeWindow( quint64 window, bool hide ); /** * @brief normalizeWindow. Normalize window. @@ -67,15 +68,14 @@ class WindowCtrlWin : public QObject */ void normalizeWindow( quint64 window ); + private: + /** * @brief hideWindow. Hide window. * - * @param window The window. - * @param state The state of the window. + * @param hwnd The window. */ - void hideWindow( quint64 window, bool state ); - - private: + void hideWindow( HWND hwnd ); /** * @brief EnumWindowsProc. Callback for window enumaration. diff --git a/app/SysTray-X/windowctrl.cpp b/app/SysTray-X/windowctrl.cpp index f972102..1640eb7 100644 --- a/app/SysTray-X/windowctrl.cpp +++ b/app/SysTray-X/windowctrl.cpp @@ -156,7 +156,6 @@ void WindowCtrl::slotShowHide() foreach( quint64 win_id, getWinIds() ) { - hideWindow( win_id, false ); normalizeWindow( win_id ); emit signalConsole("Normalize"); @@ -169,11 +168,7 @@ void WindowCtrl::slotShowHide() foreach( quint64 win_id, getWinIds() ) { - if( m_minimize_hide ) - { - hideWindow( win_id, true ); - } - minimizeWindow( win_id ); + minimizeWindow( win_id, m_minimize_hide ); emit signalConsole("Minimize"); }