Commit in reactos/lib/shell32 on MAIN
Makefile.in+2-21.5 -> 1.6
Makefile.ros-template+2-21.3 -> 1.4
clipboard.c-371.4 -> 1.5
shell32_main.h-141.19 -> 1.20
shellole.c+8-311.5 -> 1.6
shellord.c+3-61.4 -> 1.5
shlview.c+7-141.5 -> 1.6
shv_item_cmenu.c+7-491.2 -> 1.3
+29-155
8 modified files
Robert Shearman <R.J.Shearman@warwick.ac.uk>
- Make ole32 a delay-load import of shell32.
(except that the ReactOS build system doesn't handle delay-load imports
yet, so make it a normal import)

reactos/lib/shell32
Makefile.in 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- Makefile.in	27 Mar 2004 09:23:05 -0000	1.5
+++ Makefile.in	12 Jul 2004 22:03:09 -0000	1.6
@@ -4,8 +4,8 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = shell32.dll
-# fixme: avoid ole32.dll import
-IMPORTS   = ole32 shlwapi comctl32 user32 gdi32 advapi32 kernel32 ntdll
+IMPORTS   = shlwapi comctl32 user32 gdi32 advapi32 kernel32
+DELAYIMPORTS = ole32
 ALTNAMES  = shell.dll
 EXTRALIBS = $(LIBUUID) $(LIBUNICODE)
 

reactos/lib/shell32
Makefile.ros-template 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- Makefile.ros-template	29 May 2004 21:24:46 -0000	1.3
+++ Makefile.ros-template	12 Jul 2004 22:03:09 -0000	1.4
@@ -1,4 +1,4 @@
-# $Id: Makefile.ros-template,v 1.3 2004/05/29 21:24:46 hbirr Exp $
+# $Id: Makefile.ros-template,v 1.4 2004/07/12 22:03:09 gvg Exp $
 
 TARGET_NAME = shell32
 
@@ -6,7 +6,7 @@
 
 TARGET_CFLAGS = @EXTRADEFS@ -D__REACTOS__
 
-TARGET_SDKLIBS = libwine.a @IMPORTS@ wine_uuid.a
+TARGET_SDKLIBS = libwine.a @IMPORTS@ ole32.a wine_uuid.a ntdll.a
 
 TARGET_BASE = $(TARGET_BASE_LIB_SHELL32)
 

