[SHELL32] Don't show error when closing disk prop sheet (#144)
[reactos.git] / dll / win32 / shell32 / dialogs / drive.cpp
index a5919f0..3afbe80 100644 (file)
@@ -2,6 +2,7 @@
  *                 Shell Library Functions
  *
  * Copyright 2005 Johannes Anderwald
+ * Copyright 2017 Katayama Hirofumi MZ
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -127,7 +128,7 @@ typedef struct _DRIVE_PROP_PAGE
     UINT DriveType;
 } DRIVE_PROP_PAGE;
 
-BOOL
+HRESULT
 SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, PCUITEMID_CHILD_ARRAY apidl)
 {
     HPSXA hpsx = NULL;
@@ -145,7 +146,7 @@ SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, PCUITEMID_CHI
 
     LPITEMIDLIST completePidl = ILCombine(pidlFolder, apidl[0]);
     if (!completePidl)
-        return FALSE;
+        return E_OUTOFMEMORY;
 
     if (ILGetDisplayNameExW(NULL, completePidl, wszName, ILGDN_NORMAL))
     {
@@ -179,16 +180,19 @@ SH_ShowDriveProperties(WCHAR *pwszDrive, LPCITEMIDLIST pidlFolder, PCUITEMID_CHI
             SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageCallback, (LPARAM)&psh);
     }
 
-    HWND hwnd = (HWND)PropertySheetW(&psh);
+    // NOTE: Currently property sheet is modal. If we make it modeless, then it returns HWND.
+    INT_PTR ret = PropertySheetW(&psh);
 
     if (hpsx)
         SHDestroyPropSheetExtArray(hpsx);
     if (pDrvDefExt)
         pDrvDefExt->Release();
 
-    if (!hwnd)
-        return FALSE;
-    return TRUE;
+    if (ret > 0)
+        return S_OK;
+    if (ret == 0)
+        return S_FALSE;
+    return E_FAIL;
 }
 
 static VOID