Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/info.c
r552 r575 16 16 05 Jun 05 SHL Use QWL_USER 17 17 14 Jul 06 SHL Use Runtime_Error 18 24 Mar 07 SHL Correct FileInfoProc binary file detect 19 24 Mar 07 SHL Correct FileInfoProc/IconProc race crash 18 20 19 21 ***********************************************************************/ … … 125 127 GetPString(IDS_DRIVEINFOTITLETEXT), toupper(*pszFileName)); 126 128 WinSetWindowText(hwnd, FileSystem); 127 if (CheckDrive(toupper(*pszFileName), FileSystem, &type) != -1){129 if (CheckDrive(toupper(*pszFileName), FileSystem, &type) != -1){ 128 130 129 131 FSALLOCATE fsa; … … 175 177 WinSetDlgItemText(hwnd, INFO_LABEL, volser.volumelabel); 176 178 sprintf(s, "%lx", volser.serial); 177 WinSetDlgItemText(hwnd, INFO_SERIAL, s);178 FlagMsg(*pszFileName, s);179 WinSetDlgItemText(hwnd, INFO_SERIAL, s); 180 FlagMsg(*pszFileName, s); 179 181 WinSetDlgItemText(hwnd, INFO_FLAGS, s); 180 if (!(driveflags[toupper(*pszFileName) - 'A'] & DRIVE_NOSTATS)){182 if (!(driveflags[toupper(*pszFileName) - 'A'] & DRIVE_NOSTATS)){ 181 183 CommaFmtULL(szMB, sizeof(szMB), 182 184 (ULONGLONG) fsa.cUnit * … … 229 231 WinSetDlgItemText(hwnd, INFO_USEDPERCENT, s); 230 232 sprintf(s, "%u%%", percentfree); 231 WinSetDlgItemText(hwnd, INFO_FREEPERCENT, s);232 }233 else234 WinSetDlgItemText(hwnd, INFO_AVAILABLE, GetPString(IDS_STATSMEANINGLESSTEXT));233 WinSetDlgItemText(hwnd, INFO_FREEPERCENT, s); 234 } 235 else 236 WinSetDlgItemText(hwnd, INFO_AVAILABLE, GetPString(IDS_STATSMEANINGLESSTEXT)); 235 237 } 236 238 else { … … 328 330 } 329 331 330 typedef struct 331 { 332 typedef struct { 332 333 USHORT size; 333 USHORT dummy;334 PFNWP oldproc;335 HWND lasthwndMenu;336 334 CHAR szFileName[CCHMAXPATH]; 337 335 CHAR **list; 338 336 BOOL madechanges; 339 } 340 ICONSTUF; 337 } FILESTUF; 338 339 typedef struct { 340 USHORT size; 341 PFNWP oldproc; 342 FILESTUF *pfs; 343 HWND lasthwndMenu; 344 } ICONSTUF; 341 345 342 346 /* … … 346 350 MRESULT EXPENTRY IconProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 347 351 { 348 ICONSTUF *is; 352 ICONSTUF *pis = (ICONSTUF *)WinQueryWindowPtr(hwnd, QWL_USER); 353 MRESULT mr; 354 CHAR *p; 355 349 356 static BOOL emphasized = FALSE; 350 357 351 is = (ICONSTUF *) WinQueryWindowPtr(hwnd, QWL_USER); 358 if (!pis) { 359 Runtime_Error(pszSrcFile, __LINE__, "no data"); 360 if (msg != WM_DESTROY) 361 return WinDefWindowProc(hwnd, msg, mp1, mp2); 362 } 352 363 353 364 switch (msg) { … … 383 394 ici.fFormat = ICON_FILE; 384 395 ici.pszFileName = szFrom; 385 if (!WinSetFileIcon((PSZ) is->szFileName, (PICONINFO) & ici)) {396 if (!WinSetFileIcon((PSZ) pis->pfs->szFileName, (PICONINFO) & ici)) { 386 397 ici.fFormat = ICON_CLEAR; 387 WinSetFileIcon((PSZ) is->szFileName, (PICONINFO) & ici);388 } 389 hptr = WinLoadFileIcon( is->szFileName, FALSE);398 WinSetFileIcon((PSZ) pis->pfs->szFileName, (PICONINFO) & ici); 399 } 400 hptr = WinLoadFileIcon(pis->pfs->szFileName, FALSE); 390 401 if (!hptr) 391 hptr = (!IsFile( is->szFileName)) ? hptrDir : hptrFile;392 if ( is &&is->oldproc) {402 hptr = (!IsFile(pis->pfs->szFileName)) ? hptrDir : hptrFile; 403 if (pis && pis->oldproc) { 393 404 WinShowWindow(hwnd, FALSE); 394 is->oldproc(hwnd, SM_SETHANDLE, MPFROMLONG(hptr), MPVOID);405 pis->oldproc(hwnd, SM_SETHANDLE, MPFROMLONG(hptr), MPVOID); 395 406 WinShowWindow(hwnd, TRUE); 396 407 WinInvalidateRect(WinQueryWindow(hwnd, QW_PARENT), NULL, TRUE); … … 401 412 402 413 case WM_PAINT: 403 if (is) { 404 405 MRESULT mr; 406 407 mr = is->oldproc(hwnd, msg, mp1, mp2); 408 PaintRecessedWindow(hwnd, (HPS) 0, FALSE, FALSE); 409 return mr; 410 } 414 mr = pis->oldproc(hwnd, msg, mp1, mp2); 415 PaintRecessedWindow(hwnd, (HPS) 0, FALSE, FALSE); 416 return mr; 411 417 break; 412 418 413 419 case WM_MENUEND: 414 if (is) { 415 if (is->lasthwndMenu == (HWND) mp2) 416 WinDestroyWindow(is->lasthwndMenu); 417 is->lasthwndMenu = (HWND) 0; 418 } 420 if (pis->lasthwndMenu == (HWND)mp2) 421 WinDestroyWindow(pis->lasthwndMenu); 422 pis->lasthwndMenu = (HWND) 0; 419 423 break; 420 424 421 425 case WM_CONTEXTMENU: 422 if (is) { 423 424 CHAR *p; 425 426 if (is->lasthwndMenu) 427 WinDestroyWindow(is->lasthwndMenu); 428 is->lasthwndMenu = WinLoadMenu(hwnd, FM3ModHandle, FLE_FRAME); 429 if (is->lasthwndMenu) { 430 p = strrchr(is->szFileName, '.'); 431 if (!p || (stricmp(p, ".ICO") && stricmp(p, ".PTR"))) 432 WinSendMsg(is->lasthwndMenu, 433 MM_DELETEITEM, 434 MPFROM2SHORT(IDM_SELECTALL, TRUE), MPVOID); 435 PopupMenu(hwnd, hwnd, is->lasthwndMenu); 436 } 426 if (pis->lasthwndMenu) 427 WinDestroyWindow(pis->lasthwndMenu); 428 pis->lasthwndMenu = WinLoadMenu(hwnd, FM3ModHandle, FLE_FRAME); 429 if (pis->lasthwndMenu) { 430 p = strrchr(pis->pfs->szFileName, '.'); 431 if (!p || (stricmp(p, ".ICO") && stricmp(p, ".PTR"))) 432 WinSendMsg(pis->lasthwndMenu, 433 MM_DELETEITEM, 434 MPFROM2SHORT(IDM_SELECTALL, TRUE), MPVOID); 435 PopupMenu(hwnd, hwnd, pis->lasthwndMenu); 437 436 } 438 437 break; … … 448 447 SETICON_FRAME, 449 448 (PVOID) ((SHORT1FROMMP(mp1) == IDM_SELECTALL) ? 450 is->szFileName : NULL));449 pis->pfs->szFileName : NULL)); 451 450 break; 452 451 } … … 455 454 case WM_DESTROY: 456 455 emphasized = FALSE; 457 if (is && is->lasthwndMenu) { 458 WinDestroyWindow(is->lasthwndMenu); 459 is->lasthwndMenu = (HWND) 0; 460 } 456 if (pis && pis->lasthwndMenu) { 457 WinDestroyWindow(pis->lasthwndMenu); 458 pis->lasthwndMenu = (HWND)0; 459 } 460 if (!pis) 461 return WinDefWindowProc(hwnd, msg, mp1, mp2); 461 462 break; 462 463 } 463 464 464 if (is && is->oldproc) 465 return is->oldproc(hwnd, msg, mp1, mp2); 466 else 467 return WinDefWindowProc(hwnd, msg, mp1, mp2); 465 return pis->oldproc(hwnd, msg, mp1, mp2); 468 466 } 469 467 470 468 MRESULT EXPENTRY FileInfoProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 471 469 { 472 ICONSTUF *is; 470 FILESTUF *pfs; 471 ICONSTUF *pis; 473 472 474 473 switch (msg) { … … 478 477 break; 479 478 } 480 is = xmallocz(sizeof(ICONSTUF), pszSrcFile, __LINE__);481 if (! is) {479 pfs = xmallocz(sizeof(FILESTUF), pszSrcFile, __LINE__); 480 if (!pfs) { 482 481 WinDismissDlg(hwnd, 1); 483 482 break; 484 483 } 485 is->list = (CHAR **) mp2;486 is->size = sizeof(ICONSTUF);487 WinSetWindowPtr(hwnd, QWL_USER, is);484 pfs->list = (CHAR **) mp2; 485 pfs->size = sizeof(FILESTUF); 486 WinSetWindowPtr(hwnd, QWL_USER, pfs); 488 487 { 489 488 USHORT ids[] = { FLE_SIZES, FLE_SLACK, FLE_LASTWRITE, FLE_CREATE, … … 493 492 CHAR s[CCHMAXPATH]; 494 493 495 for (x = 0; is->list[x]; x++) {496 if (DosQueryPathInfo( is->list[x], FIL_QUERYFULLNAME, s, sizeof(s)))497 strcpy(s, is->list[x]);494 for (x = 0; pfs->list[x]; x++) { 495 if (DosQueryPathInfo(pfs->list[x], FIL_QUERYFULLNAME, s, sizeof(s))) 496 strcpy(s, pfs->list[x]); 498 497 WinSendDlgItemMsg(hwnd, 499 498 FLE_NAME, … … 512 511 &RGBGREY, &RGBBLACK, &RGBBLACK, NULL); 513 512 } 514 WinSetWindowPtr(WinWindowFromID(hwnd, FLE_ICON), QWL_USER, (PVOID) is); 515 is->oldproc = WinSubclassWindow(WinWindowFromID(hwnd, FLE_ICON), 513 pis = xmallocz(sizeof(ICONSTUF), pszSrcFile, __LINE__); 514 if (!pis) { 515 WinDismissDlg(hwnd, 1); 516 break; 517 } 518 WinSetWindowPtr(WinWindowFromID(hwnd, FLE_ICON), QWL_USER, (PVOID) pis); 519 pis->size = sizeof(ICONSTUF); 520 pis->pfs = pfs; 521 pis->oldproc = WinSubclassWindow(WinWindowFromID(hwnd, FLE_ICON), 516 522 IconProc); 517 523 break; … … 525 531 switch (SHORT2FROMMP(mp1)) { 526 532 case BN_CLICKED: 527 is = WinQueryWindowPtr(hwnd, QWL_USER);528 if ( is && *is->szFileName) {533 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 534 if (pfs && *pfs->szFileName) { 529 535 530 536 LISTINFO li; … … 532 538 533 539 memset(&li, 0, sizeof(LISTINFO)); 534 if (!AddToList( is->szFileName, &li.list, &numfiles, &numalloc)) {540 if (!AddToList(pfs->szFileName, &li.list, &numfiles, &numalloc)) { 535 541 if (WinDlgBox(HWND_DESKTOP, 536 542 hwnd, … … 538 544 FM3ModHandle, 539 545 ATR_FRAME, MPFROMP(&li)) && li.list && li.list[0]) { 540 is->madechanges = TRUE;546 pfs->madechanges = TRUE; 541 547 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 542 548 } … … 551 557 case LN_ENTER: 552 558 case LN_SELECT: 553 is = WinQueryWindowPtr(hwnd, QWL_USER);554 if (! is) {559 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 560 if (!pfs) { 555 561 Runtime_Error(pszSrcFile, __LINE__, "no data"); 556 562 WinDismissDlg(hwnd, 1); … … 565 571 MPFROMSHORT(LIT_FIRST), MPVOID); 566 572 if (sSelect >= 0) { 567 * is->szFileName = 0;573 *pfs->szFileName = 0; 568 574 WinSendDlgItemMsg(hwnd, 569 575 FLE_NAME, 570 576 LM_QUERYITEMTEXT, 571 577 MPFROM2SHORT(sSelect, CCHMAXPATH), 572 MPFROMP( is->szFileName));573 if (* is->szFileName) {578 MPFROMP(pfs->szFileName)); 579 if (*pfs->szFileName) { 574 580 if (SHORT2FROMMP(mp1) == LN_SELECT) 575 581 WinSendMsg(hwnd, UM_SETDIR, MPVOID, MPVOID); 576 582 else 577 583 DefaultView(hwnd, 578 (HWND) 0, (HWND) 0, NULL, 32, is->szFileName);584 (HWND) 0, (HWND) 0, NULL, 32, pfs->szFileName); 579 585 } 580 586 } … … 610 616 WinCheckButton(hwnd, FLE_VIRTDRV, FALSE); 611 617 WinCheckButton(hwnd, FLE_PROTDLL, FALSE); 612 is = WinQueryWindowPtr(hwnd, QWL_USER);613 if ( is && *is->szFileName) {618 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 619 if (pfs && *pfs->szFileName) { 614 620 CHAR s[97]; 615 621 FILEFINDBUF4 fs; … … 621 627 622 628 DosError(FERR_DISABLEHARDERR); 623 if (DosFindFirst( is->szFileName,629 if (DosFindFirst(pfs->szFileName, 624 630 &hdir, 625 631 FILE_NORMAL | FILE_ARCHIVED | … … 700 706 WinCheckButton(hwnd, FLE_SYSTEM, ((fs.attrFile & FILE_SYSTEM) != 0)); 701 707 DosError(FERR_DISABLEHARDERR); 702 if (!DosQueryAppType( is->szFileName, &apptype)) {708 if (!DosQueryAppType(pfs->szFileName, &apptype)) { 703 709 WinEnableWindow(WinWindowFromID(hwnd, FLE_OS2FS), TRUE); 704 710 WinEnableWindow(WinWindowFromID(hwnd, FLE_OS2WIN), TRUE); … … 754 760 WinEnableWindow(WinWindowFromID(hwnd, FLE_PROTDLL), FALSE); 755 761 } 756 hptr = WinLoadFileIcon( is->szFileName, FALSE);762 hptr = WinLoadFileIcon(pfs->szFileName, FALSE); 757 763 WinShowWindow(WinWindowFromID(hwnd, FLE_ICON), FALSE); 758 764 if (hptr) { … … 768 774 WinEnableWindow(WinWindowFromID(hwnd, FLE_ISARCHIVE), TRUE); 769 775 WinEnableWindow(WinWindowFromID(hwnd, FLE_BINARY), TRUE); 770 fp = _fsopen( is->szFileName, "rb", SH_DENYNO);776 fp = _fsopen(pfs->szFileName, "rb", SH_DENYNO); 771 777 if (fp) { 772 778 char buff[512]; … … 781 787 ((len && rc) ? IsBinary(buff, len) : 2)); 782 788 WinCheckButton(hwnd, FLE_READABLE, TRUE); 783 info = find_type( is->szFileName, NULL);789 info = find_type(pfs->szFileName, NULL); 784 790 if (info) { 785 791 WinCheckButton(hwnd, FLE_ISARCHIVE, 1); … … 792 798 WinCheckButton(hwnd, FLE_BINARY, 2); 793 799 } 794 fp = _fsopen( is->szFileName, "ab", SH_DENYNO);800 fp = _fsopen(pfs->szFileName, "ab", SH_DENYNO); 795 801 if (fp) { 796 802 WinCheckButton(hwnd, FLE_WRITEABLE, TRUE); 797 803 fclose(fp); 798 804 } 799 fp = _fsopen( is->szFileName, "rb", SH_DENYRW);805 fp = _fsopen(pfs->szFileName, "rb", SH_DENYRW); 800 806 if (!fp) 801 807 WinCheckButton(hwnd, FLE_OPEN, TRUE); … … 817 823 switch (SHORT1FROMMP(mp1)) { 818 824 case DID_OK: 819 is = WinQueryWindowPtr(hwnd, QWL_USER);820 WinDismissDlg(hwnd, ( is && is->madechanges) ? 2 : 1);825 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 826 WinDismissDlg(hwnd, (pfs && pfs->madechanges) ? 2 : 1); 821 827 break; 822 828 case IDM_HELP: … … 827 833 break; 828 834 case FLE_SETTINGS: 829 is = WinQueryWindowPtr(hwnd, QWL_USER);830 if ( is && *is->szFileName)831 OpenObject( is->szFileName, Settings, hwnd);835 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 836 if (pfs && *pfs->szFileName) 837 OpenObject(pfs->szFileName, Settings, hwnd); 832 838 break; 833 839 case FLE_EAS: 834 is = WinQueryWindowPtr(hwnd, QWL_USER);835 if ( is && *is->szFileName) {840 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 841 if (pfs && *pfs->szFileName) { 836 842 837 843 CHAR *list[2]; 838 844 839 list[0] = is->szFileName;845 list[0] = pfs->szFileName; 840 846 list[1] = NULL; 841 847 WinDlgBox(HWND_DESKTOP, … … 844 850 break; 845 851 case DID_CANCEL: 846 is = WinQueryWindowPtr(hwnd, QWL_USER);847 WinDismissDlg(hwnd, ( is && is->madechanges) ? 2 : 0);852 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 853 WinDismissDlg(hwnd, (pfs && pfs->madechanges) ? 2 : 0); 848 854 break; 849 855 } … … 851 857 852 858 case WM_DESTROY: 853 is = WinQueryWindowPtr(hwnd, QWL_USER);854 if ( is)855 free( is);859 pfs = WinQueryWindowPtr(hwnd, QWL_USER); 860 if (pfs) 861 free(pfs); 856 862 break; 857 863 } … … 873 879 WinSetWindowText(hwnd, s); 874 880 /* 875 WinEnableWindow(WinWindowFromID(hwnd,DVS_REMOVABLE),FALSE);876 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOTWRITEABLE),FALSE);877 WinEnableWindow(WinWindowFromID(hwnd,DVS_IGNORE),FALSE);878 WinEnableWindow(WinWindowFromID(hwnd,DVS_CDROM),FALSE);879 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOLONGNAMES),FALSE);880 WinEnableWindow(WinWindowFromID(hwnd,DVS_REMOTE),FALSE);881 WinEnableWindow(WinWindowFromID(hwnd,DVS_VIRTUAL),FALSE);882 WinEnableWindow(WinWindowFromID(hwnd,DVS_RAMDISK),FALSE);883 WinEnableWindow(WinWindowFromID(hwnd,DVS_BOOT),FALSE);884 WinEnableWindow(WinWindowFromID(hwnd,DVS_INVALID),FALSE);885 WinEnableWindow(WinWindowFromID(hwnd,DVS_ZIPSTREAM),FALSE);886 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOSTATS),FALSE);881 WinEnableWindow(WinWindowFromID(hwnd,DVS_REMOVABLE),FALSE); 882 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOTWRITEABLE),FALSE); 883 WinEnableWindow(WinWindowFromID(hwnd,DVS_IGNORE),FALSE); 884 WinEnableWindow(WinWindowFromID(hwnd,DVS_CDROM),FALSE); 885 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOLONGNAMES),FALSE); 886 WinEnableWindow(WinWindowFromID(hwnd,DVS_REMOTE),FALSE); 887 WinEnableWindow(WinWindowFromID(hwnd,DVS_VIRTUAL),FALSE); 888 WinEnableWindow(WinWindowFromID(hwnd,DVS_RAMDISK),FALSE); 889 WinEnableWindow(WinWindowFromID(hwnd,DVS_BOOT),FALSE); 890 WinEnableWindow(WinWindowFromID(hwnd,DVS_INVALID),FALSE); 891 WinEnableWindow(WinWindowFromID(hwnd,DVS_ZIPSTREAM),FALSE); 892 WinEnableWindow(WinWindowFromID(hwnd,DVS_NOSTATS),FALSE); 887 893 */ 888 894 PostMsg(hwnd, UM_UNDO, MPVOID, MPVOID); … … 907 913 ((driveflags[drive] & DRIVE_REMOTE) != 0)); 908 914 WinCheckButton(hwnd,DVS_VIRTUAL, 909 ((driveflags[drive] & DRIVE_VIRTUAL) != 0));915 ((driveflags[drive] & DRIVE_VIRTUAL) != 0)); 910 916 WinCheckButton(hwnd,DVS_RAMDISK, 911 ((driveflags[drive] & DRIVE_RAMDISK) != 0));917 ((driveflags[drive] & DRIVE_RAMDISK) != 0)); 912 918 WinCheckButton(hwnd, DVS_BOOT, 913 ((driveflags[drive] & DRIVE_BOOT) != 0));919 ((driveflags[drive] & DRIVE_BOOT) != 0)); 914 920 WinCheckButton(hwnd, DVS_INVALID, 915 921 ((driveflags[drive] & DRIVE_INVALID) != 0)); … … 928 934 ((driveflags[drive] & DRIVE_INCLUDEFILES) != 0)); 929 935 WinCheckButton(hwnd,DVS_NOSTATS, 930 ((driveflags[drive] & DRIVE_NOSTATS) != 0));936 ((driveflags[drive] & DRIVE_NOSTATS) != 0)); 931 937 } 932 938 return 0; … … 965 971 else 966 972 driveflags[drive] &= (~DRIVE_INCLUDEFILES); 967 if (WinQueryButtonCheckstate(hwnd,DVS_NOSTATS))968 driveflags[drive] |= DRIVE_NOSTATS;969 else970 driveflags[drive] &= (~DRIVE_NOSTATS);973 if (WinQueryButtonCheckstate(hwnd,DVS_NOSTATS)) 974 driveflags[drive] |= DRIVE_NOSTATS; 975 else 976 driveflags[drive] &= (~DRIVE_NOSTATS); 971 977 { 972 978 ULONG flags; … … 978 984 DRIVE_IGNORE | DRIVE_CDROM | 979 985 DRIVE_NOLONGNAMES | DRIVE_REMOTE | 980 DRIVE_BOOT | DRIVE_INVALID | DRIVE_ZIPSTREAM |981 DRIVE_VIRTUAL | DRIVE_RAMDISK));986 DRIVE_BOOT | DRIVE_INVALID | DRIVE_ZIPSTREAM | 987 DRIVE_VIRTUAL | DRIVE_RAMDISK)); 982 988 PrfWriteProfileData(fmprof, appname, s, &flags, sizeof(ULONG)); 983 989 } -
trunk/dll/notebook.c
r551 r575 816 816 WinCheckButton(hwnd, CFGG_DEFAULTDELETEPERM, fDefaultDeletePerm); 817 817 { 818 long th; 819 820 th = (fNoFinger) ? 2 : (fNoDead) ? 1 : 0; 818 long th = fNoFinger ? 2 : (fNoDead ? 1 : 0); 821 819 WinCheckButton(hwnd, CFGG_NODEAD, th); 822 820 } -
trunk/dll/worker.c
r559 r575 458 458 HWND_DESKTOP, 459 459 FileInfoProc, 460 FM3ModHandle, FLE_FRAME, (PVOID) list)) 460 FM3ModHandle, FLE_FRAME, (PVOID) list)) { 461 461 goto Abort; 462 } 462 463 } 463 464 else { … … 999 1000 FileInfoProc, 1000 1001 FM3ModHandle, FLE_FRAME, (PVOID) wk->li->list) != 2) 1002 { 1001 1003 break; 1004 } 1002 1005 /* else intentional fallthru */ 1003 1006 case IDM_UPDATE:
Note:
See TracChangeset
for help on using the changeset viewer.
