Changeset 618 for trunk/dll/collect.c
- Timestamp:
- Apr 20, 2007, 9:19:03 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/collect.c
r606 r618 33 33 06 Apr 07 GKY Work around PM DragInfo and DrgFreeDISH limits 34 34 06 Apr 07 GKY Add some error checking in drag/drop 35 19 Apr 07 SHL Use FreeDragInfoData. Add more drag/drop error checks. 35 36 36 37 ***********************************************************************/ … … 459 460 cni.pDragInfo = (PDRAGINFO) mp1; 460 461 li = DoFileDrop(dcd->hwndCnr, NULL, FALSE, MPVOID, MPFROMP(&cni)); 461 if ( fExceedPMDrgLimit)462 463 464 465 462 if (NumItemsToUnhilite) 463 saymsg(MB_CANCEL | MB_ICONEXCLAMATION, 464 hwnd, 465 GetPString(IDS_ERRORTEXT), 466 GetPString(IDS_EXCEEDPMDRGLMT)); 466 467 if (li) { 467 468 li->type = (fDefaultDeletePerm) ? IDM_PERMDELETE : IDM_DELETE; … … 2113 2114 ULONG numitems; 2114 2115 USHORT usOperation; 2115 2116 APIRET rc; 2116 2117 2117 2118 pci = (PCNRITEM) ((PCNRDRAGINFO) mp2)->pRecord; … … 2119 2120 if (!DrgAccessDraginfo(pDInfo)) { 2120 2121 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, 2121 " %s", GetPString(IDS_DROPERRORTEXT));2122 break;2122 "DrgAccessDraginfo"); 2123 return 0; 2123 2124 } 2124 2125 numitems = DrgQueryDragitemCount(pDInfo); 2125 2126 usOperation = pDInfo->usOperation; 2126 rc = DeleteDragitemStrHandles(pDInfo); // 2127 if(!rc) 2128 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 2129 "DeleteDragitemStrHandles"); 2130 DrgDeleteDraginfoStrHandles (pDInfo); 2131 rc = DrgFreeDraginfo(pDInfo); 2132 if(!rc) 2133 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 2134 "DrgFreeDraginfo"); 2127 FreeDragInfoData(hwnd, pDInfo); 2135 2128 saymsg(MB_ENTER | MB_ICONASTERISK, 2136 2129 hwnd, … … 2154 2147 PDRAGINFO pDInfo; 2155 2148 2149 // fixme to know why needed 2156 2150 pDInfo = ((PCNRDRAGINFO) mp2)->pDragInfo; 2157 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO 2158 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO 2151 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO */ 2152 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2159 2153 } 2160 2154 return 0; … … 2163 2157 case CN_DRAGOVER: 2164 2158 if (mp2) { 2165 PDRAGITEM pDItem; /* Pointer to DRAGITEM 2166 PDRAGINFO pDInfo; /* Pointer to DRAGINFO 2159 PDRAGITEM pDItem; /* Pointer to DRAGITEM */ 2160 PDRAGINFO pDInfo; /* Pointer to DRAGINFO */ 2167 2161 PCNRITEM pci; 2168 2162 USHORT uso; 2169 2163 2170 2164 pci = (PCNRITEM) ((PCNRDRAGINFO) mp2)->pRecord; 2171 //if(SHORT1FROMMP(mp1) == CN_DRAGAFTER)2172 // 2165 // if(SHORT1FROMMP(mp1) == CN_DRAGAFTER) 2166 // pci = NULL; 2173 2167 pDInfo = ((PCNRDRAGINFO) mp2)->pDragInfo; 2174 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO */ 2168 if (!DrgAccessDraginfo(pDInfo)) { 2169 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, 2170 "DrgAccessDraginfo"); 2171 return (MRFROM2SHORT(DOR_NODROP, 0)); /* Drop not valid */ 2172 } 2175 2173 if (pci) { 2176 2174 if (pci->rc.flRecordAttr & CRA_SOURCE) { … … 2205 2203 } 2206 2204 } 2207 pDItem = DrgQueryDragitemPtr(pDInfo, /* Access DRAGITEM 2208 0); /* Index to DRAGITEM 2205 pDItem = DrgQueryDragitemPtr(pDInfo, /* Access DRAGITEM */ 2206 0); /* Index to DRAGITEM */ 2209 2207 if (DrgVerifyRMF(pDItem, /* Check valid rendering */ 2210 DRM_OS2FILE, /* mechanisms and data 2208 DRM_OS2FILE, /* mechanisms and data */ 2211 2209 NULL)) { 2212 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO 2210 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2213 2211 if (pci) { 2214 2212 if (driveflags[toupper(*pci->szFileName) - 'A'] & … … 2217 2215 if (toupper(*pci->szFileName) < 'C') 2218 2216 return MRFROM2SHORT(DOR_DROP, DO_COPY); 2219 return MRFROM2SHORT(DOR_DROP, /* Return okay to drop 2217 return MRFROM2SHORT(DOR_DROP, /* Return okay to drop */ 2220 2218 ((fCopyDefault) ? DO_COPY : DO_MOVE)); 2221 2219 } 2222 2220 else 2223 return MRFROM2SHORT(DOR_DROP, /* Return okay to drop 2221 return MRFROM2SHORT(DOR_DROP, /* Return okay to drop */ 2224 2222 DO_COPY); 2225 2223 } 2226 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO 2227 } 2228 return (MRFROM2SHORT(DOR_NODROP, 0)); /* Drop not valid 2224 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2225 } 2226 return (MRFROM2SHORT(DOR_NODROP, 0)); /* Drop not valid */ 2229 2227 2230 2228 case CN_INITDRAG: … … 2245 2243 GetPString(IDS_DRAGFILEOBJTEXT)); 2246 2244 if (DoFileDrag(hwnd, dcd->hwndObject, mp2, NULL, NULL, TRUE)) { 2247 if ((fUnHilite && wasemphasized) || fExceedPMDrgLimit)2245 if ((fUnHilite && wasemphasized) || NumItemsToUnhilite) 2248 2246 UnHilite(hwnd, TRUE, &dcd->lastselection); 2249 2247 } … … 2260 2258 ULONG action = UM_ACTION; 2261 2259 2262 2263 if (fExceedPMDrgLimit)2264 2265 2266 2267 2260 li = DoFileDrop(hwnd, NULL, TRUE, mp1, mp2); 2261 if (NumItemsToUnhilite) 2262 saymsg(MB_CANCEL | MB_ICONEXCLAMATION, 2263 hwnd, 2264 GetPString(IDS_ERRORTEXT), 2265 GetPString(IDS_EXCEEDPMDRGLMT)); 2268 2266 if (li) { 2269 2267 if (!*li->targetpath) { … … 2285 2283 li->type = WinDlgBox(HWND_DESKTOP, dcd->hwndParent, 2286 2284 DropListProc, FM3ModHandle, 2287 2288 2289 2290 2291 2285 DND_FRAME, MPFROMP(&cl)); 2286 if (li->type == DID_ERROR) 2287 Win_Error(DND_FRAME, HWND_DESKTOP, pszSrcFile, __LINE__, 2288 "Drag & Drop Dialog"); 2289 if (!li->type) { 2292 2290 FreeListInfo(li); 2293 2291 return 0; 2294 2292 } 2295 2293 li->list = cl.list; 2296 2294 if (!li->list || !li->list[0]) { 2297 2295 FreeListInfo(li); 2298 2296 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.