[ros-diffs] [fireball] 41145: Mikhail Denisenko <denisenkom at gmail.com> - RegisterDragDrop should be coupled with a RevokeDragDrop, so add that. - Remove _pDropTarget from class members, it's a var local to DesktopShellView::InitDragDrop() method. See issue #2012 for more details.

fireball at svn.reactos.org fireball at svn.reactos.org
Wed May 27 19:35:03 CEST 2009


Author: fireball
Date: Wed May 27 21:35:02 2009
New Revision: 41145

URL: http://svn.reactos.org/svn/reactos?rev=41145&view=rev
Log:
Mikhail Denisenko <denisenkom at gmail.com>
- RegisterDragDrop should be coupled with a RevokeDragDrop, so add that.
- Remove _pDropTarget from class members, it's a var local to DesktopShellView::InitDragDrop() method.
See issue #2012 for more details.

Modified:
    trunk/reactos/base/shell/explorer/desktop/desktop.cpp
    trunk/reactos/base/shell/explorer/desktop/desktop.h

Modified: trunk/reactos/base/shell/explorer/desktop/desktop.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/desktop/desktop.cpp?rev=41145&r1=41144&r2=41145&view=diff
==============================================================================
--- trunk/reactos/base/shell/explorer/desktop/desktop.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/desktop/desktop.cpp [iso-8859-1] Wed May 27 21:35:02 2009
@@ -506,24 +506,29 @@
 	InitDragDrop();
 }
 
+
+DesktopShellView::~DesktopShellView()
+{
+	if (FAILED(RevokeDragDrop(_hwnd)))
+		assert(0);
+}
+
+
 bool DesktopShellView::InitDragDrop()
 {
 	CONTEXT("DesktopShellView::InitDragDrop()");
 
-	_pDropTarget = new DesktopDropTarget(_hwnd);
-
-	if (!_pDropTarget)
+	DesktopDropTarget * pDropTarget = new DesktopDropTarget(_hwnd);
+
+	if (!pDropTarget)
 		return false;
 
-	_pDropTarget->AddRef();
-
-	if (FAILED(RegisterDragDrop(_hwnd, _pDropTarget))) {
-		_pDropTarget->Release();
-		_pDropTarget = NULL;
+	pDropTarget->AddRef();
+
+	if (FAILED(RegisterDragDrop(_hwnd, pDropTarget))) {
+		pDropTarget->Release();
 		return false;
 	}
-	else
-		_pDropTarget->Release();
 
 	FORMATETC ftetc;
 
@@ -532,7 +537,8 @@
 	ftetc.tymed = TYMED_HGLOBAL;
 	ftetc.cfFormat = CF_HDROP;
 
-	_pDropTarget->AddSuportedFormat(ftetc);
+	pDropTarget->AddSuportedFormat(ftetc);
+	pDropTarget->Release();
 
 	return true;
 }

Modified: trunk/reactos/base/shell/explorer/desktop/desktop.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/desktop/desktop.h?rev=41145&r1=41144&r2=41145&view=diff
==============================================================================
--- trunk/reactos/base/shell/explorer/desktop/desktop.h [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/desktop/desktop.h [iso-8859-1] Wed May 27 21:35:02 2009
@@ -170,6 +170,7 @@
 	typedef ExtContextMenuHandlerT<SubclassedWindow> super;
 
 	DesktopShellView(HWND hwnd, IShellView* pShellView);
+	~DesktopShellView();
 
 	bool	InitDragDrop();
 
@@ -186,7 +187,6 @@
 
 	void	refresh();
 
-	DesktopDropTarget* _pDropTarget;
 	HWND	_hwndListView;
 	int		_icon_algo;
 };



More information about the Ros-diffs mailing list