Changeset 558 for trunk/dll/mainwnd.c
- Timestamp:
- Mar 9, 2007, 9:31:35 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/dll/mainwnd.c (modified) (25 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/mainwnd.c
r557 r558 26 26 18 Feb 07 GKY More drive type and icon support 27 27 08 Mar 07 SHL SaveDirCnrState: do not save state of NOPRESCAN volumes 28 09 Mar 07 SHL RestoreDirCnrState/SaveDirCnrState: optimize and avoid overflows 28 29 29 30 ***********************************************************************/ … … 1068 1069 break; 1069 1070 1070 case IDM_SHOWTOOLS: /* show all tools */1071 case IDM_SHOWTOOLS: /* show all tools */ 1071 1072 tool = toolhead; 1072 1073 while (tool) { … … 1162 1163 case DM_DRAGOVER: 1163 1164 { 1164 PDRAGINFO pDInfo; /* Pointer to DRAGINFO */1165 PDRAGINFO pDInfo; /* Pointer to DRAGINFO */ 1165 1166 1166 1167 pDInfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ … … 1177 1178 } 1178 1179 { 1179 PDRAGITEM pDItem; /* Pointer to DRAGITEM */1180 PDRAGITEM pDItem; /* Pointer to DRAGITEM */ 1180 1181 1181 1182 pDItem = DrgQueryDragitemPtr(pDInfo, /* Access DRAGITEM */ … … 1957 1958 iconid = (driveflags[x] & DRIVE_REMOVABLE) ? 1958 1959 REMOVABLE_ICON : 1959 (driveflags[x] & DRIVE_VIRTUAL) ?1960 VIRTUAL_ICON :1960 (driveflags[x] & DRIVE_VIRTUAL) ? 1961 VIRTUAL_ICON : 1961 1962 (driveflags[x] & DRIVE_REMOTE) ? 1962 1963 REMOTE_ICON : 1963 (driveflags[x] & DRIVE_RAMDISK) ?1964 RAMDISK_ICON :1965 (driveflags[x] & DRIVE_ZIPSTREAM) ?1966 ZIPSTREAM_ICON :DRIVE_ICON;1964 (driveflags[x] & DRIVE_RAMDISK) ? 1965 RAMDISK_ICON : 1966 (driveflags[x] & DRIVE_ZIPSTREAM) ? 1967 ZIPSTREAM_ICON :DRIVE_ICON; 1967 1968 } 1968 1969 else … … 2639 2640 HWND hwndChild, hwndDir, hwndC; 2640 2641 ULONG numsaves = 0, flWindowAttr; 2641 CHAR s[120], directory[CCHMAXPATH]; 2642 CHAR szPrefix[20]; 2643 CHAR s[80]; 2644 CHAR szDir[CCHMAXPATH]; 2642 2645 SWP swp; 2643 BOOL ret= FALSE;2646 BOOL fSaved = FALSE; 2644 2647 DIRCNRDATA *dcd; 2648 2649 if (!pszStateName) 2650 strcpy(szPrefix, NullStr); 2651 else { 2652 if (strlen(pszStateName) > sizeof(szPrefix) - 2) { 2653 Runtime_Error(pszSrcFile, __LINE__, "SaveDirCnrState"); 2654 return fSaved;; 2655 } 2656 sprintf(szPrefix, "%s.", pszStateName); 2657 } 2645 2658 2646 2659 henum = WinBeginEnumWindows(hwndClient); … … 2652 2665 if (hwndDir) { 2653 2666 WinQueryWindowPos(hwndChild, &swp); 2654 * directory= 0;2655 WinSendMsg(hwndC, UM_CONTAINERDIR, MPFROMP( directory), MPVOID);2656 if (* directory) {2657 if (driveflags[toupper(* directory) - 'A'] & DRIVE_NOPRESCAN)2667 *szDir = 0; 2668 WinSendMsg(hwndC, UM_CONTAINERDIR, MPFROMP(szDir), MPVOID); 2669 if (*szDir) { 2670 if (driveflags[toupper(*szDir) - 'A'] & DRIVE_NOPRESCAN) 2658 2671 continue; 2659 sprintf(s, "%s%sDirCnrPos.%lu", pszStateName ? pszStateName : NullStr, 2660 pszStateName ? "." : NullStr, numsaves); 2672 sprintf(s, "%sDirCnrPos.%lu", szPrefix, numsaves); 2661 2673 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & swp, 2662 2674 sizeof(SWP)); … … 2664 2676 WinQueryWindowPtr(WinWindowFromID(hwndC, DIR_CNR), QWL_USER); 2665 2677 if (dcd) { 2666 sprintf(s, "%s%sDirCnrSort.%lu", pszStateName ? pszStateName : NullStr, 2667 pszStateName ? "." : NullStr, numsaves); 2678 sprintf(s, "%sDirCnrSort.%lu", szPrefix, numsaves); 2668 2679 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & dcd->sortFlags, 2669 2680 sizeof(INT)); 2670 sprintf(s, "%s%sDirCnrFilter.%lu", pszStateName ? pszStateName : NullStr, 2671 pszStateName ? "." : NullStr, numsaves); 2681 sprintf(s, "%sDirCnrFilter.%lu", szPrefix, numsaves); 2672 2682 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & dcd->mask, 2673 2683 sizeof(MASK)); 2674 sprintf(s, "%s%sDirCnrView.%lu", pszStateName ? pszStateName : NullStr, 2675 pszStateName ? "." : NullStr, numsaves); 2684 sprintf(s, "%sDirCnrView.%lu", szPrefix, numsaves); 2676 2685 flWindowAttr = dcd->flWindowAttr; 2677 2686 if (!fLeaveTree && (flWindowAttr & CV_TREE)) { … … 2693 2702 sizeof(ULONG)); 2694 2703 } 2695 sprintf(s, "%s%sDirCnrDir.%lu", pszStateName ? pszStateName : NullStr, 2696 pszStateName ? "." : NullStr, numsaves++); 2697 PrfWriteProfileString(fmprof, FM3Str, s, directory); 2698 ret = TRUE; 2704 sprintf(s, "%sDirCnrDir.%lu", szPrefix, numsaves++); 2705 PrfWriteProfileString(fmprof, FM3Str, s, szDir); 2706 fSaved = TRUE; 2699 2707 } 2700 2708 } … … 2703 2711 } // while 2704 2712 WinEndEnumWindows(henum); 2705 if (ret) { 2713 2714 if (fSaved) { 2706 2715 if (WinQueryWindowPos(hwndTree, &swp)) { 2707 sprintf(s, "%s%sLastTreePos", pszStateName ? pszStateName : NullStr, 2708 pszStateName ? "." : NullStr); 2716 sprintf(s, "%sLastTreePos", szPrefix); 2709 2717 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & swp, sizeof(SWP)); 2710 2718 } 2711 sprintf(s, "%s%sNumDirsLastTime", pszStateName ? pszStateName : NullStr, 2712 pszStateName ? "." : NullStr); 2719 sprintf(s, "%sNumDirsLastTime", szPrefix); 2713 2720 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & numsaves, sizeof(ULONG)); 2714 2721 WinQueryWindowPos(WinQueryWindow(hwndClient, QW_PARENT), &swp); 2715 sprintf(s, "%s%sMySizeLastTime", pszStateName ? pszStateName : NullStr, 2716 pszStateName ? "." : NullStr); 2722 sprintf(s, "%sMySizeLastTime", szPrefix); 2717 2723 PrfWriteProfileData(fmprof, FM3Str, s, (PVOID) & swp, sizeof(SWP)); 2718 2724 } 2719 return ret; 2725 2726 return fSaved; 2720 2727 } 2721 2728 … … 2763 2770 static BOOL RestoreDirCnrState(HWND hwndClient, PSZ pszStateName, BOOL noview) 2764 2771 { 2765 CHAR s[120], tdir[CCHMAXPATH]; 2772 CHAR s[80]; 2773 CHAR szDir[CCHMAXPATH]; 2774 CHAR szPrefix[20]; 2766 2775 HWND hwndDir, hwndC; 2767 2776 SWP swp, swpO, swpN; 2768 2777 ULONG size, numsaves = 0L, x; 2769 2778 double xtrans, ytrans; 2770 BOOL ret= FALSE;2779 BOOL fRestored = FALSE; 2771 2780 DIRCNRDATA *dcd; 2772 2781 2782 if (!pszStateName) 2783 strcpy(szPrefix, NullStr); 2784 else { 2785 if (strlen(pszStateName) > sizeof(szPrefix) - 2) { 2786 Runtime_Error(pszSrcFile, __LINE__, "RestoreDirCnrState"); 2787 return fRestored; 2788 } 2789 sprintf(szPrefix, "%s.", pszStateName); 2790 } 2791 2773 2792 size = sizeof(SWP); 2774 sprintf(s, 2775 "%s%sMySizeLastTime", 2776 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr); 2793 sprintf(s, "%sMySizeLastTime", szPrefix); 2777 2794 if (!PrfQueryProfileData(fmprof, 2778 2795 FM3Str, … … 2781 2798 &size) || 2782 2799 size != sizeof(SWP) || !swp.cx || !swp.cy) 2800 { 2783 2801 WinQueryWindowPos(WinQueryWindow(hwndClient, QW_PARENT), &swpO); 2802 } 2784 2803 if (!pszStateName || !strcmp(pszStateName, GetPString(IDS_FM2TEMPTEXT))) 2785 2804 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); … … 2790 2809 ytrans = ((double)swpO.cy * 100.0) / (double)swpN.cy; 2791 2810 size = sizeof(SWP); 2792 sprintf(s, 2793 "%s%sLastTreePos", 2794 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr); 2811 sprintf(s, "%sLastTreePos", szPrefix); 2795 2812 if (PrfQueryProfileData(fmprof, FM3Str, s, (PVOID) & swp, &size)) { 2796 2813 if (!pszStateName || !strcmp(pszStateName, GetPString(IDS_FM2TEMPTEXT))) … … 2823 2840 } 2824 2841 size = sizeof(ULONG); 2825 sprintf(s, 2826 "%s%sNumDirsLastTime", 2827 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr); 2842 sprintf(s, "%sNumDirsLastTime", szPrefix); 2828 2843 if (PrfQueryProfileData(fmprof, 2829 2844 FM3Str, s, (PVOID) & numsaves, &size) && numsaves) { … … 2831 2846 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2832 2847 for (x = 0; x < numsaves; x++) { 2833 sprintf(s, 2834 "%s%sDirCnrPos.%lu", 2835 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr, x); 2848 sprintf(s, "%sDirCnrPos.%lu", szPrefix, x); 2836 2849 size = sizeof(SWP); 2837 2850 if (PrfQueryProfileData(fmprof, FM3Str, s, (PVOID) & swp, &size)) { 2838 2851 if (!pszStateName || !strcmp(pszStateName, GetPString(IDS_FM2TEMPTEXT))) 2839 2852 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2840 sprintf(s, 2841 "%s%sDirCnrDir.%lu", 2842 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr, x); 2843 size = sizeof(tdir); 2844 if (PrfQueryProfileData(fmprof, FM3Str, s, (PVOID) tdir, &size)) { 2853 sprintf(s, "%sDirCnrDir.%lu", szPrefix, x); 2854 size = sizeof(szDir); 2855 if (PrfQueryProfileData(fmprof, FM3Str, s, (PVOID) szDir, &size)) { 2845 2856 if (!pszStateName || !strcmp(pszStateName, GetPString(IDS_FM2TEMPTEXT))) 2846 2857 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2858 if (driveflags[toupper(*szDir) - 'A'] & DRIVE_NOPRESCAN) { 2859 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2860 continue; 2861 } 2847 2862 hwndDir = (HWND) WinSendMsg(hwndClient, 2848 2863 UM_SETDIR, 2849 MPFROMP( tdir), MPFROMLONG(1L));2864 MPFROMP(szDir), MPFROMLONG(1L)); 2850 2865 if (hwndDir) { 2851 2866 hwndC = WinWindowFromID(hwndDir, FID_CLIENT); … … 2855 2870 if (dcd) { 2856 2871 size = sizeof(INT); 2857 sprintf(s, 2858 "%s%sDirCnrSort.%lu", 2859 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr, x); 2872 sprintf(s, "%sDirCnrSort.%lu", szPrefix, x); 2860 2873 if (PrfQueryProfileData(fmprof, 2861 2874 FM3Str, … … 2869 2882 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2870 2883 size = sizeof(MASK); 2871 sprintf(s, 2872 "%s%sDirCnrFilter.%lu", 2873 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr, x); 2884 sprintf(s, "%sDirCnrFilter.%lu", szPrefix, x); 2874 2885 if (PrfQueryProfileData(fmprof, 2875 2886 FM3Str, … … 2884 2895 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 2885 2896 size = sizeof(ULONG); 2886 sprintf(s, 2887 "%s%sDirCnrView.%lu", 2888 pszStateName ? pszStateName : NullStr, pszStateName ? "." : NullStr, x); 2897 sprintf(s, "%sDirCnrView.%lu", szPrefix, x); 2889 2898 if (!noview) { 2890 2899 if (PrfQueryProfileData(fmprof, … … 2914 2923 } 2915 2924 } 2916 ret= TRUE;2925 fRestored = TRUE; 2917 2926 swp.hwnd = hwndDir; 2918 2927 TransformSwp(&swp, xtrans, ytrans); … … 2944 2953 } // for 2945 2954 } 2946 return ret;2955 return fRestored; 2947 2956 } 2948 2957 … … 4150 4159 case IDM_DELETEDIRCNRSTATE: 4151 4160 { 4152 CHAR name[14];4153 4154 * name = 0;4155 WinQueryWindowText(hwndStatelist, 13, name);4156 bstrip( name);4157 if (* name) {4161 CHAR szStateName[14]; 4162 4163 *szStateName = 0; 4164 WinQueryWindowText(hwndStatelist, 13, szStateName); 4165 bstrip(szStateName); 4166 if (*szStateName) { 4158 4167 if (SHORT1FROMMP(mp1) == IDM_SAVEDIRCNRSTATE) { 4159 4168 // Save 4160 if (SaveDirCnrState(hwnd, name)) {4161 if (add_setup( name)) {4169 if (SaveDirCnrState(hwnd, szStateName)) { 4170 if (add_setup(szStateName)) { 4162 4171 WinSendMsg(hwndStatelist, LM_INSERTITEM, 4163 MPFROM2SHORT(LIT_SORTASCENDING, 0), MPFROMP( name));4172 MPFROM2SHORT(LIT_SORTASCENDING, 0), MPFROMP(szStateName)); 4164 4173 save_setups(); 4165 4174 } … … 4170 4179 // Delete 4171 4180 ULONG numsaves = 0, size, x; 4172 CHAR s[ 120];4173 4174 if (remove_setup( name))4181 CHAR s[80]; 4182 4183 if (remove_setup(szStateName)) 4175 4184 save_setups(); 4176 sprintf(s, "%s.NumDirsLastTime", name);4185 sprintf(s, "%s.NumDirsLastTime", szStateName); 4177 4186 size = sizeof(ULONG); 4178 4187 if (!PrfQueryProfileData … … 4180 4189 saymsg(MB_ENTER | MB_ICONASTERISK, hwnd, 4181 4190 GetPString(IDS_WARNINGTEXT), 4182 GetPString(IDS_DOESNTEXISTTEXT), name);4191 GetPString(IDS_DOESNTEXISTTEXT), szStateName); 4183 4192 } 4184 4193 else if (!size) … … 4187 4196 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0L); 4188 4197 for (x = 0; x < numsaves; x++) { 4189 sprintf(s, "%s.DirCnrPos.%lu", name, x);4198 sprintf(s, "%s.DirCnrPos.%lu", szStateName, x); 4190 4199 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4191 sprintf(s, "%s.DirCnrDir.%lu", name, x);4200 sprintf(s, "%s.DirCnrDir.%lu", szStateName, x); 4192 4201 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4193 sprintf(s, "%s.DirCnrSort.%lu", name, x);4202 sprintf(s, "%s.DirCnrSort.%lu", szStateName, x); 4194 4203 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4195 sprintf(s, "%s.DirCnrFilter.%lu", name, x);4204 sprintf(s, "%s.DirCnrFilter.%lu", szStateName, x); 4196 4205 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4197 sprintf(s, "%s.DirCnrView.%lu", name, x);4206 sprintf(s, "%s.DirCnrView.%lu", szStateName, x); 4198 4207 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4199 4208 } 4200 sprintf(s, "%s.LastTreePos", name);4209 sprintf(s, "%s.LastTreePos", szStateName); 4201 4210 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4202 sprintf(s, "%s.MySizeLastTime", name);4211 sprintf(s, "%s.MySizeLastTime", szStateName); 4203 4212 PrfWriteProfileData(fmprof, FM3Str, s, NULL, 0); 4204 4213 } … … 5674 5683 else if (SHORT1FROMMP(mp1) == MAIN_SETUPLIST) { 5675 5684 5676 CHAR s[ 120];5685 CHAR s[80]; 5677 5686 ULONG size, numsaves = 0; 5678 5687
Note:
See TracChangeset
for help on using the changeset viewer.
