Drag & Drop mit 2.2.0

Rund um die LCL und andere Komponenten
Antworten
Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Drag & Drop mit 2.2.0

Beitrag von Sieben »

Bekommt man mit Lazarus 2.2.0 (und GTk2?) kein vernünftiges Drag & Drop mehr hin...? Ob dmManual oder dmAutomatic, mit DragObject oder ohne, der Cursor bleibt bei mir immer auf crNoDrop, sowohl über dem Ursprungscontrol als auch über dem Ziel - OnDragOver wird zwar ausgelöst, aber das Setzen von Accept bewirkt auch hier keine Änderung des Cursors. Nur wenn ich im Ursprungscontrol ebenfalls OnDragOver einrichte und Accept = True setze, bekomme ich überhaupt den Dragcursor. Der sich dann allerdings auch nicht mehr auf crNoDrop ändert, wenn ich das Control verlasse und die Maus über andere Controls bewege, die kein OnDragOver haben. Simpelstes Testprojekt anbei.

Oder was übersehe ich hier mal wieder?
Dateianhänge
DragTest.zip
(2.09 KiB) 44-mal heruntergeladen

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Drag & Drop mit 2.2.0

Beitrag von theo »

Abgesehen davon, dass man nicht "MouseMove" (wird X-Fach ausgeführt) sondern "MouseDown" für BeginDrag verwenden sollte, hast du recht.

Auf Qt geht's, auf GTK nicht.
Da kannst du einen Bug Report schreiben: https://gitlab.com/groups/freepascal.or ... ate=opened
https://wiki.lazarus.freepascal.org/How ... bug_report

Lazarus 2.3.0 rmain-2_3-288-gd5fe15d448 FPC 3.2.2 x86_64-linux-gtk2

EDIT: Etwas in der Art ist schon gemeldet: https://gitlab.com/freepascal.org/lazar ... sues/39522

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Drag & Drop mit 2.2.0

Beitrag von Sieben »

Vielen Dank für die Rückmeldung. Das mit dem MouseMove sehe ich nicht so eng, der wird bei einer Drag-Operation ohnehin noch ganz anders in Anspruch genommen, und wenn die mal begonnen hat wird da nicht mehr viel mehr ausgeführt als in TControl.MouseMove auch ohne eine solche.

Antworten