reactos/lib/shell32
clipboard.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- clipboard.c	9 Jan 2004 00:09:29 -0000	1.4
+++ clipboard.c	12 Jul 2004 22:03:09 -0000	1.5
@@ -52,43 +52,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
-HRESULT (WINAPI *pOleInitialize)(LPVOID reserved);
-void    (WINAPI *pOleUninitialize)(void);
-HRESULT (WINAPI *pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget);
-HRESULT (WINAPI *pRevokeDragDrop)(HWND hwnd);
-HRESULT (WINAPI *pDoDragDrop)(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*);
-void 	(WINAPI *pReleaseStgMedium)(STGMEDIUM* pmedium);
-HRESULT (WINAPI *pOleSetClipboard)(IDataObject* pDataObj);
-HRESULT (WINAPI *pOleGetClipboard)(IDataObject** ppDataObj);
-
-/**************************************************************************
- * GetShellOle
- *
- * make sure OLE32.DLL is loaded
- */
-BOOL GetShellOle(void)
-{
-    static HANDLE hOle32 = NULL;
-    if(!hOle32)
-    {
-        hOle32 = LoadLibraryA("ole32.dll");
-        if(hOle32)
-        {
-            pOleInitialize=(void*)GetProcAddress(hOle32,"OleInitialize");
-            pOleUninitialize=(void*)GetProcAddress(hOle32,"OleUninitialize");
-            pRegisterDragDrop=(void*)GetProcAddress(hOle32,"RegisterDragDrop");
-            pRevokeDragDrop=(void*)GetProcAddress(hOle32,"RevokeDragDrop");
-            pDoDragDrop=(void*)GetProcAddress(hOle32,"DoDragDrop");
-            pReleaseStgMedium=(void*)GetProcAddress(hOle32,"ReleaseStgMedium");
-            pOleSetClipboard=(void*)GetProcAddress(hOle32,"OleSetClipboard");
-            pOleGetClipboard=(void*)GetProcAddress(hOle32,"OleGetClipboard");
-
-            pOleInitialize(NULL);
-        }
-    }
-    return TRUE;
-}
-
 /**************************************************************************
  * RenderHDROP
  *

reactos/lib/shell32
shell32_main.h 1.19 -> 1.20
diff -u -r1.19 -r1.20
--- shell32_main.h	12 Jul 2004 20:32:16 -0000	1.19
+++ shell32_main.h	12 Jul 2004 22:03:09 -0000	1.20
@@ -130,20 +130,6 @@
 BOOL SYSTRAY_Init(void);
 #endif
 
-/* OLE32 */
-extern HINSTANCE hShellOle32;
-
-extern HRESULT (WINAPI *pOleInitialize)(LPVOID reserved);
-extern void    (WINAPI *pOleUninitialize)(void);
-extern HRESULT (WINAPI *pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget);
-extern HRESULT (WINAPI *pRevokeDragDrop)(HWND hwnd);
-extern HRESULT (WINAPI *pDoDragDrop)(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*);
-extern void    (WINAPI *pReleaseStgMedium)(STGMEDIUM* pmedium);
-extern HRESULT (WINAPI *pOleSetClipboard)(IDataObject* pDataObj);
-extern HRESULT (WINAPI *pOleGetClipboard)(IDataObject** ppDataObj);
-extern HRESULT (WINAPI *pCoCreateInstance)(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv);
-
-BOOL GetShellOle(void);
 
 HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
 HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);

reactos/lib/shell32
shellole.c 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- shellole.c	12 Jul 2004 20:32:16 -0000	1.5
+++ shellole.c	12 Jul 2004 22:03:09 -0000	1.6
@@ -72,30 +72,6 @@
 };
 
 /*************************************************************************
- * __CoCreateInstance [internal]
- *
- * NOTES
- *   wraper for late bound call to OLE32.DLL
- *
- */
-HRESULT (WINAPI *pCoCreateInstance)(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv) = NULL;
-
-void * __GetExternalFunc(HMODULE * phModule, LPCWSTR szModuleName, LPCSTR szProcName)
-{
-	if (!*phModule) *phModule = GetModuleHandleW(szModuleName);
-	if (!*phModule) *phModule = LoadLibraryW(szModuleName);
-	if (*phModule) return GetProcAddress(*phModule, szProcName);
-	return NULL;
-}
-
-HRESULT  __CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
-{
-	if(!pCoCreateInstance) pCoCreateInstance = __GetExternalFunc(&hShellOle32, sOLE32, "CoCreateInstance");
-	if(!pCoCreateInstance) return E_FAIL;
-	return pCoCreateInstance(rclsid, pUnkOuter, dwClsContext, iid, ppv);
-}
-
-/*************************************************************************
  * SHCoCreateInstance [SHELL32.102]
  *
  * NOTES
@@ -211,7 +187,7 @@
 	} else {
 
 	    /* load a external dll in the usual way */
-	    hres = __CoCreateInstance(myclsid, pUnkOuter, CLSCTX_INPROC_SERVER, refiid, ppv);
+	    hres = CoCreateInstance(myclsid, pUnkOuter, CLSCTX_INPROC_SERVER, refiid, ppv);
 	    goto end;
 	}
 
