[Bug 39841] Double Commander context menus missing most entries
WineHQ Bugzilla
wine-bugs at winehq.org
Mon Apr 26 01:46:29 CDT 2021
https://bugs.winehq.org/show_bug.cgi?id=39841
Damjan Jovanovic <damjan.jov at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Keywords| |source
CC| |damjan.jov at gmail.com
Status|UNCONFIRMED |NEW
--- Comment #5 from Damjan Jovanovic <damjan.jov at 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.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list