Graeme Geldenhuys schrieb:
Op 2011-01-23 22:09, Hans-Peter Diettrich het geskryf:
Either different applications have to agree about
exchangable data formats,

What's wrong with that? That is exactly what *all* DND implementation
do! The Source of the DND action supplies a list of data types they
support, the target goes through the list and if they don't understand
any of the data types then DND (data exchange) cannot happen.

The Delphi dragging model is strictly internal, independent from global conventions.

Dragging selected text from Wordpad to Notepad (on my Win2000 system) is
not possible (yet dragging a text file is). So clearly Notepad limits
what it will accept, looking for a very specific data format, and not
even supporting CF_TEXT data.

We should make *something* work first, then look into special cases. The reaction of applications is widely application specific, and implies no rule how other applications should handle various kinds of dropped items.


or a single application needs only private
types, for strictly private use.

correct again. If I want to limit what data my apps or components must
accept, then I'll add some application specific mime-type which only my
other apps will probably support. This is pretty normal DND
functionality on any platform.

It depends on the control type *and* its role in an application, what it should accept. An editor control can accept all kinds of text, and possibly graphics, while a file list will only accept file references. It's up to the control's drag handlers to check the dragged item(s), and to react accordingly.

Saying that, most apps at least allow some form of "plain text" data too
- as a fallback. But that is not a giving rule in DND. Se my earlier
paragraph of Notepad.

Plain text is a standard case, that should be supported by the component library. But no control is obliged to accept text at all.

Every data type must be associated with a class (or component),

It's not possible between applications. Why would WordPad know what a
TMemo or TEdit is? So you MUST supply the data in some byte array (this
depends on the platform), or simply supply the URI in case of a file(s),
so the target can read that file directly if they wanted.

I didn't mention specific control types, but only classes that implement support for specific data formats, like HTML, XML, JPEG...


Did you realize that URI lists are meaningful only to applications, that
can handle the referenced resources - in their specific data format,
that is not part of the URI. Otherwise the only use of such information
is textual display of the URIs themselves, that does not require any
special conversion.

I'm not sure I understand the point your are trying to make. I can say
that 'text/uri-list' could simply be a "fallback" data type. Normally
the source of DND has a list of data formats, and normally they are in
"most specific" to "least specific" order. Take Gnome's Nautilus (file
manager) as an example. It supplies 8 data formats when dragging files.
The first being something I guess only Gnome applications will
understand. Then the format list becomes less and less specific,
'text/uri-list' being the second choice of data types.

It's up to the drop target to select whatever data format is appropriate for its operation, in a specific application.

See attached screenshot.


Okay, Firefox works - but why then do you not simply show the CF_TEXT or
CF_UNICODETEXT format?

It does. See the 'firefox_dnd.png' attachment. And as you can see, it is
also not the "preferred" format for Firefox, as CF_TEXT is listed number
6 only.

The preferences of Firefox are quite unimportant to a target in a different application.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to