From 9ded6fb581e9aeaeaaed9efd584bb8e1be13f3fe Mon Sep 17 00:00:00 2001 From: Andrii Kurdiumov Date: Sat, 13 Aug 2022 15:59:24 +0600 Subject: [PATCH] Fix drag and drop Fixes #7518 Eventually I should improve #7519 but until then, this is safer approach IMO. cc @Olina-Zhang @dreddy-work @RussKie --- .../src/Interop/WinFormsComWrappers.IDropTargetVtbl.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/System.Windows.Forms.Primitives/src/Interop/WinFormsComWrappers.IDropTargetVtbl.cs b/src/System.Windows.Forms.Primitives/src/Interop/WinFormsComWrappers.IDropTargetVtbl.cs index 40ed7e0944e..d926b7183bf 100644 --- a/src/System.Windows.Forms.Primitives/src/Interop/WinFormsComWrappers.IDropTargetVtbl.cs +++ b/src/System.Windows.Forms.Primitives/src/Interop/WinFormsComWrappers.IDropTargetVtbl.cs @@ -33,8 +33,7 @@ private static int DragEnter(IntPtr thisPtr, IntPtr pDataObj, uint grfKeyState, try { Ole32.IDropTarget instance = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr); - var dataObject = WinFormsComWrappers.Instance.GetOrCreateObjectForComInstance(pDataObj, CreateObjectFlags.Unwrap); - return (int)instance.DragEnter(dataObject, grfKeyState, pt, ref *pdwEffect); + return (int)instance.DragEnter(Marshal.GetObjectForIUnknown(pDataObj), grfKeyState, pt, ref *pdwEffect); } catch (Exception ex) { @@ -79,8 +78,7 @@ private static int Drop(IntPtr thisPtr, IntPtr pDataObj, uint grfKeyState, Point try { Ole32.IDropTarget instance = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr); - var dataObject = WinFormsComWrappers.Instance.GetOrCreateObjectForComInstance(pDataObj, CreateObjectFlags.Unwrap); - return (int)instance.Drop(dataObject, grfKeyState, pt, ref *pdwEffect); + return (int)instance.Drop(Marshal.GetObjectForIUnknown(pDataObj), grfKeyState, pt, ref *pdwEffect); } catch (Exception ex) {