https://bugs.winehq.org/show_bug.cgi?id=39841
Damjan Jovanovic damjan.jov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Keywords| |source CC| |damjan.jov@gmail.com Status|UNCONFIRMED |NEW
--- Comment #5 from Damjan Jovanovic damjan.jov@gmail.com --- After hours of battling with the comedy build environment featuring FreePascal, Lazarus, various packages, Double Commander and its Github fork, 3 source code versions, and I can't remember what else, I finally figured out the "Error: Invalid parameter" problem when you right-click on an empty space.
In src/platform/uosforms.pas, procedure ShowContextMenu() calls src/platform/win/ushellcontextmenu.pas constructor TShellContextMenu.Create() which ultimately calls: OleCheckUTF8(Folder.CreateViewObject(Handle, IID_IContextMenu, Result)); which calls Wine's dlls/shell32/shfldr_unixfs.c function ShellFolder2_CreateViewObject() which doesn't implement the "IID_IContextMenu" interface. Since it's default HRESULT is:
---snip--- HRESULT hr = E_INVALIDARG; ---snip---
that ends up being returned, and causes Double Commander to display "Error: Invalid parameter".
If I patch it to return E_NOINTERFACE (like it probably should), Double Commander shows an "Error:" messagebox instead, with no error description.
None of Wine's other shell32 "folders" (desktop, fs, mycomp, netplaces, printers) seem to support the IID_IContextMenu interface in their CreateViewObject() method either, with some explicitly checking for it and failing, some WARNing, some silently failing (sometimes with the wrong HRESULT).
I'll also try to take a look at the issue of there not being enough menu items when right-clicking on a file, though it's probably something similar.