@@ -437,17 +413,18 @@
  */
 HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
 {
-	HRESULT (WINAPI *pCoGetMalloc)(DWORD,LPMALLOC *);
-	HMODULE hOle32;
-
 	TRACE("(%p)\n", lpmal);
 
 	if (!ShellTaskAllocator)
 	{
-		hOle32 = GetModuleHandleA("OLE32.DLL");
+		HMODULE hOle32 = GetModuleHandleA("OLE32.DLL");
+		/* this is very suspect. we should not being using a different
+		 * allocator from deallocator based on something undeterministic
+		 * like whether ole32 is loaded. as it happens currently, they
+		 * both map to the same allocator deep down, but this could
+		 * change in the future. */
 		if(hOle32) {
-			pCoGetMalloc = (void*) GetProcAddress(hOle32, "CoGetMalloc");
-			if (pCoGetMalloc) pCoGetMalloc(MEMCTX_TASK, &ShellTaskAllocator);
+			CoGetMalloc(MEMCTX_TASK, &ShellTaskAllocator);
 			TRACE("got ole32 IMalloc\n");
 		}
 		if(!ShellTaskAllocator) {

reactos/lib/shell32
shellord.c 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- shellord.c	29 Jun 2004 13:40:40 -0000	1.4
+++ shellord.c	12 Jul 2004 22:03:09 -0000	1.5
@@ -426,8 +426,7 @@
 	LPDROPTARGET pDropTarget)
 {
 	FIXME("(%p,%p):stub.\n", hWnd, pDropTarget);
-	if (GetShellOle()) return pRegisterDragDrop(hWnd, pDropTarget);
-        return 0;
+	return RegisterDragDrop(hWnd, pDropTarget);
 }
 
 /*************************************************************************
@@ -439,8 +438,7 @@
 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd)
 {
     FIXME("(%p):stub.\n",hWnd);
-    if (GetShellOle()) return pRevokeDragDrop(hWnd);
-    return 0;
+    return RevokeDragDrop(hWnd);
 }
 
 /*************************************************************************
@@ -458,8 +456,7 @@
 {
     FIXME("(%p %p %p 0x%08lx %p):stub.\n",
     hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
-	if (GetShellOle()) return pDoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
-        return 0;
+	return DoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
 }
 
 /*************************************************************************

reactos/lib/shell32
shlview.c 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- shlview.c	13 May 2004 20:28:58 -0000	1.5
+++ shlview.c	12 Jul 2004 22:03:09 -0000	1.6
@@ -656,13 +656,10 @@
 	  }
 	}
 
-	if(GetShellOle() && pRegisterDragDrop)
+	if (SUCCEEDED(IShellFolder_CreateViewObject(This->pSFParent, This->hWnd, &IID_IDropTarget, (LPVOID*)&pdt)))
 	{
-	  if (SUCCEEDED(IShellFolder_CreateViewObject(This->pSFParent, This->hWnd, &IID_IDropTarget, (LPVOID*)&pdt)))
-	  {
-	    pRegisterDragDrop(This->hWnd, pdt);
+	    RegisterDragDrop(This->hWnd, pdt);
 	    IDropTarget_Release(pdt);
-	  }
 	}
 
 	/* register for receiving notifications */
@@ -1343,10 +1340,8 @@
 	      DWORD dwAttributes = SFGAO_CANLINK;
 	      DWORD dwEffect = DROPEFFECT_COPY | DROPEFFECT_MOVE;
 
-	      if(GetShellOle() && pDoDragDrop)
+	      if (SUCCEEDED(IShellFolder_GetUIObjectOf(This->pSFParent, This->hWnd, This->cidl, (LPCITEMIDLIST*)This->apidl, &IID_IDataObject,0,(LPVOID *)&pda)))
 	      {
-	        if (SUCCEEDED(IShellFolder_GetUIObjectOf(This->pSFParent, This->hWnd, This->cidl, (LPCITEMIDLIST*)This->apidl, &IID_IDataObject,0,(LPVOID *)&pda)))
-	        {
 	          IDropSource * pds = (IDropSource*)&(This->lpvtblDropSource);	/* own DropSource interface */
 
 	  	  if (SUCCEEDED(IShellFolder_GetAttributesOf(This->pSFParent, This->cidl, (LPCITEMIDLIST*)This->apidl, &dwAttributes)))
@@ -1360,10 +1355,9 @@
 	          if (pds)
 	          {
 	            DWORD dwEffect;
-		    pDoDragDrop(pda, pds, dwEffect, &dwEffect);
+		    DoDragDrop(pda, pds, dwEffect, &dwEffect);
 		  }
 	          IDataObject_Release(pda);
-	        }
 	      }
 	    }
 	    break;
@@ -1568,10 +1562,9 @@
 
 	  case WM_GETDLGCODE:   return SendMessageA(pThis->hWndList,uMessage,0,0);
 
-	  case WM_DESTROY:	if(GetShellOle() && pRevokeDragDrop)
-				{
-	  			  pRevokeDragDrop(pThis->hWnd);
-				}
+
+	  case WM_DESTROY:	
+	  			RevokeDragDrop(pThis->hWnd);
 				SHChangeNotifyDeregister(pThis->hNotify);
 	                        break;
 

reactos/lib/shell32
shv_item_cmenu.c 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- shv_item_cmenu.c	6 Jan 2004 21:32:30 -0000	1.2
+++ shv_item_cmenu.c	12 Jul 2004 22:03:09 -0000	1.3
@@ -366,62 +366,20 @@
 
 	TRACE("(%p)->(wnd=%p,bCut=0x%08x)\n",This, hwnd, bCut);
 
-	if(GetShellOle())
+	/* get the active IShellView */
+	if ((lpSB = (LPSHELLBROWSER)SendMessageA(hwnd, CWM_GETISHELLBROWSER,0,0)))
 	{
-	  /* get the active IShellView */
-	  if ((lpSB = (LPSHELLBROWSER)SendMessageA(hwnd, CWM_GETISHELLBROWSER,0,0)))
+	  if (SUCCEEDED(IShellBrowser_QueryActiveShellView(lpSB, &lpSV)))
 	  {
-	    if (SUCCEEDED(IShellBrowser_QueryActiveShellView(lpSB, &lpSV)))
+	    if (SUCCEEDED(IShellView_GetItemObject(lpSV, SVGIO_SELECTION, &IID_IDataObject, (LPVOID*)&lpDo)))
 	    {
-	      if (SUCCEEDED(IShellView_GetItemObject(lpSV, SVGIO_SELECTION, &IID_IDataObject, (LPVOID*)&lpDo)))
-	      {
-	        pOleSetClipboard(lpDo);
-	        IDataObject_Release(lpDo);
-	      }
-	      IShellView_Release(lpSV);
+	      OleSetClipboard(lpDo);
+	      IDataObject_Release(lpDo);
 	    }
+	    IShellView_Release(lpSV);
 	  }
 	}
 	return TRUE;
-#if 0
-/*
-  the following code does the copy operation witout ole32.dll
-  we might need this possibility too (js)
-*/
-	BOOL bSuccess = FALSE;
-
-	TRACE("(%p)\n", iface);
-
-	if(OpenClipboard(NULL))
-	{
-	  if(EmptyClipboard())
-	  {
-	    IPersistFolder2 * ppf2;
-	    IShellFolder_QueryInterface(This->pSFParent, &IID_IPersistFolder2, (LPVOID*)&ppf2);
-	    if (ppf2)
-	    {
-	      LPITEMIDLIST pidl;
-	      IPersistFolder2_GetCurFolder(ppf2, &pidl);
-	      if(pidl)
-	      {
-	        HGLOBAL hMem;
-
-		hMem = RenderHDROP(pidl, This->apidl, This->cidl);
-
-		if(SetClipboardData(CF_HDROP, hMem))
-		{
-		  bSuccess = TRUE;
-		}
-	        SHFree(pidl);
-	      }
-	      IPersistFolder2_Release(ppf2);
-	    }
-
-	  }
-	  CloseClipboard();
-	}
- 	return bSuccess;
-#endif
 }
 /**************************************************************************
 * ISvItemCm_fnInvokeCommand()
CVSspam 0.2.8