[Bug 26865] Cannot drag-drop extract files (WinRAR, 7-Zip, etc.)

wine-bugs at winehq.org wine-bugs at winehq.org
Thu Feb 5 12:19:55 CST 2015


https://bugs.winehq.org/show_bug.cgi?id=26865

--- Comment #10 from Damjan Jovanovic <damjan.jov at gmail.com> ---
The essence of the drag loop is in dlls/ole32/ole2.c's DoDragDrop(), and the
real work is done in OLEDD_TrackStateChange(). Hacking the latter to print
which window is returned from WindowFromPoint() shows it always returns the
"desktop window" when dragging to an X11 window outside Wine. This shows us the
first problem with dragging to native windows - Wine is completely unaware that
there are windows in the display other than its own.

The implications of this are dire - even currently. Open up 2 instances of
7-Zip and drag a file from the one to the other: it works. Now open an X11
window so it partially overlaps the 7-Zip window you are dropping into, and
drag a file around to see the cursor's icon in different places. What you see
is that the obscuring X11 window is ignored: you are dropping *through* the X11
window that Wine doesn't see, into Wine's 7-Zip window.

This leads me to believe the only way forward is to reimplement
OLEDD_TrackStateChange() in winex11.drv, with it looking at X11 windows and
using XQueryPointer() instead of WindowFromPoint(), XQueryTree() instead of
GetParent(), while also somehow dealing with Wine's windows and their non-X11
child windows.

-- 
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