Changeset 606


Ignore:
Timestamp:
Apr 13, 2007, 11:30:27 PM (19 years ago)
Author:
Gregg Young
Message:

Drag drop work around for number of files limitation in PM

Location:
trunk/dll
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/arccnrs.c

    r603 r606  
    3434  30 Mar 07 GKY Remove GetPString for window class names
    3535   06 Apr 07 GKY Work around PM DragInfo and DrgFreeISH limit
    36   06 Apr 07 GKY Add some error checking in drag/drop 
     36  06 Apr 07 GKY Add some error checking in drag/drop
    3737***********************************************************************/
    3838
     
    11301130      li = DoFileDrop(dcd->hwndCnr,
    11311131                      dcd->directory, FALSE, MPVOID, MPFROMP(&cni));
    1132       if(fexceedpmdrglimit)
     1132      if (fExceedPMDrgLimit)
    11331133             saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    1134                    hwnd,
    1135                    GetPString(IDS_ERRORTEXT),
    1136                    GetPString(IDS_EXCEEDPMDRGLMT));
     1134                                   hwnd,
     1135                                   GetPString(IDS_ERRORTEXT),
     1136                         GetPString(IDS_EXCEEDPMDRGLMT));
    11371137      if (li) {
    11381138        li->type = (msg == DM_DISCARDOBJECT) ? IDM_DELETE : IDM_PRINT;
     
    30063006                             dcd->hwndObject,
    30073007                             mp2, dcd->arcname, NULL, TRUE)) {
    3008                 if ((fUnHilite && wasemphasized) || fexceedpmdrglimit)
     3008                if ((fUnHilite && wasemphasized) || fExceedPMDrgLimit)
    30093009                  UnHilite(hwnd, TRUE, &dcd->lastselection);
    30103010              }
     
    30363036          li = DoFileDrop(hwnd, dcd->arcname, FALSE, mp1, mp2);
    30373037          DosBeep(50, 100);             // fixme to know why beep?
    3038           if(fexceedpmdrglimit)
    3039              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    3040                    hwnd,
    3041                    GetPString(IDS_ERRORTEXT),
    3042                    GetPString(IDS_EXCEEDPMDRGLMT));
     3038          if (fExceedPMDrgLimit)
     3039            saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     3040                                  hwnd,
     3041                                  GetPString(IDS_ERRORTEXT),
     3042                        GetPString(IDS_EXCEEDPMDRGLMT));
    30433043          if (li) {
    30443044            li->type = li->type == DO_MOVE ? IDM_ARCHIVEM : IDM_ARCHIVE;
  • trunk/dll/collect.c

    r603 r606  
    459459      cni.pDragInfo = (PDRAGINFO) mp1;
    460460      li = DoFileDrop(dcd->hwndCnr, NULL, FALSE, MPVOID, MPFROMP(&cni));
    461       if(fexceedpmdrglimit)
    462              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    463                    hwnd,
    464                    GetPString(IDS_ERRORTEXT),
     461      if (fExceedPMDrgLimit)
     462        saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     463                             hwnd,
     464                             GetPString(IDS_ERRORTEXT),
    465465                   GetPString(IDS_EXCEEDPMDRGLMT));
    466466      if (li) {
     
    22452245                                 GetPString(IDS_DRAGFILEOBJTEXT));
    22462246              if (DoFileDrag(hwnd, dcd->hwndObject, mp2, NULL, NULL, TRUE)) {
    2247                 if ((fUnHilite && wasemphasized) || fexceedpmdrglimit)
     2247                if ((fUnHilite && wasemphasized) || fExceedPMDrgLimit)
    22482248                  UnHilite(hwnd, TRUE, &dcd->lastselection);
    22492249              }
     
    22612261
    22622262          li = DoFileDrop(hwnd, NULL, TRUE, mp1, mp2);
    2263           if(fexceedpmdrglimit)
    2264              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    2265                    hwnd,
    2266                    GetPString(IDS_ERRORTEXT),
    2267                    GetPString(IDS_EXCEEDPMDRGLMT));
     2263          if (fExceedPMDrgLimit)
     2264            saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     2265                                 hwnd,
     2266                                 GetPString(IDS_ERRORTEXT),
     2267                       GetPString(IDS_EXCEEDPMDRGLMT));
    22682268          if (li) {
    22692269            if (!*li->targetpath) {
  • trunk/dll/dircnrs.c

    r603 r606  
    589589        DoFileDrop(dcd->hwndCnr, dcd->directory, FALSE, MPVOID,
    590590                   MPFROMP(&cni));
    591       if(fexceedpmdrglimit)
    592              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    593                    hwnd,
    594                    GetPString(IDS_ERRORTEXT),
     591      if (fExceedPMDrgLimit)
     592        saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     593                             hwnd,
     594                             GetPString(IDS_ERRORTEXT),
    595595                   GetPString(IDS_EXCEEDPMDRGLMT));
    596596      if (li) {
     
    28472847                           (pci) ? NULL : dcd->directory,
    28482848                           (pci) ? TRUE : FALSE)) {
    2849               if ((pci && fUnHilite && wasemphasized) || fexceedpmdrglimit)
     2849              if ((pci && fUnHilite && wasemphasized) || fExceedPMDrgLimit)
    28502850                UnHilite(hwnd, TRUE, &dcd->lastselection);
    28512851            }
     
    28652865
    28662866          li = DoFileDrop(hwnd, dcd->directory, TRUE, mp1, mp2);
    2867           if(fexceedpmdrglimit)
    2868              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    2869                    hwnd,
    2870                    GetPString(IDS_ERRORTEXT),
    2871                    GetPString(IDS_EXCEEDPMDRGLMT));
     2867          if (fExceedPMDrgLimit)
     2868            saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     2869                                 hwnd,
     2870                                 GetPString(IDS_ERRORTEXT),
     2871                       GetPString(IDS_EXCEEDPMDRGLMT));
    28722872          if (li) {
    28732873            if (li->list && li->list[0] && IsRoot(li->list[0]))
  • trunk/dll/draglist.c

    r603 r606  
    3131
    3232#pragma alloc_text(DRAGLIST,DragOne,DoFileDrag,DragList,PickUp,DeleteDragitemStrHandles)
    33 
     33/* work around for DrgDeleteDraginfoStrHandles
     34which seems to fail with a large number of strings */
    3435BOOL DeleteDragitemStrHandles (PDRAGINFO pDInfo)
    3536{
    36     PDRAGITEM  pDItem = NULL;
     37    PDRAGITEM  pDItem;
    3738    ULONG cDitem;
    38     INT  i = 0;
     39    UINT  i = 0;
     40    APIRET rc;
     41
    3942    cDitem = DrgQueryDragitemCount(pDInfo);
    40      while (i < (INT) cDitem){
     43     for (; i < (UINT)cDitem; i++){
    4144         pDItem = DrgQueryDragitemPtr(pDInfo, i);
    42      if (pDItem){
    43          DrgDeleteStrHandle(pDItem->hstrType);
    44          DrgDeleteStrHandle(pDItem->hstrRMF);
    45          DrgDeleteStrHandle(pDItem->hstrContainerName);
    46          DrgDeleteStrHandle(pDItem->hstrSourceName);
    47           //  Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    48           //        "DrgAddStrHandle");
    49          DrgDeleteStrHandle(pDItem->hstrTargetName);
     45     if (!pDItem)
     46        return FALSE;
     47     else {
     48        DrgDeleteStrHandle(pDItem->hstrType);
     49        DrgDeleteStrHandle(pDItem->hstrRMF);
     50        DrgDeleteStrHandle(pDItem->hstrContainerName);
     51        rc = DrgDeleteStrHandle(pDItem->hstrSourceName);
     52        if (!rc)
     53               Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
     54                        "DrgDeleteStrHandle");
     55        DrgDeleteStrHandle(pDItem->hstrTargetName);
    5056     }
    51      else
    52          return FALSE;
    53      i++;
    54     }
    55     return TRUE;
     57   } // for
     58   return TRUE;
    5659}
    5760
     
    99102      DItem.hstrContainerName = DrgAddStrHandle(szDir);
    100103      DItem.hstrSourceName = DrgAddStrHandle(szFile);
    101       if(!DItem.hstrSourceName)
     104      if (!DItem.hstrSourceName)
    102105         Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    103106         "DrgQueryStrName");
     
    142145                        &fakeicon, 1L, VK_ENDDRAG,      /* End of drag indicator */
    143146                        (PVOID) NULL);  /* Reserved              */
    144         if(hDrop == NULLHANDLE){
    145         if(!DeleteDragitemStrHandles(pDInfo)) //)
     147        //if (hDrop == NULLHANDLE)
     148        if (!DeleteDragitemStrHandles(pDInfo)) //)
    146149            Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    147150                      "DeleteDragistr");
    148151        DrgDeleteDraginfoStrHandles (pDInfo);
    149152        DrgFreeDraginfo(pDInfo);        /* Free DRAGINFO struct  */
    150         }
    151153        WinSetWindowPos(hwndCnr, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
    152154      }
     
    174176  APIRET rc;
    175177
    176   fexceedpmdrglimit = FALSE;
     178  fExceedPMDrgLimit = 0;
    177179  if (!pciRec && directory && *directory)
    178180    return DragOne(hwndCnr, hwndObj, directory, moveok);
     
    267269          padiIcon[ulNumfiles].cyOffset = 0 + (ulNumfiles * 6);
    268270        }
    269         memset(ppDItem[ulNumfiles], 0, sizeof(DRAGITEM));
    270         ppDItem[ulNumfiles]->hwndItem = (hwndObj) ? hwndObj : hwndCnr;  /* Initialize DRAGITEM   */
    271         ppDItem[ulNumfiles]->hwndItem = hwndCnr;
    272         ppDItem[ulNumfiles]->ulItemID = (ULONG) pci;
    273         ppDItem[ulNumfiles]->hstrType = DrgAddStrHandle(DRT_UNKNOWN);
    274         ppDItem[ulNumfiles]->hstrRMF = DrgAddStrHandle(DRMDRFLIST);
    275         ppDItem[ulNumfiles]->hstrContainerName = DrgAddStrHandle(szBuffer);
    276         ppDItem[ulNumfiles]->hstrSourceName = DrgAddStrHandle(szFile);
    277         if (!ppDItem[ulNumfiles]->hstrSourceName)
    278         Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    279                   "DrgAddStrHandle");
     271        memset(ppDItem[ulNumfiles], 0, sizeof(DRAGITEM));
     272        ppDItem[ulNumfiles]->hwndItem = (hwndObj) ? hwndObj : hwndCnr;  /* Initialize DRAGITEM   */
     273        ppDItem[ulNumfiles]->hwndItem = hwndCnr;
     274        ppDItem[ulNumfiles]->ulItemID = (ULONG) pci;
     275        ppDItem[ulNumfiles]->hstrType = DrgAddStrHandle(DRT_UNKNOWN);
     276        ppDItem[ulNumfiles]->hstrRMF = DrgAddStrHandle(DRMDRFLIST);
     277        ppDItem[ulNumfiles]->hstrContainerName = DrgAddStrHandle(szBuffer);
     278             ppDItem[ulNumfiles]->hstrSourceName = DrgAddStrHandle(szFile);
     279        if (!ppDItem[ulNumfiles]->hstrSourceName){
     280            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrType);
     281            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrRMF);
     282            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrContainerName);
     283            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrSourceName);
     284            xfree(ppDItem[ulNumfiles]);
     285            fExceedPMDrgLimit = ulNumfiles - 1;
     286            break;
     287        }
     288        /*Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
     289                  "DrgAddStrHandle");*/
    280290        ppDItem[ulNumfiles]->hstrTargetName = DrgAddStrHandle(szFile);
    281291        ppDItem[ulNumfiles]->fsControl = (isdir) ? DC_CONTAINER : 0;
     
    292302          rooting = TRUE;
    293303        }
    294         if(ulNumfiles >= 1500){
    295            pDInfo = DrgAllocDraginfo(ulNumfiles);
    296             fexceedpmdrglimit = TRUE;
    297              goto Thatsall;
    298         }
     304   //if (ulNumfiles >= 2000){
     305     // pDInfo = DrgAllocDraginfo(ulNumfiles);
     306     // fExceedPMDrgLimit = TRUE;
     307     // goto Thatsall;
     308     //   }
    299309        ulNumfiles++;
    300310        ppDItem[ulNumfiles] = NULL;
     
    329339        ppDItem[ulNumfiles]->hstrContainerName = DrgAddStrHandle(arcfile);
    330340        ppDItem[ulNumfiles]->hstrSourceName = DrgAddStrHandle(szFile);
    331         if(!ppDItem[ulNumfiles]->hstrSourceName)
    332         Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    333                  "DrgAddStrHandle");
     341        if (!ppDItem[ulNumfiles]->hstrSourceName){
     342          DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrType);
     343          DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrRMF);
     344          DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrContainerName);
     345          DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrSourceName);
     346          xfree(ppDItem[ulNumfiles]);
     347          fExceedPMDrgLimit = ulNumfiles - 1;
     348          break;
     349       }
    334350        ppDItem[ulNumfiles]->hstrTargetName = DrgAddStrHandle(szFile);
    335351        ppDItem[ulNumfiles]->fsControl = DC_PREPARE;
     
    350366          ppDItem[ulNumfiles]->hstrContainerName = DrgAddStrHandle(arcfile);
    351367          ppDItem[ulNumfiles]->hstrSourceName = DrgAddStrHandle(szFile);
    352           if(!ppDItem[ulNumfiles]->hstrSourceName)
    353           Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    354                  "DrgAddStrHandle");
     368          if (!ppDItem[ulNumfiles]->hstrSourceName){
     369            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrType);
     370            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrRMF);
     371            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrContainerName);
     372            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrSourceName);
     373            xfree(ppDItem[ulNumfiles]);
     374            fExceedPMDrgLimit = ulNumfiles - 1;
     375            break;
     376        }
    355377          ppDItem[ulNumfiles]->hstrTargetName = DrgAddStrHandle(szFile);
    356378          ppDItem[ulNumfiles]->fsControl = 0;
     
    359381            ppDItem[ulNumfiles]->fsControl |= DC_REMOVEABLEMEDIA;
    360382          ppDItem[ulNumfiles]->fsSupportedOps = DO_COPYABLE;
    361           if(ulNumfiles >= 1500){
    362               pDInfo = DrgAllocDraginfo(ulNumfiles);
    363               goto Thatsall;
    364           }
     383     //if (ulNumfiles >= 1000){
     384       // pDInfo = DrgAllocDraginfo(ulNumfiles);
     385       // fexceedpmdrglimit = TRUE;
     386       // goto Thatsall;
     387       //   }
    365388          ulNumfiles++;
    366389        }
     
    378401                     MPFROMSHORT(attribute));
    379402  }                                     // while
    380 
     403  if (fExceedPMDrgLimit)
     404    ulNumfiles = ulNumfiles - 1;
    381405  if (ulNumfiles) {
    382406    pDInfo = DrgAllocDraginfo(ulNumfiles);      /* Allocate DRAGINFO */
    383  Thatsall:
    384407    if (pDInfo) {
    385408      if ((arcfile && *arcfile) || (IsFullName(szBuffer) &&
     
    398421                       sizeof(DRAGITEM),        /* Size of DRAGITEM      */
    399422                       Select);         /* Index of DRAGITEM     */
    400         free(ppDItem[Select]);
     423        xfree(ppDItem[Select]);
    401424      }
    402425#ifdef __DEBUG_ALLOC__
    403426      _heap_check();
    404427#endif
    405       free(ppDItem);
     428      xfree(ppDItem);
    406429      ppDItem = NULL;
    407430      DosPostEventSem(CompactSem);
     
    431454                      padiIcon, ulNumIcon, VK_ENDDRAG,  /* End of drag indicator */
    432455                      (PVOID) NULL);    /* Reserved              */
    433       if(hDrop == NULLHANDLE){
    434           rc = DeleteDragitemStrHandles(pDInfo); //
    435       if(!rc)
     456      rc = DeleteDragitemStrHandles(pDInfo);
     457      if (!rc)
    436458          Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    437459                    "DeleteDragistr");
    438460      DrgDeleteDraginfoStrHandles (pDInfo);
    439461      rc = DrgFreeDraginfo(pDInfo);             /* Free DRAGINFO struct  */
    440       if(!rc)
     462      if (!rc)
    441463      Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    442464                "DrgFreeDraginfo");
    443       }
    444465      if (padiIcon && padiIcon != &diFakeIcon)
    445         free(padiIcon);
     466        xfree(padiIcon);
    446467      padiIcon = NULL;
    447468      WinSetWindowPos(hwndCnr, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
     
    450471  }
    451472  if (ppDItem)
    452     free(ppDItem);
     473    xfree(ppDItem);
    453474  if (padiIcon && padiIcon != &diFakeIcon)
    454     free(padiIcon);
     475    xfree(padiIcon);
    455476  MarkAll(hwndCnr, TRUE, FALSE, TRUE);
    456477  return hDrop;
     
    543564        ppDItem[ulNumfiles]->hstrContainerName = DrgAddStrHandle(szBuffer);
    544565        ppDItem[ulNumfiles]->hstrSourceName = DrgAddStrHandle(szFile);
    545         if(!ppDItem[ulNumfiles]->hstrSourceName)
    546             Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    547                   "DrgAddStrHandle");
     566        if (!ppDItem[ulNumfiles]->hstrSourceName){
     567            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrType);
     568            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrRMF);
     569            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrContainerName);
     570            DrgDeleteStrHandle(ppDItem[ulNumfiles]->hstrSourceName);
     571            xfree(ppDItem[ulNumfiles]);
     572            fExceedPMDrgLimit = ulNumfiles - 1;
     573            break;
     574        }
    548575        ppDItem[ulNumfiles]->hstrTargetName = DrgAddStrHandle(szFile);
    549576        ppDItem[ulNumfiles]->fsControl = (isdir) ? DC_CONTAINER : 0;
     
    562589    }
    563590  }                                     // for
    564 
     591  if (fExceedPMDrgLimit)
     592    ulNumfiles = ulNumfiles - 1;
    565593  if (ulNumfiles) {
    566594    pDInfo = DrgAllocDraginfo(ulNumfiles);      /* Allocate DRAGINFO */
     
    597625                      padiIcon, ulNumIcon, VK_ENDDRAG,  /* End of drag indicator */
    598626                      (PVOID) NULL);    /* Reserved              */
    599       if(hDrop == NULLHANDLE){
    600       if(!DeleteDragitemStrHandles(pDInfo)) //)
    601           Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    602                     "DeleteDragistr");
     627      if (!DeleteDragitemStrHandles(pDInfo))
     628        Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
     629                  "DeleteDragistr");
    603630      DrgDeleteDraginfoStrHandles (pDInfo);
    604       if(!DrgFreeDraginfo(pDInfo));             /* Free DRAGINFO struct  */
    605           Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    606                     "DrgFreeDraginfo");
    607       }
    608       free(padiIcon);
     631      if (!DrgFreeDraginfo(pDInfo));            /* Free DRAGINFO struct  */
     632        Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
     633                  "DrgFreeDraginfo");
     634      xfree(padiIcon);
    609635      padiIcon = NULL;
    610636      WinSetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
     
    676702        ditem.hstrContainerName = DrgAddStrHandle(szDir);
    677703        ditem.hstrSourceName = DrgAddStrHandle(szFile);
    678         if(!ditem.hstrSourceName)
     704        if (!ditem.hstrSourceName)
    679705        Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__,
    680706                 "DrgAddStrHandle");
  • trunk/dll/fm3dll.h

    r603 r606  
    4040  18 Mar 07 GKY Add MM import typedefines for fix for files misindentified as multimedia
    4141  30 Mar 07 GKY Defined golbals for removing GetPString for window class names
    42   06 Apr 07 GKY Work around PM DragInfo and DrgFreeDISH limits fexceedpmgrglimit & DeleteDragitemStrHandles
     42  06 Apr 07 GKY Work around PM DragInfo and DrgFreeDISH limits fExceedPMDrgLimit & DeleteDragitemStrHandles
    4343  06 Apr 07 GKY Add some error checking in drag/drop
    4444
     
    13451345  fCustomFileDlg, fSaveMiniCmds, fSaveBigCmds, fNoTileUpdate,
    13461346  fFM2Deletes, fAutoAddAllDirs, fConfirmTarget, fChangeTarget,
    1347   fFirstTime, fShowTarget, fNoFinger, fDrivebarHelp, fCheckMM, fexceedpmdrglimit;
     1347  fFirstTime, fShowTarget, fNoFinger, fDrivebarHelp, fCheckMM;
    13481348DATADEF BOOL detailsladate, detailslatime, detailscrdate, detailscrtime,
    13491349  detailslongname, detailsea, detailssize, detailssubject,
     
    13511351DATADEF PID mypid;
    13521352DATADEF INT driveflags[26], driveserial[26];
    1353 DATADEF ULONG NoBrokenNotify, fwsAnimate, OS2ver[2], DriveLines;
     1353DATADEF ULONG NoBrokenNotify, fwsAnimate, OS2ver[2], DriveLines, fExceedPMDrgLimit;
    13541354DATADEF HINI fmprof;
    13551355DATADEF HELPINIT hini;
  • trunk/dll/ipf/Trouble.ipf

    r604 r606  
    3939we were limited to under 1700. The main problem is PM is happy to over write this buffer.
    4040The result is significant corruption of share memory forcing a reboot. We have limited drag
    41 operations to a maximum of 1500 objects to prevent this problem.
     41operations to maximum number of objects that will fit in the dragitem
     42structure (700- 1700 depending on path length and other factors)
     43to prevent this problem.
  • trunk/dll/ipf/term.ipf

    r604 r606  
    8383the OS/2 Tutorial. Drag and drop is a superior method for manipulating
    8484objects, as opposed to keyboard commands, because you choose both the
    85 command and the target in one operation. We have set a limit of 1500 objects
    86 per drag because drag larger than that can overwrite the draginfo buffer
     85command and the target in one operation. We have limited the number of objects
     86per drag because large drags can overflow the draginfo buffer
    8787causing the corruption of shared memory and forcing a reboot.
    8888:p.
  • trunk/dll/mainwnd.c

    r603 r606  
    12331233      cdi.pDragInfo = mp1;
    12341234      li = DoFileDrop(hwnd, NULL, FALSE, mp1, MPFROMP(&cdi));
    1235       if(fexceedpmdrglimit)
    1236              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    1237                    hwnd,
    1238                    GetPString(IDS_ERRORTEXT),
     1235      if (fExceedPMDrgLimit)
     1236        saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     1237                             hwnd,
     1238                             GetPString(IDS_ERRORTEXT),
    12391239                   GetPString(IDS_EXCEEDPMDRGLMT));
    12401240      if (li) {
     
    18061806                      NULL,
    18071807                      TRUE, MPFROM2SHORT(TREE_CNR, CN_DROP), MPFROMP(&cnd));
    1808       if(fexceedpmdrglimit)
    1809              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    1810                    hwnd,
    1811                    GetPString(IDS_ERRORTEXT),
     1808      if (fExceedPMDrgLimit)
     1809        saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     1810                             hwnd,
     1811                             GetPString(IDS_ERRORTEXT),
    18121812                   GetPString(IDS_EXCEEDPMDRGLMT));
    18131813      if (li) {
  • trunk/dll/makelist.c

    r603 r606  
    7575      FreeList(li->list);
    7676    free(li);
    77     fexceedpmdrglimit = FALSE;
    7877  }
    7978}
  • trunk/dll/select.c

    r603 r606  
    6262      if (!all)
    6363          break;
    64       if(fexceedpmdrglimit && x == 1499){
    65           fexceedpmdrglimit = FALSE;
     64      if(fExceedPMDrgLimit && x == fExceedPMDrgLimit - 1){
     65          fExceedPMDrgLimit = 0;
    6666          break;
    6767      }
     
    569569  BOOL slow = FALSE;
    570570  register INT x, numD, numS;
     571
    571572
    572573  if (!hwndCnrS || !hwndCnrD)
  • trunk/dll/treecnr.c

    r603 r606  
    545545      li = DoFileDrop(dcd->hwndCnr,
    546546                      dcd->directory, FALSE, MPVOID, MPFROMP(&cni));
    547       if(fexceedpmdrglimit)
    548              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    549                    hwnd,
    550                    GetPString(IDS_ERRORTEXT),
     547      if (fExceedPMDrgLimit)
     548        saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     549                             hwnd,
     550                             GetPString(IDS_ERRORTEXT),
    551551                   GetPString(IDS_EXCEEDPMDRGLMT));
    552552      if (li) {
     
    13751375
    13761376          li = DoFileDrop(hwnd, NULL, TRUE, mp1, mp2);
    1377           if(fexceedpmdrglimit)
    1378              saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
    1379                    hwnd,
    1380                    GetPString(IDS_ERRORTEXT),
    1381                    GetPString(IDS_EXCEEDPMDRGLMT));
     1377          if (fExceedPMDrgLimit)
     1378            saymsg(MB_CANCEL | MB_ICONEXCLAMATION,
     1379                                 hwnd,
     1380                                 GetPString(IDS_ERRORTEXT),
     1381                       GetPString(IDS_EXCEEDPMDRGLMT));
    13821382          if (li) {
    13831383            if (!*li->targetpath) {
Note: See TracChangeset for help on using the changeset viewer.