Changeset 919 for trunk/dll/comp.c


Ignore:
Timestamp:
Jan 12, 2008, 10:43:34 PM (18 years ago)
Author:
Steven Levine
Message:

Correct Compare Directories select count regression
Correct Compare Directories file sizes regression
Speed up Compare Directories filter redraw
Report corrupted saved settings page index

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/comp.c

    r917 r919  
    4343  05 Jan 08 SHL Use WM_TIMER for progress messaging
    4444  05 Jan 08 SHL Use ITIMER_DESC for hogging control
     45  12 Jan 08 SHL Correct select count display regression
    4546
    4647***********************************************************************/
     
    143144//=== StartSnap() Write directory tree to snapshot file ===
    144145
    145 static VOID StartSnap(VOID * dummy)
     146static VOID StartSnap(VOID *pargs)
    146147{
    147   SNAPSTUFF *sf = (SNAPSTUFF *) dummy;
     148  SNAPSTUFF *sf = (SNAPSTUFF *)pargs;
    148149  FILE *fp;
    149150  CHAR *p;
     
    175176//=== CompareFilesThread() Compare files and update container select flags ===
    176177
    177 static VOID CompareFilesThread(VOID * args)
     178static VOID CompareFilesThread(VOID *args)
    178179{
    179180  FCOMPARE fc;
     
    187188
    188189  if (args) {
    189     fc = *(FCOMPARE *) args;
     190    fc = *(FCOMPARE *)args;
    190191    hab2 = WinInitialize(0);
    191192    if (hab2) {
     
    317318    else {
    318319      WinSetWindowPtr(hwnd, QWL_USER, mp2);
    319       fc = (FCOMPARE *) mp2;
     320      fc = (FCOMPARE *)mp2;
    320321      fc->hwndReport = hwnd;
    321322      fc->hwndList = WinWindowFromID(hwnd, FCMP_LISTBOX);
     
    334335        break;
    335336      }
    336       if (_beginthread(CompareFilesThread, NULL, 65536, (PVOID) fc) == -1) {
     337      if (_beginthread(CompareFilesThread, NULL, 65536, (PVOID)fc) == -1) {
    337338        Runtime_Error(pszSrcFile, __LINE__,
    338339                      GetPString(IDS_COULDNTSTARTTHREADTEXT));
     
    348349  case UM_SETDIR:
    349350    PaintRecessedWindow(WinWindowFromID(hwnd, FCMP_HELP),
    350                         (HPS) 0, FALSE, TRUE);
     351                        (HPS)0, FALSE, TRUE);
    351352    return 0;
    352353
     
    676677//=== SelectCnrsThread() Update container selection flags thread ===
    677678
    678 static VOID SelectCnrsThread(VOID * args)
     679static VOID SelectCnrsThread(VOID *args)
    679680{
    680   COMPARE *cmp = (COMPARE *) args;
     681  COMPARE *cmp = (COMPARE *)args;
    681682  HAB hab;
    682683  HMQ hmq;
     
    832833static int CompNames(const void *n1, const void *n2)
    833834{
    834   FILELIST *fl1 = *(FILELIST **) n1;
    835   FILELIST *fl2 = *(FILELIST **) n2;
     835  FILELIST *fl1 = *(FILELIST **)n1;
     836  FILELIST *fl2 = *(FILELIST **)n2;
    836837
    837838  return stricmp(fl1->fname, fl2->fname);
     
    842843static VOID FillCnrsThread(VOID *args)
    843844{
    844   COMPARE *cmp = (COMPARE *) args;
     845  COMPARE *cmp = (COMPARE *)args;
    845846  HAB hab;
    846847  HMQ hmq;
     
    875876      UINT l;
    876877      UINT r;
    877       UINT cntr;
     878      // UINT cntr;
    878879      FILELIST **filesl = NULL;
    879880      FILELIST **filesr = NULL;
    880       // UINT numfilesl = 0;            // 08 Jan 08 SHL fixme
    881       // UINT numfilesr = 0;
    882881      UINT numallocl = 0;
    883882      UINT numallocr = 0;
     
    887886      UINT recsNeeded;
    888887      UINT recsGotten;
    889       UINT filesSeenL;
    890       UINT filesSeenR;
    891888      PCNRITEM pcilFirst;
    892889      PCNRITEM pcirFirst;
     
    924921      FillDirList(cmp->leftdir, lenl, cmp->includesubdirs,
    925922                  &filesl, &cmp->cmp->totalleft, &numallocl);
    926       // numfilesl = cmp->cmp->totalleft;       // 08 Jan 08 SHL fixme
    927923
    928924      if (filesl)
     
    939935        FillDirList(cmp->rightdir, lenr, cmp->includesubdirs,
    940936                    &filesr, &cmp->cmp->totalright, &numallocr);
    941         // numfilesr = cmp->cmp->totalright;
    942937      }
    943938      else {
     
    11081103
    11091104      // Now insert records into the containers
    1110       cntr = 0;
    1111       l = r = 0;
    11121105      if (recsNeeded) {
    11131106        pcilFirst = WinSendMsg(hwndLeft,
     
    11371130        // DbgMsg(pszSrcFile, __LINE__, "FillCnrsThread filling");
    11381131
     1132        l = 0;
     1133        r = 0;
    11391134        pcil = pcilFirst;
    11401135        pcir = pcirFirst;
    1141         pcilLast = 0;
    1142         pcirLast = 0;
     1136        pcilLast = NULL;
     1137        pcirLast = NULL;
    11431138
    11441139        recsGotten = 0;
    1145         filesSeenL = 0;
    1146         filesSeenR = 0;
     1140        cmp->cmp->totalleft = 0;
     1141        cmp->cmp->totalright = 0;
    11471142
    11481143        while ((filesl && filesl[l]) || (filesr && filesr[r])) {
    11491144
    1150           // 03 Jan 08 SHL fixme to have user friendly message
     1145          // 12 Jan 08 SHL fixme to have message in string table
    11511146          if (!pcil) {
    1152             Runtime_Error(pszSrcFile, __LINE__, "pcil short %u/%u",
    1153                           recsGotten, recsNeeded);
     1147            Runtime_Error(pszSrcFile, __LINE__, "Insufficient memory or %u items (%u)",
     1148                          recsNeeded, recsGotten);
    11541149            break;
    11551150          }
    11561151
    1157           // 03 Jan 08 SHL fixme to have user friendly message
     1152          // 12 Jan 08 SHL fixme to have message in string table
    11581153          if (!pcir) {
    1159             Runtime_Error(pszSrcFile, __LINE__, "pcir short %u/%u",
    1160                           recsGotten, recsNeeded);
     1154            Runtime_Error(pszSrcFile, __LINE__, "Insufficient memory or %u items (%u)",
     1155                          recsNeeded, recsGotten);
    11611156            break;
    11621157          }
    11631158          recsGotten++;
    11641159          pcir->hwndCnr = hwndRight;
    1165           pcir->rc.hptrIcon = (HPOINTER) 0;
     1160          pcir->rc.hptrIcon = (HPOINTER)0;
    11661161          pcil->hwndCnr = hwndLeft;
    1167           pcil->rc.hptrIcon = (HPOINTER) 0;
     1162          pcil->rc.hptrIcon = (HPOINTER)0;
    11681163
    11691164          if (filesl && filesl[l]) {
     
    11781173          if (x <= 0) {
    11791174            // File appears on left side
    1180             filesSeenL++;
    1181             cmp->cmp->totalleft = filesSeenL;
     1175            cmp->cmp->totalleft++;
    11821176            BldFullPathName(szBuf, cmp->leftdir, filesl[l]->fname);
    11831177            pcil->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);
     
    11861180            pcil->pszDispAttr = FileAttrToString(pcil->attrFile);
    11871181            pcil->cbFile = filesl[l]->cbFile;
     1182            // 12 Jan 08 SHL fixme to used cached size here too
     1183            CommaFmtULL(szBuf, sizeof(szBuf), pcil->cbFile, ' ');
     1184            pcil->pszFmtFileSize = xstrdup(szBuf, pszSrcFile, __LINE__);
    11881185            pcil->easize = filesl[l]->easize;
    11891186            pcil->date.day = filesl[l]->date.day;
     
    12061203            pcil->crtime.hours = filesl[l]->crtime.hours;
    12071204            if (*cmp->dcd.mask.szMask) {
    1208               if (!Filter((PMINIRECORDCORE) pcil, (PVOID)&cmp->dcd.mask)) {
     1205              if (!Filter((PMINIRECORDCORE)pcil, (PVOID)&cmp->dcd.mask)) {
    12091206                pcil->rc.flRecordAttr |= CRA_FILTERED;
    12101207                pcir->rc.flRecordAttr |= CRA_FILTERED;
     
    12151212          if (x >= 0) {
    12161213            // File appears on right side
    1217             filesSeenR++;
    1218             cmp->cmp->totalright = filesSeenR;
     1214            cmp->cmp->totalright++;
    12191215            BldFullPathName(szBuf, cmp->rightdir, filesr[r]->fname);
    12201216            pcir->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);   // 31 Jul 07 SHL
     
    12241220            pcir->pszDispAttr = FileAttrToString(pcir->attrFile);
    12251221            pcir->cbFile = filesr[r]->cbFile;
     1222            // 12 Jan 08 SHL fixme to used cached size here too
     1223            CommaFmtULL(szBuf, sizeof(szBuf), pcir->cbFile, ' ');
     1224            pcir->pszFmtFileSize = xstrdup(szBuf, pszSrcFile, __LINE__);
    12261225            pcir->easize = filesr[r]->easize;
    12271226            pcir->date.day = filesr[r]->date.day;
     
    13261325          } // if on both sides
    13271326
    1328           if (x <= 0) {
    1329             free(filesl[l]);
    1330             l++;
    1331           }
    1332 
    1333           if (x >= 0) {
    1334             free(filesr[r]);
    1335             r++;
    1336           }
     1327          if (x <= 0)
     1328            free(filesl[l++]);          // Done with item on left
     1329
     1330          if (x >= 0)
     1331            free(filesr[r++]);          // Done with item on right
    13371332
    13381333          // Ensure empty buffers point somewhere
     
    13681363          pcilLast = pcil;
    13691364          pcirLast = pcir;
    1370           pcil = (PCNRITEM) pcil->rc.preccNextRecord;
    1371           pcir = (PCNRITEM) pcir->rc.preccNextRecord;
     1365          pcil = (PCNRITEM)pcil->rc.preccNextRecord;
     1366          pcir = (PCNRITEM)pcir->rc.preccNextRecord;
    13721367
    13731368        } // while filling left or right
     
    13751370        // If stopped early CM_ALLOCATERECORD partially failed
    13761371        // Free up container records we did not use on other side
    1377         // Free up filesl/filer entries we skipped
     1372        // Free up items we did not insert in container
    13781373        if (recsGotten < recsNeeded) {
    13791374          if (pcil) {
    1380             pcilLast->rc.preccNextRecord = NULL;
     1375            if (pcilLast)
     1376              pcilLast->rc.preccNextRecord = NULL;
     1377            else
     1378              pcilFirst = NULL;
    13811379            FreeCnrItemList(hwndLeft, pcil);
    13821380          }
    13831381          if (filesl) {
    1384             while (filesl[l]) {
     1382            for(; filesl[l]; l++)
    13851383              free(filesl[l]);
    1386               l++;
    1387             }
    13881384          }
    13891385          if (pcir) {
    1390             pcirLast->rc.preccNextRecord = NULL;
     1386            if (pcirLast)
     1387              pcirLast->rc.preccNextRecord = NULL;
     1388            else
     1389              pcirFirst = NULL;
    13911390            FreeCnrItemList(hwndRight, pcir);
    13921391          }
    13931392          if (filesr) {
    1394             while (filesr[r]) {
     1393            for (; filesr[r]; r++)
    13951394              free(filesr[r]);
    1396               r++;
    1397             }
    13981395          }
    13991396          // Reduce count to match what is in containers
     
    14141411        memset(&ri, 0, sizeof(RECORDINSERT));
    14151412        ri.cb = sizeof(RECORDINSERT);
    1416         ri.pRecordOrder = (PRECORDCORE) CMA_END;
    1417         ri.pRecordParent = (PRECORDCORE) NULL;
    1418         ri.zOrder = (ULONG) CMA_TOP;
     1413        ri.pRecordOrder = (PRECORDCORE)CMA_END;
     1414        ri.pRecordParent = (PRECORDCORE)NULL;
     1415        ri.zOrder = (ULONG)CMA_TOP;
    14191416        ri.cRecordsInsert = recsNeeded;
    14201417        ri.fInvalidateRecord = FALSE;
     1418
    14211419        if (!WinSendMsg(hwndLeft, CM_INSERTRECORD,
    14221420                        MPFROMP(pcilFirst), MPFROMP(&ri))) {
    14231421          Win_Error(hwndLeft, cmp->hwnd, pszSrcFile, __LINE__, "CM_INSERTRECORD");
    14241422          FreeCnrItemList(hwndLeft, pcilFirst);
    1425           // numfilesl = 0;             // 08 Jan 08 SHL fixme
    14261423          cmp->cmp->totalleft = 0;
    14271424        }
     
    14301427        memset(&ri, 0, sizeof(RECORDINSERT));
    14311428        ri.cb = sizeof(RECORDINSERT);
    1432         ri.pRecordOrder = (PRECORDCORE) CMA_END;
    1433         ri.pRecordParent = (PRECORDCORE) NULL;
    1434         ri.zOrder = (ULONG) CMA_TOP;
     1429        ri.pRecordOrder = (PRECORDCORE)CMA_END;
     1430        ri.pRecordParent = (PRECORDCORE)NULL;
     1431        ri.zOrder = (ULONG)CMA_TOP;
    14351432        ri.cRecordsInsert = recsNeeded;
    14361433        ri.fInvalidateRecord = FALSE;
     
    14411438          RemoveCnrItems(hwndLeft, NULL, 0, CMA_FREE | CMA_INVALIDATE);
    14421439          FreeCnrItemList(hwndRight, pcirFirst);
    1443           // numfilesr = 0;
    14441440          cmp->cmp->totalright = 0;
    14451441        }
     
    14971493  switch (msg) {
    14981494  case WM_INITDLG:
    1499     cmp = (COMPARE *) mp2;
     1495    cmp = (COMPARE *)mp2;
    15001496    if (!cmp) {
    15011497      Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     
    15071503      WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptr), MPVOID);
    15081504      cmp->hwnd = hwnd;
    1509       WinSetWindowPtr(hwnd, QWL_USER, (PVOID) cmp);
     1505      WinSetWindowPtr(hwnd, QWL_USER, (PVOID)cmp);
    15101506      SetCnrCols(hwndLeft, TRUE);
    15111507      SetCnrCols(hwndRight, TRUE);
     
    15181514                         0
    15191515                       };
    1520         INT x;
    1521 
     1516        UINT x;
    15221517        for (x = 0; ids[x]; x++)
    15231518          SetPresParams(WinWindowFromID(hwnd, ids[x]),
     
    15891584                        sz - (szbx + 6), 20, SWP_MOVE | SWP_SIZE);
    15901585        PaintRecessedWindow(WinWindowFromID(hwnd, COMP_TOTALLEFT),
    1591                             (HPS) 0, FALSE, FALSE);
     1586                            (HPS)0, FALSE, FALSE);
    15921587        PaintRecessedWindow(WinWindowFromID(hwnd, COMP_SELLEFT),
    1593                             (HPS) 0, FALSE, FALSE);
     1588                            (HPS)0, FALSE, FALSE);
    15941589        PaintRecessedWindow(WinWindowFromID(hwnd, COMP_TOTALRIGHT),
    1595                             (HPS) 0, FALSE, FALSE);
     1590                            (HPS)0, FALSE, FALSE);
    15961591        PaintRecessedWindow(WinWindowFromID(hwnd, COMP_SELRIGHT),
    1597                             (HPS) 0, FALSE, FALSE);
    1598         PaintRecessedWindow(hwndLeft, (HPS) 0,
     1592                            (HPS)0, FALSE, FALSE);
     1593        PaintRecessedWindow(hwndLeft, (HPS)0,
    15991594                            (hwndActive == hwndLeft), TRUE);
    1600         PaintRecessedWindow(hwndRight, (HPS) 0,
     1595        PaintRecessedWindow(hwndRight, (HPS)0,
    16011596                            (hwndActive == hwndRight), TRUE);
    16021597      }
     
    16141609
    16151610      cmp = INSTDATA(hwnd);
    1616       if (cmp) {
     1611      if (!cmp)
     1612        Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     1613      else {
    16171614        cmp->dcd.size = sizeof(DIRCNRDATA);
    16181615        cmp->dcd.type = DIR_FRAME;
     
    16711668      pcown = (PCNRDRAWITEMINFO)pown->hItem;
    16721669      if (pcown) {
    1673         pci = (PCNRITEM) pcown->pRecord;
     1670        pci = (PCNRITEM)pcown->pRecord;
    16741671        // 01 Aug 07 SHL if field null or blank, we draw
    16751672        // fixme to know why - probably to optimize and bypass draw?
     
    17331730      sprintf(s, " %d", cmp->selright);
    17341731      WinSetDlgItemText(hwnd, COMP_SELRIGHT, s);
     1732      // 12 Jan 08 SHL fixme to have SetEnables(COMPARE* pcmp, BOOL fEnable)
     1733      // to replace duplicated code here and elsewhere
    17351734      WinEnableWindow(WinWindowFromID(hwnd, DID_OK), TRUE);
    17361735      WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), TRUE);
     
    17641763      }
    17651764      WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS), TRUE);
    1766       if (*cmp->dcd.mask.szMask)
    1767         WinSetDlgItemText(hwnd, COMP_NOTE,
    1768                           GetPString(IDS_COMPREADYFILTEREDTEXT));
     1765      WinEnableWindow(WinWindowFromID(hwnd, COMP_HIDENOTSELECTED), TRUE);
     1766      if (*cmp->dcd.mask.szMask) {
     1767        sprintf(s,
     1768                GetPString(IDS_COMPREADYFILTEREDTEXT),
     1769                cmp->dcd.mask.szMask);
     1770        WinSetDlgItemText(hwnd, COMP_NOTE, s);
     1771      }
    17691772      else
    17701773        WinSetDlgItemText(hwnd, COMP_NOTE, GetPString(IDS_COMPREADYTEXT));
     
    17891792    cmp = INSTDATA(hwnd);
    17901793    if (cmp) {
    1791       if ((HWND) mp2 == cmp->dcd.hwndLastMenu) {
     1794      if ((HWND)mp2 == cmp->dcd.hwndLastMenu) {
    17921795        MarkAll(hwndLeft, TRUE, FALSE, TRUE);
    17931796        MarkAll(hwndRight, TRUE, FALSE, TRUE);
    17941797        WinDestroyWindow(cmp->dcd.hwndLastMenu);
    1795         cmp->dcd.hwndLastMenu = (HWND) 0;
     1798        cmp->dcd.hwndLastMenu = (HWND)0;
    17961799      }
    17971800    }
     
    18241827      case CN_KILLFOCUS:
    18251828        PaintRecessedWindow(WinWindowFromID(hwnd, SHORT1FROMMP(mp1)),
    1826                             (HPS) 0, FALSE, TRUE);
     1829                            (HPS)0, FALSE, TRUE);
    18271830        break;
    18281831
    18291832      case CN_SETFOCUS:
    18301833        PaintRecessedWindow(WinWindowFromID(hwnd, SHORT1FROMMP(mp1)),
    1831                             (HPS) 0, TRUE, TRUE);
     1834                            (HPS)0, TRUE, TRUE);
    18321835        break;
    18331836
     
    18351838        if (mp2) {
    18361839
    1837           PCNRITEM pci = (PCNRITEM) ((PNOTIFYRECORDENTER) mp2)->pRecord;
     1840          PCNRITEM pci = (PCNRITEM)((PNOTIFYRECORDENTER)mp2)->pRecord;
    18381841          HWND hwndCnr = WinWindowFromID(hwnd, SHORT1FROMMP(mp1));
    18391842
     
    18551858            WinSendMsg(hwndCnr, CM_SETRECORDEMPHASIS,
    18561859                       MPFROMP(pci),
    1857                        MPFROM2SHORT(FALSE, CRA_INUSE |
    1858                                     ((fUnHilite) ? CRA_SELECTED : 0)));
     1860                       MPFROM2SHORT(FALSE,
     1861                                    CRA_INUSE | (fUnHilite ? CRA_SELECTED : 0)));
    18591862          }
    18601863        }
     
    18641867        cmp = INSTDATA(hwnd);
    18651868        if (cmp) {
    1866 
    1867           PCNRITEM pci = (PCNRITEM) mp2;
     1869          PCNRITEM pci = (PCNRITEM)mp2;
    18681870          USHORT id = COMP_CNRMENU;
    18691871
    18701872          if (cmp->dcd.hwndLastMenu)
    18711873            WinDestroyWindow(cmp->dcd.hwndLastMenu);
    1872           cmp->dcd.hwndLastMenu = (HWND) 0;
     1874          cmp->dcd.hwndLastMenu = (HWND)0;
    18731875          cmp->hwndCalling = WinWindowFromID(hwnd, SHORT1FROMMP(mp1));
    18741876          if (pci) {
     
    19031905          break;
    19041906        DoFileDrag(WinWindowFromID(hwnd, SHORT1FROMMP(mp1)),
    1905                    (HWND) 0, mp2, NULL, NULL, TRUE);
     1907                   (HWND)0, mp2, NULL, NULL, TRUE);
    19061908        break;
    19071909
     
    19151917      case CN_EMPHASIS:
    19161918        {
    1917           PNOTIFYRECORDEMPHASIS pre = mp2;
    1918           PCNRITEM pci;
    1919 
    1920           if (pre->fEmphasisMask & CRA_SELECTED) {
    1921             pci = (PCNRITEM) pre->pRecord;
     1919          PNOTIFYRECORDEMPHASIS pnre = mp2;
     1920          if (pnre->fEmphasisMask & CRA_SELECTED) {
     1921            PCNRITEM pci = (PCNRITEM)pnre->pRecord;
    19221922            if (pci) {
    1923               if (!pci || !*pci->pszFileName) {
     1923              if (!*pci->pszFileName) {
     1924                // 12 Jan 08 SHL fixme to know if select counts need update?
    19241925                if (pci->rc.flRecordAttr & CRA_SELECTED)
    19251926                  WinSendDlgItemMsg(hwnd, SHORT1FROMMP(mp1),
     
    19291930              }
    19301931              else {
    1931 
    19321932                cmp = INSTDATA(hwnd);
    1933                 if (pci->rc.flRecordAttr & CRA_SELECTED) {
    1934                   if (SHORT1FROMMP(mp1) == COMP_LEFTDIR)
    1935                     cmp->selleft++;
    1936                   else
    1937                     cmp->selright++;
     1933                if (SHORT1FROMMP(mp1) == COMP_LEFTDIR) {
     1934                  cmp->selleft +=
     1935                    pci->rc.flRecordAttr & CRA_SELECTED ? 1 : -1;
     1936                  // If window not enabled WM_TIMER will update display
     1937                  if (WinIsWindowEnabled(hwndLeft)) {
     1938                    sprintf(s, " %d", cmp->selleft);
     1939                    WinSetDlgItemText(hwnd, COMP_SELLEFT, s);
     1940                  }
     1941                }
     1942                else if (SHORT1FROMMP(mp1) == COMP_RIGHTDIR) {
     1943                  cmp->selright +=
     1944                    pci->rc.flRecordAttr & CRA_SELECTED ? 1 : -1;
     1945                  if (WinIsWindowEnabled(hwndRight)) {
     1946                    sprintf(s, " %d", cmp->selright);
     1947                    WinSetDlgItemText(hwnd, COMP_SELRIGHT, s);
     1948                  }
    19381949                }
    19391950                else {
    1940                   if (SHORT1FROMMP(mp1) == COMP_LEFTDIR) {
    1941                     if (cmp->selleft)
    1942                       cmp->selleft--;
    1943                   }
    1944                   else {
    1945                     if (cmp->selright)
    1946                       cmp->selright--;
    1947                   }
     1951                  Runtime_Error(pszSrcFile, __LINE__,
     1952                                "mp1 %u unexpected", SHORT1FROMMP(mp1));
    19481953                }
    19491954              }
     
    19611966          if (pns->fScroll & CMA_VERTICAL) {
    19621967            cmp->forcescroll = TRUE;
    1963             WinSendDlgItemMsg(hwnd, (SHORT1FROMMP(mp1) == COMP_LEFTDIR) ?
    1964                               COMP_RIGHTDIR : COMP_LEFTDIR,
    1965                               CM_SCROLLWINDOW, MPFROMSHORT(CMA_VERTICAL),
     1968            // Scroll other window to match
     1969            WinSendDlgItemMsg(hwnd,
     1970                              SHORT1FROMMP(mp1) == COMP_LEFTDIR ?
     1971                                COMP_RIGHTDIR : COMP_LEFTDIR,
     1972                              CM_SCROLLWINDOW,
     1973                              MPFROMSHORT(CMA_VERTICAL),
    19661974                              MPFROMLONG(pns->lScrollInc));
    19671975            cmp->forcescroll = FALSE;
     
    19691977        }
    19701978        break;
    1971       }
    1972       break;                            // COMP_RIGHTDIR
    1973     }
     1979      } // switch COMP_LEFTDIR mp1
     1980      break;                            // COMP_LEFTDIR / COMP_RIGHTDIR
     1981    } // switch WM_CONTROL mp1
    19741982    return 0;                           // WM_CONTROL
    19751983
     
    19771985    cmp = INSTDATA(hwnd);
    19781986    if (cmp) {
    1979 
    19801987      COMPARE *forthread;
    19811988      CNRINFO cnri;
    1982 
    19831989      cmp->includesubdirs = WinQueryButtonCheckstate(hwnd,
    19841990                                                     COMP_INCLUDESUBDIRS);
     
    20022008        *forthread = *cmp;
    20032009        forthread->cmp = cmp;
    2004         if (_beginthread(FillCnrsThread, NULL, 122880, (PVOID) forthread) ==
     2010        if (_beginthread(FillCnrsThread, NULL, 122880, (PVOID)forthread) ==
    20052011            -1) {
    20062012          Runtime_Error(pszSrcFile, __LINE__,
     
    20372043          WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTSMALLER), FALSE);
    20382044          WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTALL), FALSE);
    2039           WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS), FALSE);
    20402045          WinEnableWindow(WinWindowFromID(hwnd, COMP_SETDIRS), FALSE);
    20412046          WinEnableWindow(WinWindowFromID(hwnd, COMP_DELETELEFT), FALSE);
     
    20452050          WinEnableWindow(WinWindowFromID(hwnd, COMP_COPYRIGHT), FALSE);
    20462051          WinEnableWindow(WinWindowFromID(hwnd, COMP_MOVERIGHT), FALSE);
    2047           WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT),
    2048                           FALSE);
     2052          WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT), FALSE);
    20492053          WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTIDENTICAL), FALSE);
    20502054          WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAME), FALSE);
    20512055          WinEnableWindow(WinWindowFromID(hwnd, IDM_INVERT), FALSE);
    20522056          WinEnableWindow(WinWindowFromID(hwnd, COMP_FILTER), FALSE);
     2057          WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS), FALSE);
     2058          WinEnableWindow(WinWindowFromID(hwnd, COMP_HIDENOTSELECTED), FALSE);
    20532059        }
    20542060      }
     
    20612067      if (mp1) {
    20622068        DosEnterCritSec();
    2063         SetMask((CHAR *) mp1, &cmp->dcd.mask);
     2069        SetMask((CHAR *)mp1, &cmp->dcd.mask);
    20642070        DosExitCritSec();
    20652071      }
    2066       cmp->dcd.suspendview = 1;
     2072      WinSetDlgItemText(hwnd, COMP_NOTE,
     2073                        GetPString(IDS_COMPHOLDFILTERINGTEXT));
     2074      // cmp->dcd.suspendview = 1;              // 12 Jan 08 SHL appears not to be used here
     2075      priority_idle();                  // Don't hog resources
    20672076      WinSendMsg(hwndLeft, CM_FILTER, MPFROMP(Filter),
    20682077                 MPFROMP(&cmp->dcd.mask));
    20692078      WinSendMsg(hwndRight, CM_FILTER, MPFROMP(Filter),
    20702079                 MPFROMP(&cmp->dcd.mask));
    2071       cmp->dcd.suspendview = 0;
    2072       if (*cmp->dcd.mask.szMask)
    2073         WinSetDlgItemText(hwnd, COMP_NOTE,
    2074                           GetPString(IDS_COMPREADYFILTEREDTEXT));
     2080      priority_normal();
     2081      // cmp->dcd.suspendview = 0;              // 12 Jan 08 SHL appears not to be used here
     2082      if (*cmp->dcd.mask.szMask) {
     2083        sprintf(s,
     2084                GetPString(IDS_COMPREADYFILTEREDTEXT),
     2085                cmp->dcd.mask.szMask);
     2086        WinSetDlgItemText(hwnd, COMP_NOTE, s);
     2087      }
    20752088      else
    20762089        WinSetDlgItemText(hwnd, COMP_NOTE, GetPString(IDS_COMPREADYTEXT));
     
    20842097                                                 COMP_HIDENOTSELECTED);
    20852098
    2086       cmp->dcd.suspendview = 1;
     2099      // cmp->dcd.suspendview = 1;              // 12 Jan 08 SHL appears not to be used here
    20872100      if (wantHide) {
    20882101        BOOL needRefresh = FALSE;
     
    20942107                                   MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    20952108
    2096         while (pcil && (INT) pcil != -1 && pcir && (INT) pcir != -1) {
     2109        while (pcil && (INT)pcil != -1 && pcir && (INT)pcir != -1) {
    20972110          if (~pcil->rc.flRecordAttr & CRA_SELECTED &&
    20982111              ~pcir->rc.flRecordAttr & CRA_SELECTED) {
     
    21192132                   MPFROMP(&cmp->dcd.mask));
    21202133      }
    2121       cmp->dcd.suspendview = 0;
    2122       if (*cmp->dcd.mask.szMask)
    2123         WinSetDlgItemText(hwnd, COMP_NOTE,
    2124                           GetPString(IDS_COMPREADYFILTEREDTEXT));
     2134      // cmp->dcd.suspendview = 0;              // 12 Jan 08 SHL appears not to be used here
     2135      if (*cmp->dcd.mask.szMask) {
     2136        sprintf(s,
     2137                GetPString(IDS_COMPREADYFILTEREDTEXT),
     2138                cmp->dcd.mask.szMask);
     2139        WinSetDlgItemText(hwnd, COMP_NOTE, s);
     2140      }
    21252141      else
    21262142        WinSetDlgItemText(hwnd, COMP_NOTE, GetPString(IDS_COMPREADYTEXT));
     
    21332149      cmp = INSTDATA(hwnd);
    21342150      if (cmp) {
    2135 
    21362151        PCNRITEM pci;
    21372152        CHAR ofile[CCHMAXPATH];
    21382153
    2139         pci = (PCNRITEM) WinSendMsg(cmp->hwndCalling,
    2140                                     CM_QUERYRECORDEMPHASIS,
    2141                                     MPFROMLONG(CMA_FIRST),
    2142                                     MPFROMSHORT(CRA_CURSORED));
     2154        pci = (PCNRITEM)WinSendMsg(cmp->hwndCalling,
     2155                                   CM_QUERYRECORDEMPHASIS,
     2156                                   MPFROMLONG(CMA_FIRST),
     2157                                   MPFROMSHORT(CRA_CURSORED));
    21432158        // 01 Aug 07 SHL
    21442159        if (pci && *pci->pszFileName) {
     
    21672182            strcpy(fc.file2, ofile);
    21682183            WinDlgBox(HWND_DESKTOP, hwnd,
    2169                       CFileDlgProc, FM3ModHandle, FCMP_FRAME, (PVOID) & fc);
     2184                      CFileDlgProc, FM3ModHandle, FCMP_FRAME, (PVOID)&fc);
    21702185          }
    21712186        }
     
    21772192      cmp = INSTDATA(hwnd);
    21782193      if (cmp) {
    2179 
    21802194        BOOL empty = FALSE;
    21812195        PCNRITEM pci;
     
    22272241      cmp = INSTDATA(hwnd);
    22282242      if (cmp) {
    2229 
    22302243        DIRCNRDATA dcd1;
    22312244        BOOL tempsubj;
     
    22332246        dcd1 = cmp->dcd;
    22342247        AdjustDetailsSwitches(hwndLeft,
    2235                               (HWND) 0, SHORT1FROMMP(mp1),
     2248                              (HWND)0, SHORT1FROMMP(mp1),
    22362249                              cmp->leftdir, "DirCmp", &cmp->dcd, TRUE);
    22372250        tempsubj = cmp->dcd.detailssubject;
     
    22482261      cmp = INSTDATA(hwnd);
    22492262      if (cmp) {
    2250 
    22512263        CHAR fullname[CCHMAXPATH];
    22522264
     
    22642276      cmp = INSTDATA(hwnd);
    22652277      if (cmp) {
    2266 
    22672278        SNAPSTUFF *sf;
    22682279        CHAR fullname[CCHMAXPATH];
     
    22792290              strcpy(sf->dirname, cmp->rightdir);
    22802291            sf->recurse = cmp->includesubdirs;
    2281             if (_beginthread(StartSnap, NULL, 65536, (PVOID) sf) == -1) {
     2292            if (_beginthread(StartSnap, NULL, 65536, (PVOID)sf) == -1) {
    22822293              Runtime_Error(pszSrcFile, __LINE__,
    22832294                            GetPString(IDS_COULDNTSTARTTHREADTEXT));
     
    22922303      cmp = INSTDATA(hwnd);
    22932304      if (cmp) {
    2294 
    22952305        WALK2 wa;
    2296 
    22972306        memset(&wa, 0, sizeof(wa));
    22982307        wa.size = sizeof(wa);
    22992308        strcpy(wa.szCurrentPath1, cmp->leftdir);
    23002309        strcpy(wa.szCurrentPath2, cmp->rightdir);
    2301         if (WinDlgBox(HWND_DESKTOP, hwnd, WalkTwoCmpDlgProc,
    2302                       FM3ModHandle, WALK2_FRAME,
     2310        if (WinDlgBox(HWND_DESKTOP,
     2311                      hwnd,
     2312                      WalkTwoCmpDlgProc,
     2313                      FM3ModHandle,
     2314                      WALK2_FRAME,
    23032315                      MPFROMP(&wa)) &&
    23042316            !IsFile(wa.szCurrentPath1) &&
     
    23212333      cmp = INSTDATA(hwnd);
    23222334      if (cmp) {
    2323 
    23242335        COMPARE *forthread;
    23252336
     
    23302341          forthread->cmp = cmp;
    23312342          forthread->action = SHORT1FROMMP(mp1);
    2332           if (_beginthread(ActionCnrThread, NULL, 122880, (PVOID) forthread)
     2343          if (_beginthread(ActionCnrThread, NULL, 122880, (PVOID)forthread)
    23332344              == -1) {
    23342345            Runtime_Error(pszSrcFile, __LINE__,
     
    23562367              break;
    23572368            default:
    2358               WinSetDlgItemText(hwnd, COMP_NOTE,
    2359                                 GetPString(IDS_COMPHOLDDUNNOTEXT));
    2360               break;
     2369              Runtime_Error(pszSrcFile, __LINE__, "mp1 %u unexpected", SHORT1FROMMP(mp1));
    23612370            }
    23622371            WinEnableWindow(hwndRight, FALSE);
     
    23762385            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTOLDER), FALSE);
    23772386            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTBIGGER), FALSE);
    2378             WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTSMALLER),
    2379                             FALSE);
     2387            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTSMALLER), FALSE);
    23802388            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTALL), FALSE);
    2381             WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS),
    2382                             FALSE);
    23832389            WinEnableWindow(WinWindowFromID(hwnd, COMP_SETDIRS), FALSE);
    23842390            WinEnableWindow(WinWindowFromID(hwnd, COMP_DELETELEFT), FALSE);
     
    23882394            WinEnableWindow(WinWindowFromID(hwnd, COMP_COPYRIGHT), FALSE);
    23892395            WinEnableWindow(WinWindowFromID(hwnd, COMP_MOVERIGHT), FALSE);
    2390             WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT),
    2391                             FALSE);
    2392             WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTIDENTICAL),
    2393                             FALSE);
     2396            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT), FALSE);
     2397            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTIDENTICAL), FALSE);
    23942398            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAME), FALSE);
    23952399            WinEnableWindow(WinWindowFromID(hwnd, IDM_INVERT), FALSE);
    23962400            WinEnableWindow(WinWindowFromID(hwnd, COMP_FILTER), FALSE);
     2401            WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS), FALSE);
     2402            WinEnableWindow(WinWindowFromID(hwnd, COMP_HIDENOTSELECTED), FALSE);
    23972403          }
    23982404        }
     
    24422448          forthread->cmp = cmp;
    24432449          forthread->action = SHORT1FROMMP(mp1);
    2444           if (_beginthread(SelectCnrsThread, NULL, 65536, (PVOID) forthread)
     2450          if (_beginthread(SelectCnrsThread, NULL, 65536, (PVOID)forthread)
    24452451              == -1) {
    24462452            Runtime_Error(pszSrcFile, __LINE__,
     
    24872493            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTOLDER), FALSE);
    24882494            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTBIGGER), FALSE);
    2489             WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTSMALLER),
    2490                             FALSE);
     2495            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTSMALLER), FALSE);
    24912496            WinEnableWindow(WinWindowFromID(hwnd, IDM_DESELECTALL), FALSE);
    2492             WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS),
    2493                             FALSE);
     2497            WinEnableWindow(WinWindowFromID(hwnd, COMP_INCLUDESUBDIRS), FALSE);
     2498            WinEnableWindow(WinWindowFromID(hwnd, COMP_HIDENOTSELECTED), FALSE);
    24942499            WinEnableWindow(WinWindowFromID(hwnd, COMP_SETDIRS), FALSE);
    24952500            WinEnableWindow(WinWindowFromID(hwnd, COMP_DELETELEFT), FALSE);
     
    24992504            WinEnableWindow(WinWindowFromID(hwnd, COMP_COPYRIGHT), FALSE);
    25002505            WinEnableWindow(WinWindowFromID(hwnd, COMP_MOVERIGHT), FALSE);
    2501             WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT),
    2502                             FALSE);
    2503             WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTIDENTICAL),
    2504                             FALSE);
     2506            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAMECONTENT), FALSE);
     2507            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTIDENTICAL), FALSE);
    25052508            WinEnableWindow(WinWindowFromID(hwnd, IDM_SELECTSAME), FALSE);
    25062509            WinEnableWindow(WinWindowFromID(hwnd, IDM_INVERT), FALSE);
     
    25982601        WinDestroyWindow(cmp->dcd.hwndLastMenu);
    25992602      if (cmp->dcd.hwndObject) {
    2600         WinSetWindowPtr(cmp->dcd.hwndObject, QWL_USER, (PVOID) NULL);
     2603        WinSetWindowPtr(cmp->dcd.hwndObject, QWL_USER, (PVOID)NULL);
    26012604        if (!PostMsg(cmp->dcd.hwndObject, WM_CLOSE, MPVOID, MPVOID))
    26022605          WinSendMsg(cmp->dcd.hwndObject, WM_CLOSE, MPVOID, MPVOID);
Note: See TracChangeset for help on using the changeset viewer.