OnMausMove unter Linux

Antworten
Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

OnMausMove unter Linux

Beitrag von Scotty »

Ich habe ein Grid, bei dem ich OnDragOver und OnMouseMove auswerte. Unter Windows geht das recht flüssig, aber Linux scheint eine Liste aller Mauspositionen abzuarbeiten, die der Cursor über dem Element hatte. Jedenfalls wird meine Routine mehrfach aufgerufen. Ich vermute, dass dies keine Frage von Lazarus/FPC ist. Ein Gedanke wäre, dass Windows die Mausposition über einen Timer abfragt, während Linux da hardwarenäher arbeitet. Aber trotzdem: Kann man das irgendwie unterbinden?

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OnMausMove unter Linux

Beitrag von pluto »

Ich wüsste nur eine "Notlösung": Du erstellst dir einfach eine Hilfs Variable(Globale) die du mit False belegst. Beim ersten MouseMove wird sie dann auf True gestellt und nur wenn sie False ist wird dein Code abgearbeitet nun brauchst du noch eine Möglichkeit sie wieder auf False zu setzten, am besten bei onMouseMoveLeave...
MFG
Michael Springwald

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: OnMausMove unter Linux

Beitrag von Scotty »

Ich prüfe schon, ob der Cursor einen Mindestabstand zur vorherigen Position hat. Leider hilft das nicht. Auswerten muss ich die Positionen außerdem alle. Zum Beispiel nehme ich einen Spielstein auf (BeginDrag, DragObject), ziehe diesen auf mein Spielfeld (OnDragOver, Accept=Feld nicht belegt usw.) und lasse dort los (OnEndDrag). Unter Windows geht das einwandfrei, nur Linux "zieht eine Spur", d.h. der Cursor ist an der Zielpositon und das DragObject kommt langsam hinterher gewandert. Beim OnMouseMove prüfe ich, ob die Position unter dem Cursor bestimmte Eigenschaften hat und zeige dann einen Hint an. Auch hier ist das zäh wie Hefeteig unter Linux. Starte ich mein Windowscompilat per Wine geht es einwandfrei.

Antworten