shell32/shellview: Don't crash on ::DragLeave called without droptraget.
This commit is contained in:
parent
78c909fb08
commit
345ab7d591
|
@ -2407,15 +2407,23 @@ static HRESULT WINAPI ISVDropTarget_DragOver(IDropTarget *iface, DWORD grfKeySta
|
|||
return drag_notify_subitem(This, grfKeyState, pt, pdwEffect);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ISVDropTarget_DragLeave(IDropTarget *iface) {
|
||||
static HRESULT WINAPI ISVDropTarget_DragLeave(IDropTarget *iface)
|
||||
{
|
||||
IShellViewImpl *This = impl_from_IDropTarget(iface);
|
||||
|
||||
if (This->pCurDropTarget)
|
||||
{
|
||||
IDropTarget_DragLeave(This->pCurDropTarget);
|
||||
|
||||
IDropTarget_Release(This->pCurDropTarget);
|
||||
This->pCurDropTarget = NULL;
|
||||
}
|
||||
|
||||
if (This->pCurDataObject)
|
||||
{
|
||||
IDataObject_Release(This->pCurDataObject);
|
||||
This->pCurDataObject = NULL;
|
||||
This->pCurDropTarget = NULL;
|
||||
}
|
||||
|
||||
This->iDragOverItem = 0;
|
||||
|
||||
return S_OK;
|
||||
|
|
|
@ -318,6 +318,7 @@ static void test_IShellView_CreateViewWindow(void)
|
|||
IShellFolder *desktop;
|
||||
FOLDERSETTINGS settings;
|
||||
IShellView *view;
|
||||
IDropTarget *dt;
|
||||
HWND hwnd_view;
|
||||
HRESULT hr;
|
||||
RECT r = {0};
|
||||
|
@ -346,6 +347,13 @@ if (0)
|
|||
ok(hr == E_UNEXPECTED, "got (0x%08x)\n", hr);
|
||||
ok(hwnd_view == 0, "got %p\n", hwnd_view);
|
||||
|
||||
/* ::DragLeave without drag operation */
|
||||
hr = IShellView_QueryInterface(view, &IID_IDropTarget, (void**)&dt);
|
||||
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||
hr = IDropTarget_DragLeave(dt);
|
||||
ok(hr == S_OK, "got (0x%08x)\n", hr);
|
||||
IDropTarget_Release(dt);
|
||||
|
||||
IShellView_Release(view);
|
||||
IShellFolder_Release(desktop);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue