m (Development/Architecture/KDE 3 Architecture/Drag-And-Drop moved to Development/Architecture/KDE3/Drag-And-Drop)
KDE Architecture - Drag And Drop
Today, Drag-And-Drop (DND) is considered a requirement for commercial-quality applications. On most operating systems, support for DND is built-in, so everybody uses it and all programs can communicate with each other.
On X, however, there was no standard, so various groups have developed their own protocols, with the result that programs written for one protocol cannot talk to programs written for a different protocol. Clearly this does not satisfy the fundamental requirement that DND allow the user to drag data from any program to any other program.
Shortly before the release of KDE-1.x, a common effort was started to create a sophisticated standard drag-and-drop protocol. The result of this effort is the XDND Standard. In Version 2, KDE supports it as native drag and drop protocol throughout the entire desktop.
Information how to program drag-and-drop in KDE applications can be found in the Qt documentation.
Some historical remarks: Originally we expected XDND to be finished before the release KDE-1.0, so the temporary KDE-specific KDND protocol we were forced to create due to the lack of a reasonable standard could be replaced much ealier. But things sometimes take time in the software business.
Motif, the former so-called "standard toolkit" on X11, also defined a drag-and-drop protocol. Some information about this effort and why it was not widely accepted can be found on XDND's Other Protocols-page.
The only widely-used application that supports it these days is Netscape's Communicator. To make it possible to drag URLs from Netscape onto KDE applications, KDE also supports Motif-drops in version 2.
Initial Author; Matthias Ettrich