Hi,

Here is our first look at enabling inter-application DND.

ABSTRACT :

We want to link together OLE DND and an X Protocol. At the X Level we would
have the choice of multiple protocols like Xdnd, Motif, OffiX, etc ...

So far,  Xdnd seems our best bet because it looks very similar to the
windows way of doing DND. Even though it is not currently supported by all
X applications, it seems to be catching on ( support is planned in both
Gnome & KDE and many recent X applications). Also, nothing would prevent us
to add support for other protocols later on.

HOW DO WE PLAN TO DO THIS :

To Drag from a Wine application to another Wine/X application.

1. We have to implement all event handlers for the chosen DND protocol at
the X11DRV level.
2. We need to create an OLEDD_TrackMouseMove equivalent X11DRV function
which would be called when WindowFromPoint fails
( i.e the mouse pointer is not directly above a Wine window). That same
function will create an internal IDropTarget which we need to write.  That
object will provide the glue between the Wine OLE Drag and Drop and all
other application through an X protocol (Xdnd for example).

To Drag from an X to a Wine application.

1. All Wine windows will be marked has an X Drop Targets.
2. A handler for the X drop event will be written. It checks if the given
Wine window is actually an OLE  DropTarget and if so, it converts the event
and forward it to the appropriate IDropTarget and do the DND communication
with  the source.

These are the main lines. If you have any comments or suggestions please
feel free to let us know ( in particular, we would appreciate  any
informations that could help us select an X protocol for DND ).

Thanks,

Jean-Claude Batista & Louis-Philippe Gagnon.
Macadamian Technologies.

Reply via email to