[PATCH] shell32: Add general tab in file property dialog.

Alexandre Julliard julliard at winehq.org
Fri May 4 04:08:40 CDT 2018


Alistair Leslie-Hughes <leslie_alistair at hotmail.com> writes:

> +static UINT CALLBACK file_properties_callback(HWND hwnd, UINT uMsg, LPPROPSHEETPAGEW ppsp)
> +{
> +    struct file_properties_info *props = (struct file_properties_info *)ppsp->lParam;
> +    if (uMsg == PSPCB_RELEASE)
> +    {
> +        if (!InterlockedDecrement(&props->refcount))
> +            heap_free(props);
> +    }

Why do you need refcounting?

> @@ -379,22 +694,24 @@ static void DoOpenProperties(ContextMenu *This, HWND hwnd)
>  	    IShellFolder_Release(lpDesktopSF);
>  	}
>  
> -	if (SUCCEEDED(ret))
> -	{
> -	    hpsxa = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, wszFiletype, MAX_PROP_PAGES - psh.nPages, lpDo);
> -	    if (hpsxa != NULL)
> -	    {
> -		SHAddFromPropSheetExtArray(hpsxa, Properties_AddPropSheetCallback, (LPARAM)&psh);
> -		SHDestroyPropSheetExtArray(hpsxa);
> -	    }
> -	    hpsxa = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, wszFiletypeAll, MAX_PROP_PAGES - psh.nPages, lpDo);
> -	    if (hpsxa != NULL)
> -	    {
> -		SHAddFromPropSheetExtArray(hpsxa, Properties_AddPropSheetCallback, (LPARAM)&psh);
> -		SHDestroyPropSheetExtArray(hpsxa);
> -	    }
> -	    IDataObject_Release(lpDo);
> -	}
> +    if (SUCCEEDED(ret))
> +    {
> +        init_file_properties_pages(lpDo, Properties_AddPropSheetCallback, (LPARAM)&psh);
> +
> +        hpsxa = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, wszFiletype, MAX_PROP_PAGES - psh.nPages, lpDo);
> +        if (hpsxa != NULL)
> +        {
> +            SHAddFromPropSheetExtArray(hpsxa, Properties_AddPropSheetCallback, (LPARAM)&psh);
> +            SHDestroyPropSheetExtArray(hpsxa);
> +        }
> +        hpsxa = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, wszFiletypeAll, MAX_PROP_PAGES - psh.nPages, lpDo);
> +        if (hpsxa != NULL)
> +        {
> +            SHAddFromPropSheetExtArray(hpsxa, Properties_AddPropSheetCallback, (LPARAM)&psh);
> +            SHDestroyPropSheetExtArray(hpsxa);
> +        }
> +        IDataObject_Release(lpDo);
> +    }

The indentation is wrong here.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list