--- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -1761,10 +1761,11 @@ void QWidgetPrivate::unregisterOleDnd(QWidget *widget, QOleDropTarget *dropTarget) { - dropTarget->releaseQt(); - dropTarget->Release(); Q_ASSERT(widget->testAttribute(Qt::WA_WState_Created)); if (!widget->internalWinId()) { + dropTarget->releaseQt(); + dropTarget->Release(); + QWidget *nativeParent = widget->nativeParentWidget(); Q_ASSERT(nativeParent); QWExtra *nativeExtra = nativeParent->d_func()->extra; @@ -1783,6 +1784,8 @@ #ifndef Q_OS_WINCE CoLockObjectExternal(dropTarget, false, true); #endif + dropTarget->releaseQt(); + dropTarget->Release(); RevokeDragDrop(widget->internalWinId()); } }