Changeset 352 for trunk/dll/treecnr.c
- Timestamp:
- Jul 26, 2006, 9:35:45 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/treecnr.c
r305 r352 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2001, 200 5Steven H. Levine9 Copyright (c) 2001, 2006 Steven H. Levine 10 10 11 11 16 Oct 02 SHL Handle large partitions … … 17 17 06 Aug 05 SHL Renames 18 18 08 Dec 05 SHL TreeCnrWndProc: disable menu items if drive not ready 19 17 Jul 06 SHL Use Runtime_Error 19 20 20 21 ***********************************************************************/ … … 39 40 40 41 #pragma data_seg(DATA1) 42 43 static PSZ pszSrcFile = __FILE__; 44 41 45 #pragma alloc_text(TREECNR,TreeCnrWndProc,TreeObjWndProc,TreeClientWndProc) 42 46 #pragma alloc_text(TREECNR,TreeFrameWndProc,TreeTitleWndProc,ShowTreeRec) … … 54 58 55 59 56 MRESULT EXPENTRY OpenButtonProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {57 60 MRESULT EXPENTRY OpenButtonProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 61 { 58 62 static BOOL emphasized = FALSE; 59 63 … … 129 133 130 134 131 VOID ShowTreeRec (HWND hwndCnr,CHAR *dirname,BOOL collapsefirst,BOOL maketop) {132 135 VOID ShowTreeRec (HWND hwndCnr,CHAR *dirname,BOOL collapsefirst,BOOL maketop) 136 { 133 137 /* Find a record in tree view, move it so it shows in container and 134 138 make it the current record */ … … 273 277 274 278 275 MRESULT EXPENTRY TreeTitleWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {276 279 MRESULT EXPENTRY TreeTitleWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 280 { 277 281 PFNWP oldproc = (PFNWP)WinQueryWindowPtr(hwnd,QWL_USER); 278 282 … … 288 292 289 293 290 MRESULT EXPENTRY TreeStatProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {291 294 MRESULT EXPENTRY TreeStatProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 295 { 292 296 switch(msg) { 293 297 case WM_CREATE: … … 319 323 320 324 321 MRESULT EXPENTRY TreeFrameWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {322 325 MRESULT EXPENTRY TreeFrameWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 326 { 323 327 switch(msg) { 324 328 case UM_RESCAN: … … 631 635 case UM_EXPAND: 632 636 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 633 if(dcd) { 634 637 if (!dcd) 638 Runtime_Error(pszSrcFile, __LINE__, "no data"); 639 else { 635 640 BOOL tempsusp = dcd->suspendview; 636 641 … … 649 654 case UM_UPDATERECORDLIST: 650 655 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 651 if(dcd && mp1) { 652 656 if (!dcd || !mp1) 657 Runtime_Error(pszSrcFile, __LINE__, "no data"); 658 else { 653 659 INT numentries = 0; 654 660 CHAR **list = (CHAR **)mp1; … … 667 673 case UM_SETUP: 668 674 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 669 if(dcd) { 675 if (!dcd) 676 Runtime_Error(pszSrcFile, __LINE__, "no data"); 677 else { 670 678 dcd->hwndObject = hwnd; 671 679 if(ParentIsDesktop(hwnd,dcd->hwndParent)) … … 676 684 case UM_RESCAN2: 677 685 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 678 if(dcd && 679 hwndStatus && 680 dcd->hwndFrame == WinQueryActiveWindow(dcd->hwndParent)) { 681 686 if (!dcd) 687 Runtime_Error(pszSrcFile, __LINE__, "no data"); 688 else if (!hwndStatus) 689 Runtime_Error(pszSrcFile, __LINE__, "no window"); 690 else if (dcd->hwndFrame == WinQueryActiveWindow(dcd->hwndParent)) { 682 691 CHAR s[CCHMAXPATH * 2]; 683 692 PCNRITEM pci = (PCNRITEM)mp1; … … 778 787 */ 779 788 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 780 if(dcd) { 789 if (!dcd) 790 Runtime_Error(pszSrcFile, __LINE__, "no data"); 791 else { 781 792 WinSendMsg(dcd->hwndCnr, 782 793 CM_REMOVERECORD, … … 849 860 850 861 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 851 if(dcd) { 852 862 if (!dcd) 863 Runtime_Error(pszSrcFile, __LINE__, "no data"); 864 else { 853 865 WORKER *wk; 854 866 855 wk = malloc(sizeof(WORKER)); 856 if(wk) { 857 memset(wk,0,sizeof(WORKER)); 867 wk = xmallocz(sizeof(WORKER), pszSrcFile, __LINE__); 868 if (!wk) 869 FreeListInfo((LISTINFO *)mp1); 870 else { 858 871 wk->size = sizeof(WORKER); 859 872 wk->hwndCnr = dcd->hwndCnr; … … 863 876 wk->li = (LISTINFO *)mp1; 864 877 strcpy(wk->directory,dcd->directory); 865 if(_beginthread(MassAction, 866 NULL, 867 122880, 868 (PVOID)wk) == 869 -1) { 878 if (_beginthread(MassAction,NULL,122880,(PVOID)wk) == -1) { 879 Runtime_Error(pszSrcFile, __LINE__, GetPString(IDS_COULDNTSTARTTHREADTEXT)); 870 880 free(wk); 871 881 FreeListInfo((LISTINFO *)mp1); 872 882 } 873 883 } 874 else875 FreeListInfo((LISTINFO *)mp1);876 884 } 877 885 } … … 882 890 883 891 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 884 if(dcd) { 885 892 if (!dcd) 893 Runtime_Error(pszSrcFile, __LINE__, "no data"); 894 else { 886 895 WORKER *wk; 887 896 888 wk = malloc(sizeof(WORKER)); 889 if(wk) { 890 memset(wk,0,sizeof(WORKER)); 897 wk = xmallocz(sizeof(WORKER), pszSrcFile,__LINE__); 898 if (!wk) 899 FreeListInfo((LISTINFO *)mp1); 900 else { 891 901 wk->size = sizeof(WORKER); 892 902 wk->hwndCnr = dcd->hwndCnr; … … 896 906 wk->li = (LISTINFO *)mp1; 897 907 strcpy(wk->directory,dcd->directory); 898 if(_beginthread(Action, 899 NULL, 900 122880, 901 (PVOID)wk) == 902 -1) { 908 if (_beginthread(Action,NULL,122880,(PVOID)wk) == -1) { 909 Runtime_Error(pszSrcFile, __LINE__, GetPString(IDS_COULDNTSTARTTHREADTEXT)); 903 910 free(wk); 904 911 FreeListInfo((LISTINFO *)mp1); 905 912 } 906 913 } 907 else908 FreeListInfo((LISTINFO *)mp1);909 914 } 910 915 } … … 918 923 hwndTree = (HWND)0; 919 924 dcd = WinQueryWindowPtr(hwnd,QWL_USER); 920 if (dcd) {925 if (dcd) { 921 926 WinSendMsg(dcd->hwndCnr, 922 927 UM_CLOSE, … … 1159 1164 CHAR *leftdir = (CHAR *)mp1,*rightdir = (CHAR *)mp2; 1160 1165 1161 if(!IsFile(leftdir) && 1162 !IsFile(rightdir)) { 1163 cmp = malloc(sizeof(COMPARE)); 1166 if (!IsFile(leftdir) && !IsFile(rightdir)) { 1167 cmp = xmallocz(sizeof(COMPARE),pszSrcFile,__LINE__); 1164 1168 if(cmp) { 1165 memset(cmp,0,sizeof(COMPARE));1166 1169 cmp->size = sizeof(COMPARE); 1167 1170 strcpy(cmp->leftdir,leftdir); … … 1305 1308 1306 1309 case UM_SETUP: 1307 if(dcd) { 1310 if (!dcd) { 1311 Runtime_Error(pszSrcFile, __LINE__, "no data"); 1312 PostMsg(hwnd,WM_CLOSE,MPVOID,MPVOID); 1313 return 0; 1314 } 1315 else { 1308 1316 if(!dcd->hwndObject) { 1309 1317 /* … … 1364 1372 MPFROMLONG(CMA_FLWINDOWATTR | CMA_LINESPACING | 1365 1373 CMA_CXTREEINDENT | CMA_PSORTRECORD)); 1366 // CMA_TREEICON)); 1367 if(_beginthread(MakeObjWin, 1368 NULL, 1369 327680, 1370 (PVOID)dcd) == 1371 -1) { 1374 if (_beginthread(MakeObjWin,NULL,327680,(PVOID)dcd) == -1) { 1375 Runtime_Error(pszSrcFile, __LINE__, GetPString(IDS_COULDNTSTARTTHREADTEXT)); 1372 1376 PostMsg(hwnd, 1373 1377 WM_CLOSE, … … 1379 1383 DosSleep(1L); 1380 1384 } 1381 }1382 else {1383 PostMsg(hwnd,1384 WM_CLOSE,1385 MPVOID,1386 MPVOID);1387 return 0;1388 1385 } 1389 1386 return 0; … … 1425 1422 MPFROMLONG(CMA_FIRST), 1426 1423 MPFROMP(&pqr)); 1427 if(pci && (INT)pci != -1) { 1424 if(!pci || (INT)pci == -1) 1425 Runtime_Error(pszSrcFile, __LINE__, "no data"); 1426 else { 1428 1427 memset(&nr,0,sizeof(nr)); 1429 1428 nr.hwndCnr = hwnd; … … 1441 1440 MPVOID); 1442 1441 } 1443 else1444 DosBeep(50,100);1445 1442 } 1446 1443 break; … … 1567 1564 PCNRITEM pci; 1568 1565 1569 if(pcd) { 1566 if (!pcd) { 1567 Runtime_Error(pszSrcFile, __LINE__, "no data"); 1568 break; 1569 } 1570 else { 1570 1571 pci = (PCNRITEM)pcd->pRecord; 1571 if(!pci || (INT)pci == -1 || 1572 (pci->flags & (RECFLAGS_ENV | RECFLAGS_NODRAG))) { 1573 DosBeep(50,100); 1572 if (!pci || (INT)pci == -1) { 1573 Runtime_Error(pszSrcFile, __LINE__, "no data"); 1574 1574 break; 1575 1575 } 1576 if(hwndStatus2) 1576 if (pci->flags & (RECFLAGS_ENV | RECFLAGS_NODRAG)) { 1577 Runtime_Error(pszSrcFile, __LINE__, "drag not allowed"); 1578 break; 1579 } 1580 if(hwndStatus2) { 1577 1581 WinSetWindowText(hwndStatus2,(IsRoot(pci->szFileName)) ? 1578 1582 GetPString(IDS_DRAGROOTTEXT) : … … 1580 1584 GetPString(IDS_DRAGDIRTEXT) : 1581 1585 GetPString(IDS_DRAGFILETEXT)); 1586 } 1582 1587 DoFileDrag(hwnd, 1583 1588 dcd->hwndObject, … … 1586 1591 NULL, 1587 1592 TRUE); 1588 if(hwndStatus2) 1593 if(hwndStatus2) { 1589 1594 PostMsg(hwnd, 1590 1595 UM_RESCAN, 1591 1596 MPVOID, 1592 1597 MPVOID); 1598 } 1593 1599 } 1594 1600 } … … 1919 1925 } 1920 1926 break; 1921 } 1927 } // switch WM_CONTROL 1922 1928 } 1923 1929 return 0; … … 1940 1946 case UM_SHOWME: 1941 1947 if(mp1 && dcd) { 1942 1943 CHAR *dir; 1944 1945 dir = strdup((CHAR *)mp1); 1946 if(dir) { 1948 CHAR *dir = xstrdup((CHAR *)mp1, pszSrcFile, __LINE__); 1949 if (dir) { 1947 1950 if(!PostMsg(dcd->hwndObject, 1948 1951 UM_SHOWME, … … 1992 1995 } 1993 1996 DosError(FERR_DISABLEHARDERR); 1994 if (!DosQCurDisk(&ulDriveNum,&ulDriveMap)) {1995 if (!(ulDriveMap & 1L << (toupper(*pci->szFileName) - 'A'))) {1997 if (!DosQCurDisk(&ulDriveNum,&ulDriveMap)) { 1998 if (!(ulDriveMap & 1L << (toupper(*pci->szFileName) - 'A'))) { 1996 1999 pciL = pciP = pci; 1997 for (;;) {2000 for (;;) { 1998 2001 pciP = WinSendMsg(hwnd, 1999 2002 CM_QUERYRECORD, … … 2006 2009 break; 2007 2010 } 2008 } 2011 } // for 2009 2012 WinSendMsg(hwnd, 2010 2013 CM_REMOVERECORD, … … 2416 2419 2417 2420 case UM_COMMAND: 2418 if(mp1) { 2419 if(dcd) { 2420 if(!PostMsg(dcd->hwndObject,UM_COMMAND,mp1,mp2)) { 2421 if (!mp1) 2422 Runtime_Error(pszSrcFile, __LINE__, "no data"); 2423 else { 2424 if (!dcd) { 2425 Runtime_Error(pszSrcFile, __LINE__, "no data"); 2426 FreeListInfo((LISTINFO *)mp1); 2427 } 2428 else { 2429 if (!PostMsg(dcd->hwndObject,UM_COMMAND,mp1,mp2)) { 2430 Runtime_Error(pszSrcFile, __LINE__, "PostMsg"); 2421 2431 FreeListInfo((LISTINFO *)mp1); 2422 DosBeep(50,100);2423 2432 } 2424 2433 else 2425 2434 return (MRESULT)TRUE; 2426 2435 } 2427 else2428 FreeListInfo((LISTINFO *)mp1);2429 2436 } 2430 2437 return 0; … … 2566 2573 happ = WinStartApp(hwnd,&pgd,pgd.pszParameters, 2567 2574 NULL,SAF_MAXIMIZED); 2568 if(happ) { 2569 2575 if (!happ) { 2576 saymsg(MB_CANCEL | MB_ICONEXCLAMATION,hwnd, 2577 GetPString(IDS_ERRORTEXT), 2578 GetPString(IDS_CANTSTARTTEXT), 2579 p,params); 2580 } 2581 else { 2570 2582 APPNOTIFY *info; 2571 2583 2572 info = malloc(sizeof(APPNOTIFY)); 2573 if(info) { 2574 memset(info,0,sizeof(APPNOTIFY)); 2584 info = xmallocz(sizeof(APPNOTIFY), pszSrcFile, __LINE__); 2585 if (info) { 2575 2586 info->happ = happ; 2576 2587 info->device = *d; 2577 if (!apphead)2588 if (!apphead) 2578 2589 apphead = info; 2579 2590 else { … … 2584 2595 } 2585 2596 } 2586 else2587 saymsg(MB_CANCEL | MB_ICONEXCLAMATION,hwnd,2588 GetPString(IDS_ERRORTEXT),2589 GetPString(IDS_CANTSTARTTEXT),2590 p,params);2591 2597 } 2592 2598 } … … 3068 3074 ULONG action = UM_ACTION; 3069 3075 3070 li = malloc(sizeof(LISTINFO)); 3071 if(li) { 3072 memset(li,0,sizeof(LISTINFO)); 3076 li = xmallocz(sizeof(LISTINFO),pszSrcFile,__LINE__); 3077 if (li) { 3073 3078 li->type = SHORT1FROMMP(mp1); 3074 3079 li->hwnd = hwnd; … … 3119 3124 *li->targetpath = 0; 3120 3125 if(!PostMsg(dcd->hwndObject,action,MPFROMP(li),MPVOID)) { 3126 Runtime_Error(pszSrcFile, __LINE__, "PostMsg"); 3121 3127 FreeListInfo(li); 3122 DosBeep(50,100);3123 3128 } 3124 3129 } … … 3252 3257 3253 3258 3254 HWND StartTreeCnr (HWND hwndParent,ULONG flags) {3255 3259 HWND StartTreeCnr (HWND hwndParent,ULONG flags) 3260 { 3256 3261 /* bitmapped flags: 3257 3262 * 0x00000001 = don't close app when window closes … … 3283 3288 &hwndClient); 3284 3289 if(hwndFrame && hwndClient) { 3285 dcd = malloc(sizeof(DIRCNRDATA)); 3286 if(dcd) { 3287 3290 dcd = xmalloc(sizeof(DIRCNRDATA), pszSrcFile, __LINE__); 3291 if (!dcd) { 3292 Runtime_Error(pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 3293 PostMsg(hwndClient,WM_CLOSE,MPVOID,MPVOID); 3294 hwndFrame = (HWND)0; 3295 } 3296 else { 3288 3297 SWP swp; 3289 3290 3298 WinQueryWindowPos(hwndFrame,&swp); 3291 3299 if(*(ULONG *)realappname == FM3UL) … … 3376 3384 } 3377 3385 } 3378 else {3379 saymsg(MB_ENTER,hwndParent,DEBUG_STRING,3380 GetPString(IDS_OUTOFMEMORY));3381 PostMsg(hwndClient,WM_CLOSE,MPVOID,MPVOID);3382 hwndFrame = (HWND)0;3383 }3384 3386 } 3385 3387 return hwndFrame;
Note:
See TracChangeset
for help on using the changeset viewer.