Desired platforms for native support:
A perl binding is not on the cards, though it shouldn't be too difficult to do (once you have the Tcl/Tk implementation... )
dragdrop
that is the interface to all this. The loading
of this command (and its associated library) will trigger the loading
of another shared lib that loads the native support desired (this
would be customisable in a script somewhere).
Possible interface:
dragdrop drag xRoot yRoot pathName ?types? ?preferredModes?
types
is unspecified, then all
the types for which there are data generators will be offered. If
preferredModes
is unspecified, then the mode will be
copy.
No reliance should be placed upon the event loop running, or otherwise.
dragdrop info ... dragId
dragdrop data dragId ?type?
dragdrop source pathName ?type? ?command?
dragdrop preview srcTrg pathName ?command?
dragdrop target pathName ?command?
dragdrop system ...
All command
arguments would have some kind of
%
expansion applied to them. Currently, I'm thinking of
having these expansions as being something like this:
Escape sequence | Meaning |
---|---|
%D | Drag identifier |
%i | Source interpreter |
%w | Source widget |
%I | Target interpreter |
%W | Target widget |
%X | Pointer position (relative to root window) |
%Y | Pointer position (relative to root window) |
%x | Pointer position (relative to source/target window) |
%y | Pointer position (relative to source/target window) |
%M | Preferred mode(s) |
%T | Allowed type(s) |
dragdrop info
call.
Drag identifiers will continue to exist at least until the first time the application becomes idle after their (official) use ends; their purpose being to distinguish between operations being carried out on multiple displays at once.