From: Steven P. <bj...@us...> - 2010-03-28 23:23:06
|
Update of /cvsroot/virtuawin In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv16435 Modified Files: ConfigParameters.h DiskRoutines.c Resource.h SetupDialog.c VirtuaWin.c VirtuaWin.rc Log Message: 2976533 Changed the way minimized windows are handled, introduced new 'Only hide taskbar button ...' Expert option to disable this in case it has side effects on other OSs Index: ConfigParameters.h =================================================================== RCS file: /cvsroot/virtuawin/ConfigParameters.h,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- ConfigParameters.h 13 Mar 2010 02:21:04 -0000 1.46 +++ ConfigParameters.h 28 Mar 2010 23:22:57 -0000 1.47 @@ -65,6 +65,7 @@ extern vwUByte winListCompact; // if window list menu should be compact extern vwUByte winMenuCompact; // if current window menu should be compact extern vwUByte hotkeyMenuLoc; // Location to use if menu/list is opened via a hotkey +extern vwUByte minWinHide; // Flag to determine how to hide minimized windows extern vwUByte vwHookUse; // Use vwHook to resolve activate issues extern TCHAR *desktopName[vwDESKTOP_SIZE]; Index: VirtuaWin.c =================================================================== RCS file: /cvsroot/virtuawin/VirtuaWin.c,v retrieving revision 1.184 retrieving revision 1.185 diff -u -d -r1.184 -r1.185 --- VirtuaWin.c 25 Mar 2010 00:49:20 -0000 1.184 +++ VirtuaWin.c 28 Mar 2010 23:22:57 -0000 1.185 @@ -177,6 +177,7 @@ vwUByte useDskChgModRelease = 0 ; vwUByte taskbarFixRequired = 0 ; vwUByte preserveZOrder = 2 ; +vwUByte minWinHide = 1 ; vwUByte taskbarBCType; // taskbar button container type - one of vwTASKBAR_BC_* HWND taskbarBCHWnd; HANDLE taskbarProcHdl; @@ -867,15 +868,7 @@ taskHWnd = FindWindowEx(hwndBar, NULL,_T("MSTaskSwWClass"), NULL); - if(taskHWnd == NULL) - { - if(noTaskbarCheck == 0) - { - MessageBox(hWnd,_T("Could not locate handle to the taskbar.\n This will disable the ability to hide troublesome windows correctly."),vwVIRTUAWIN_NAME _T(" Error"), 0); - noTaskbarCheck = 2 ; - } - } - else if(preserveZOrder > 2) + if((taskHWnd != NULL) && (preserveZOrder > 2)) { if((hwndBar = FindWindowEx(taskHWnd,0,_T("SysTabControl32"),0)) != NULL) { @@ -2370,8 +2363,14 @@ int ii, hungCount ; if((taskHWnd == NULL) && (noTaskbarCheck == 0) && (timerCounter >= 20)) + { vwTaskbarHandleGet() ; - + if(taskHWnd == NULL) + { + MessageBox(hWnd,_T("Could not locate handle to the taskbar.\n This will disable the ability to hide troublesome windows correctly."),vwVIRTUAWIN_NAME _T(" Error"), 0); + noTaskbarCheck = 2 ; + } + } vwMutexLock(); timerCounter++ ; if((timerCounter == 2) && taskbarBCType && useDynButtonRm) @@ -3319,7 +3318,17 @@ { vwLogVerbose((_T("vwWindowShow %8x %x %x %x %d %d\n"),(int) aWindow->handle,flags,(int)aWindow->flags,(int)aWindow->exStyle,aWindow->desk,currentDesk)) ; aWindow->flags |= (vwWINFLAGS_SHOWN|vwWINFLAGS_SHOW) ; - if(vwWindowIsHideByHide(aWindow)) + if(vwWindowIsMinimized(aWindow) && minWinHide) + { + /* window is already minimised, just remove the taskbar icon - this preserves the Win7 thumbnail */ + if((aWindow->flags & vwWINFLAGS_HIDETSK_MASK) != vwWTFLAGS_HIDETSK_DONT) + { + SetWindowLong(aWindow->handle, GWL_EXSTYLE, aWindow->exStyle) ; + if((taskHWnd != NULL) && ((aWindow->flags & vwWINFLAGS_NO_TASKBAR_BUT) == 0)) + PostMessage(taskHWnd, RM_Shellhook, HSHELL_WINDOWCREATED, (LPARAM) aWindow->handle) ; + } + } + else if(vwWindowIsHideByHide(aWindow)) { if((aWindow->flags & (vwWINFLAGS_HIDETSK_MASK|vwWINFLAGS_NO_TASKBAR_BUT)) == vwWINFLAGS_HIDETSK_TOOLWN) { @@ -3380,7 +3389,17 @@ { vwLogVerbose((_T("vwWindowHide %8x %x %x %x %d %d\n"),(int) aWindow->handle,flags,(int)aWindow->flags,(int)aWindow->exStyle,aWindow->desk,currentDesk)) ; aWindow->flags &= ~(vwWINFLAGS_SHOWN|vwWINFLAGS_SHOW) ; - if(vwWindowIsHideByHide(aWindow)) + if(vwWindowIsMinimized(aWindow) && minWinHide) + { + /* window is already minimised, just remove the taskbar icon - this preserves the Win7 thumbnail */ + if((aWindow->flags & vwWINFLAGS_HIDETSK_MASK) != vwWTFLAGS_HIDETSK_DONT) + { + SetWindowLong(aWindow->handle, GWL_EXSTYLE,(aWindow->exStyle & (~WS_EX_APPWINDOW)) | WS_EX_TOOLWINDOW); + if((taskHWnd != NULL) && ((aWindow->flags & vwWINFLAGS_NO_TASKBAR_BUT) == 0)) + PostMessage(taskHWnd, RM_Shellhook, HSHELL_WINDOWDESTROYED, (LPARAM) aWindow->handle); + } + } + else if(vwWindowIsHideByHide(aWindow)) { if((aWindow->flags & (vwWINFLAGS_HIDETSK_MASK|vwWINFLAGS_NO_TASKBAR_BUT)) == vwWINFLAGS_HIDETSK_TOOLWN) { Index: DiskRoutines.c =================================================================== RCS file: /cvsroot/virtuawin/DiskRoutines.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -r1.65 -r1.66 --- DiskRoutines.c 25 Mar 2010 00:33:22 -0000 1.65 +++ DiskRoutines.c 28 Mar 2010 23:22:57 -0000 1.66 @@ -742,6 +742,7 @@ vwConfigReadInt(fp,buff,ii,useDskChgModRelease); vwConfigReadInt(fp,buff,ii,initialDesktop); vwConfigReadInt(fp,buff,ii,lastDeskNoDelay); + vwConfigReadInt(fp,buff,ii,minWinHide); } else { @@ -810,6 +811,7 @@ fprintf(fp, "useDskChgModRelease# %d\n", useDskChgModRelease); fprintf(fp, "initialDesktop# %d\n", initialDesktop); fprintf(fp, "lastDeskNoDelay# %d\n", lastDeskNoDelay); + fprintf(fp, "minWinHide# %d\n", minWinHide); fclose(fp); } } Index: SetupDialog.c =================================================================== RCS file: /cvsroot/virtuawin/SetupDialog.c,v retrieving revision 1.90 retrieving revision 1.91 diff -u -d -r1.90 -r1.91 --- SetupDialog.c 25 Mar 2010 08:58:31 -0000 1.90 +++ SetupDialog.c 28 Mar 2010 23:22:57 -0000 1.91 @@ -963,6 +963,8 @@ SendDlgItemMessage(hDlg, IDC_DYNBUTTONRM, BM_SETCHECK, 1,0); if(useDskChgModRelease) SendDlgItemMessage(hDlg, IDC_USEDCMODREL, BM_SETCHECK, 1,0); + if(minWinHide & 0x01) + SendDlgItemMessage(hDlg, IDC_NOHIDEMINWIN, BM_SETCHECK, 1,0); if(vwLogFlag) SendDlgItemMessage(hDlg, IDC_DEBUGLOGGING, BM_SETCHECK, 1,0); return TRUE; @@ -985,6 +987,9 @@ useWindowRules = (SendDlgItemMessage(hDlg, IDC_USEWINRULES, BM_GETCHECK, 0, 0) == BST_CHECKED) ; useDynButtonRm = (SendDlgItemMessage(hDlg, IDC_DYNBUTTONRM, BM_GETCHECK, 0, 0) == BST_CHECKED) ; useDskChgModRelease = (SendDlgItemMessage(hDlg, IDC_USEDCMODREL, BM_GETCHECK, 0, 0) == BST_CHECKED) ; + minWinHide &= ~0x01 ; + if(SendDlgItemMessage(hDlg, IDC_NOHIDEMINWIN, BM_GETCHECK, 0, 0) == BST_CHECKED) + minWinHide |= 0x01 ; vwLogFlag = (SendDlgItemMessage(hDlg,IDC_DEBUGLOGGING,BM_GETCHECK, 0, 0) == BST_CHECKED) ; displayTaskbarIcon = (SendDlgItemMessage(hDlg, IDC_DISPLAYICON, BM_GETCHECK, 0, 0) != BST_CHECKED) ; @@ -1078,7 +1083,8 @@ LOWORD(wParam) == IDC_DISPLAYICON || LOWORD(wParam) == IDC_DEBUGLOGGING || LOWORD(wParam) == IDC_INVERTY || LOWORD(wParam) == IDC_TASKBARDETECT || LOWORD(wParam) == IDC_REFRESH || LOWORD(wParam) == IDC_DYNBUTTONRM || - LOWORD(wParam) == IDC_USEVWHOOK || LOWORD(wParam) == IDC_USEDCMODREL || + LOWORD(wParam) == IDC_USEVWHOOK || LOWORD(wParam) == IDC_NOHIDEMINWIN || + LOWORD(wParam) == IDC_USEDCMODREL || (LOWORD(wParam) == IDC_HIDWINACT && HIWORD(wParam) == CBN_SELCHANGE) || (LOWORD(wParam) == IDC_PRESORDER && HIWORD(wParam) == CBN_SELCHANGE) ) { Index: Resource.h =================================================================== RCS file: /cvsroot/virtuawin/Resource.h,v retrieving revision 1.44 retrieving revision 1.45 diff -u -d -r1.44 -r1.45 --- Resource.h 13 Mar 2010 02:54:46 -0000 1.44 +++ Resource.h 28 Mar 2010 23:22:57 -0000 1.45 @@ -60,6 +60,7 @@ #define IDC_SLIDERX 1040 #define IDC_SLIDERY 1041 #define IDC_KEYCONTROL 1044 +#define IDC_NOHIDEMINWIN 1045 #define IDC_MODLIST 1050 #define IDC_MODCONFIG 1051 #define IDC_MODRELOAD 1052 Index: VirtuaWin.rc =================================================================== RCS file: /cvsroot/virtuawin/VirtuaWin.rc,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- VirtuaWin.rc 13 Mar 2010 02:54:47 -0000 1.81 +++ VirtuaWin.rc 28 Mar 2010 23:22:57 -0000 1.82 @@ -133,14 +133,15 @@ AUTOCHECKBOX "Invert Up/Down", IDC_INVERTY, 10, 77, 70, 10 AUTOCHECKBOX "Hide system tray icon", IDC_DISPLAYICON, 10, 88, 80, 10 - GROUPBOX "Workarounds", IDC_STATIC, 4, 106, 202, 91 + GROUPBOX "Workarounds", IDC_STATIC, 4, 106, 202, 102 AUTOCHECKBOX "Enable taskbar detection", IDC_TASKBARDETECT, 10, 117, 100, 10 AUTOCHECKBOX "Enable Windows hook", IDC_USEVWHOOK, 10, 128, 100, 10 AUTOCHECKBOX "Enable window specific rules", IDC_USEWINRULES, 10, 139, 130, 10 AUTOCHECKBOX "Enable dynamic taskbar button removal", IDC_DYNBUTTONRM, 10, 150, 150, 10 AUTOCHECKBOX "Force release of modifier keys on desktop change", IDC_USEDCMODREL, 10, 161, 180, 10 AUTOCHECKBOX "Force refresh after desktop change", IDC_REFRESH, 10, 172, 130, 10 - AUTOCHECKBOX "Write events to virtuawin.log", IDC_DEBUGLOGGING, 10, 183, 130, 10 + AUTOCHECKBOX "Only hide taskbar button of minimized windows", IDC_NOHIDEMINWIN, 10, 183, 180, 10 + AUTOCHECKBOX "Write events to virtuawin.log", IDC_DEBUGLOGGING, 10, 194, 130, 10 PUSHBUTTON "Log Windows", IDC_LOGWINDOWS, 70, 230, 60, 14 PUSHBUTTON "Explore Config", IDC_EXPLORECNFG, 140, 230, 60, 14 |