Changeset 618 for trunk/dll/avl.c
- Timestamp:
- Apr 20, 2007, 9:19:03 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/avl.c
r603 r618 26 26 01 Nov 06 SHL Turn off leftover debug code 27 27 06 Apr 07 GKY Work around PM DragInfo and DrgFreeDISH limit 28 19 Apr 07 SHL Use FreeDragInfoData 29 19 Apr 07 SHL Add more drag/drop error checking 28 30 29 31 ***********************************************************************/ … … 548 550 PFNWP pfnOldProc = (PFNWP) WinQueryWindowPtr(hwnd, QWL_USER); 549 551 550 PDRAGITEM p ditem;551 PDRAGINFO p dinfo;552 PDRAGITEM pDItem; 553 PDRAGINFO pDInfo; 552 554 BOOL ok; 553 555 … … 568 570 569 571 if (cur_ndx != LIT_NONE) { 570 p dinfo = DrgAllocDraginfo(1);571 if (p dinfo) {572 p dinfo->usOperation = DO_DEFAULT;573 p dinfo->hwndSource = hwnd;572 pDInfo = DrgAllocDraginfo(1); 573 if (pDInfo) { 574 pDInfo->usOperation = DO_DEFAULT; 575 pDInfo->hwndSource = hwnd; 574 576 575 577 memset(&ditem, 0, sizeof(DRAGITEM)); … … 593 595 dimage.cxOffset = -16; 594 596 dimage.cyOffset = 0; 595 DrgSetDragitem(p dinfo, &ditem, sizeof(DRAGITEM), 0); /* Index of DRAGITEM */596 hwndDrop = DrgDrag(hwnd, p dinfo, &dimage, 1, /* One DRAGIMAGE */597 DrgSetDragitem(pDInfo, &ditem, sizeof(DRAGITEM), 0); /* Index of DRAGITEM */ 598 hwndDrop = DrgDrag(hwnd, pDInfo, &dimage, 1, /* One DRAGIMAGE */ 597 599 VK_ENDDRAG, NULL); 598 600 if (!hwndDrop) 599 601 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "DrgDrag"); 600 602 601 DrgFreeDraginfo(p dinfo);603 DrgFreeDraginfo(pDInfo); 602 604 // WinSetWindowPos(hwnd,HWND_TOP,0,0,0,0,SWP_ACTIVATE); 603 605 } … … 623 625 // fprintf(stderr, "DRAGOVER posted 0x%x WM_BUTTON1CLICK x y %d %d\n", hwnd, ptl2.x, ptl2.y); 624 626 } 625 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 626 if (pdinfo) { 627 DrgAccessDraginfo(pdinfo); 628 pditem = DrgQueryDragitemPtr(pdinfo, 0); 629 /* Check valid rendering mechanisms and data format */ 630 ok = DrgVerifyRMF(pditem, DRM_LBOX, NULL); 631 DrgFreeDraginfo(pdinfo); 632 if (ok) { 633 } 634 } 635 return ok ? MRFROM2SHORT(DOR_DROP, DO_MOVE) : MRFROM2SHORT(DOR_NEVERDROP, 636 0); 627 pDInfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 628 if (pDInfo) { 629 if (!DrgAccessDraginfo(pDInfo)) { 630 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 631 "DrgAccessDraginfo"); 632 } 633 else { 634 pDItem = DrgQueryDragitemPtr(pDInfo, 0); 635 /* Check valid rendering mechanisms and data format */ 636 ok = DrgVerifyRMF(pDItem, DRM_LBOX, NULL); 637 DrgFreeDraginfo(pDInfo); 638 } 639 } 640 return ok ? MRFROM2SHORT(DOR_DROP, DO_MOVE) : 641 MRFROM2SHORT(DOR_NEVERDROP, 0); 637 642 638 643 case DM_DRAGLEAVE: … … 652 657 case DM_DROP: 653 658 ok = FALSE; 654 // fprintf(stderr, "DROP\n");655 fflush(stderr);656 659 if (emphasized) { 657 660 emphasized = FALSE; 658 661 // DrawTargetEmphasis(hwnd, emphasized); 659 662 } 660 pdinfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 661 if (pdinfo) { 662 DrgAccessDraginfo(pdinfo); 663 pditem = DrgQueryDragitemPtr(pdinfo, 0); 664 if (!pditem) 665 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "DM_DROP"); 666 /* Check valid rendering mechanisms and data */ 667 ok = DrgVerifyRMF(pditem, DRM_LBOX, NULL) 668 && ~pditem->fsControl & DC_PREPARE; 669 if (ok) { 670 // ret = FullDrgName(pditem,buffer,buflen); 671 /* note: targetfail is returned to source for all items */ 672 DrgSendTransferMsg(pdinfo->hwndSource, DM_ENDCONVERSATION, 673 MPFROMLONG(pditem->ulItemID), 674 MPFROMLONG(DMFL_TARGETSUCCESSFUL)); 675 } 676 DeleteDragitemStrHandles(pdinfo); // 677 DrgDeleteDraginfoStrHandles(pdinfo); 678 DrgFreeDraginfo(pdinfo); 663 pDInfo = (PDRAGINFO) mp1; /* Get DRAGINFO pointer */ 664 if (pDInfo) { 665 if (!DrgAccessDraginfo(pDInfo)) { 666 Win_Error(HWND_DESKTOP, HWND_DESKTOP, pszSrcFile, __LINE__, 667 "DrgAccessDraginfo"); 668 } 669 else { 670 pDItem = DrgQueryDragitemPtr(pDInfo, 0); 671 if (!pDItem) 672 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "DM_DROP"); 673 /* Check valid rendering mechanisms and data */ 674 ok = DrgVerifyRMF(pDItem, DRM_LBOX, NULL) 675 && ~pDItem->fsControl & DC_PREPARE; 676 if (ok) { 677 // ret = FullDrgName(pDItem,buffer,buflen); 678 /* note: targetfail is returned to source for all items */ 679 DrgSendTransferMsg(pDInfo->hwndSource, DM_ENDCONVERSATION, 680 MPFROMLONG(pDItem->ulItemID), 681 MPFROMLONG(DMFL_TARGETSUCCESSFUL)); 682 } 683 FreeDragInfoData(hwnd, pDInfo); 684 } 679 685 } 680 686 return 0; 681 } 687 } // switch 682 688 return pfnOldProc ? pfnOldProc(hwnd, msg, mp1, mp2) : 683 689 WinDefWindowProc(hwnd, msg, mp1, mp2);
Note:
See TracChangeset
for help on using the changeset viewer.