Changeset 1411 for trunk/dll/arccnrs.c


Ignore:
Timestamp:
Mar 29, 2009, 10:33:07 PM (16 years ago)
Author:
Steven Levine
Message:

Rework extended container search to use common logic
Update docs to match code
Shift now reverses configured state of extended container search enable
Backslash optional in not ambiguous

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/arccnrs.c

    r1402 r1411  
    7575  08 Mar 09 GKY Additional strings move to PCSZs in init.c
    7676  08 Mar 09 GKY Removed variable aurguments from docopyf and unlinkf (not used)
     77  12 Mar 09 SHL Use common SearchContainer
    7778
    7879***********************************************************************/
     
    22442245    shiftstate = (SHORT1FROMMP(mp1) & (KC_SHIFT | KC_ALT | KC_CTRL));
    22452246    if (SHORT1FROMMP(mp1) & KC_KEYUP)
    2246       return (MRESULT) TRUE;
     2247      return (MRESULT)TRUE;
    22472248    if (SHORT1FROMMP(mp1) & KC_VIRTUALKEY) {
    22482249      switch (SHORT2FROMMP(mp2)) {
     
    22522253      }
    22532254    }
    2254     if (shiftstate || fNoSearch)
    2255       break;
    2256     if (SHORT1FROMMP(mp1) & KC_CHAR) {
    2257 
    2258       ULONG thistime, len;
    2259       SEARCHSTRING srch;
    2260       PCNRITEM pci;
    2261 
    2262       if (!dcd)
    2263         break;
    2264       switch (SHORT1FROMMP(mp2)) {
    2265       case '\x1b':
    2266       case '\r':
    2267       case '\n':
    2268         dcd->lasttime = 0;
    2269         *dcd->szCommonName = 0;
    2270         break;
    2271       default:
    2272         thistime = WinQueryMsgTime(WinQueryAnchorBlock(hwnd));
    2273         if (thistime > dcd->lasttime + 1250)
    2274           *dcd->szCommonName = 0;
    2275         dcd->lasttime = thistime;
    2276         if (SHORT1FROMMP(mp2) == ' ' && !*dcd->szCommonName)
    2277           break;
    2278       KbdRetry:
    2279         len = strlen(dcd->szCommonName);
    2280         if (len >= CCHMAXPATH - 1) {
    2281           *dcd->szCommonName = 0;
    2282           len = 0;
    2283         }
    2284         dcd->szCommonName[len] = toupper(SHORT1FROMMP(mp2));
    2285         dcd->szCommonName[len + 1] = 0;
    2286         memset(&srch, 0, sizeof(SEARCHSTRING));
    2287         srch.cb = (ULONG) sizeof(SEARCHSTRING);
    2288         srch.pszSearch = dcd->szCommonName;
    2289         srch.fsPrefix = TRUE;
    2290         srch.fsCaseSensitive = FALSE;
    2291         srch.usView = CV_ICON;
    2292         pci = WinSendMsg(hwnd,
    2293                          CM_SEARCHSTRING,
    2294                          MPFROMP(&srch), MPFROMLONG(CMA_FIRST));
    2295         if (pci && (INT) pci != -1) {
    2296 
    2297           USHORT attrib = CRA_CURSORED;
    2298 
    2299 
    2300           /* make found item current item */
    2301           if (!stricmp(pci->pszFileName, dcd->szCommonName))
    2302             attrib |= CRA_SELECTED;
    2303           WinSendMsg(hwnd,
    2304                      CM_SETRECORDEMPHASIS,
    2305                      MPFROMP(pci), MPFROM2SHORT(TRUE, attrib));
    2306           /* make sure that record shows in viewport */
    2307           ShowCnrRecord(hwnd, (PMINIRECORDCORE) pci);
    2308           return (MRESULT) TRUE;
    2309         }
    2310         else {
    2311           if (SHORT1FROMMP(mp2) == ' ') {
    2312             dcd->szCommonName[len] = 0;
    2313             break;
    2314           }
    2315           *dcd->szCommonName = 0;
    2316           dcd->lasttime = 0;
    2317           if (len)                      // retry as first letter if no match
    2318             goto KbdRetry;
    2319         }
    2320         break;
    2321       }
    2322     }
    2323     break;
     2255
     2256    if (SearchContainer(hwnd, msg, mp1, mp2))
     2257        return (MRESULT)TRUE;           // Avoid default handler
     2258    break;                              // Let default handler see key too
    23242259
    23252260  case WM_MOUSEMOVE:
Note: See TracChangeset for help on using the changeset viewer.