Y-Offset bei TPaintbox Kaputt ? [gelöst]

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Y-Offset bei TPaintbox Kaputt ? [gelöst]

Beitrag von corpsman »

Servus zusammen,
ich hab hier grad so einen WTF Moment.
Ich bin unter Linux Mint Mate 21.3 mit Lazarus 3.99 (gehohlt via git pull heute um 11:35)

Man nehme ein leeres Projekt, plaziere irgendwo eine TPaintbox und sorge dass folgender Code passt (oder lädt den in der Anlage runter):

Code: Alles auswählen


Procedure TForm1.PaintBox1Paint(Sender: TObject);
Begin
  PaintBox1.Canvas.Brush.Color := clred;
  PaintBox1.Canvas.Rectangle(-1, -1, PaintBox1.Width + 1, PaintBox1.Height + 1);
End;

Procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
Begin
  label1.caption := format('%d %d', [x, y]);
  If ssleft In shift Then Begin
    PaintBox1.canvas.Pixels[x, y] := clBlack;
  End;
End;    
Wenn ich nun mit der Maus über das Rote Rechteck "fahre" oder auch male, dann sieht man einen Y-Versatz von Cursor zu angegebener Position, bei mir von Knapp 20 Pixeln siehe "Grüne Strecke". Das ist so schlimm, das der Cursor sogar noch oberhalb der Paintbox "Move" events auslöst und kurz vor dem unteren Rand nicht mehr, es sieht also so aus wie wenn einfach alles den Y-Versatz hat..

Kann das jemand bestätigen ?
WTF.png
WTF.png (14.77 KiB) 4891 mal betrachtet
Dateianhänge
Bug.zip
(2 KiB) 65-mal heruntergeladen
Zuletzt geändert von corpsman am Do 25. Jan 2024, 18:29, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von corpsman »

OK, bei nem Bevel ist es auch so,..

Die differenz sieht sehr stark nach der "Höhe" meiner Form Titelleiste aus, und Tatsache mache ich folgenden Code

Code: Alles auswählen

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   label3.caption := format('%d %d', [x, y]);
end;     
sieht man auch, dass bei Y=23 der curser auf die Titelleiste geht und dann geht es nicht mehr weiter runter, da sollte aber Y eigentlich 0 sein ..
--
Just try it

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von Mathias »

OK, bei nem Bevel ist es auch so,..
Ich habe es bei einem Panel probierte, da macht er es richtig.

Code: Alles auswählen

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  PaintBox1.Canvas.LineTo(x,y);
end;
Wie du sagst, bei der Paintbox ist es immer um die Titeleistenbreite daneben, egal wo die Paintbox platziert ist.
Setze ich die PaintBox aber in ein Panel, dann ist auch die PaintBox io.

Sieht nach einem Bug aus.
Mal gucken was die anderen meinen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von corpsman »

Hab mal ein Form mit

Code: Alles auswählen

 Borderstyle := bsNone
gemacht, da ist dann alles I.O.
--
Just try it

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von Mathias »

corpsman hat geschrieben:
Mi 24. Jan 2024, 13:57
Hab mal ein Form mit

Code: Alles auswählen

 Borderstyle := bsNone
gemacht, da ist dann alles I.O.
Ist dies der Sinn der Sache ?
Sollte dies nicht auch auf einem normalen Form funktionieren ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von siro »

Unter Windows völlig einwandfrei.
Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 x86_64-win64-win32/win64
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von corpsman »

*g*
Ja das sollte schon funktionieren, ich versuche halt info's zu sammeln ;)
--
Just try it

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von wp_xyz »

Ich habe versucht, das Problem auf meiner Mint-VM (21.2 Cinnamon) zu reproduzieren, und konnte es anfangs weder unter gtk2, gtk3 noch unter qt5 bestätigen. Dann habe ich in deinem 1.Beitrag gelesen, dass du Lazarus/main heute aktualisiert hast. Laz upgedatet - und nun sehe ich den Fehler auch, allerdings nur bei gtk2, aber nicht bei gtk3 und qt5.

Meine Version war fb8756e03b vom 6.11. Zwischen diesem Datum und heute muss sich irgendwann der Fehler eingeschlichen haben. Bitte melde das Problem im Bug-Report. Gib auch die o.g. SHA meiner Version an, oder besser, versuch selbst durch git bisect das fehlerhafte Commit zu finden. Es gab immer wieder Probleme in der Berechnung der Formularhöhe wegen der Titelleiste von Fenstern, und ich bin sicher, da ist das letzte Wort noch nicht gesprochen.

[EDIT]
Beim Durchscrollen der Commits in interfaces/gtk2 nach dem 6.11. ist mir "e916d8bc16761d8f7d722d7cd0502cf9d53e13f5 * LCL-GTK2: Fix tooltip positioning for auto-completion droplist. Issue #40659, patch by Alexander Bagel." vom 13.1. aufgefallen, dort werden BoundsRect.TopLeft verändert - klingt verdächtig. Ich kann mich da jetzt im Detail nicht so reinhängen, aber vielleicht könntest du mal dieses Commit aktivieren, und sehen ob hier der Fehler noch, und dann im direkt vorhergegangenen Commit der Fehler nicht mehr vorhanden ist. Damit wäre die Sache klar.
Zuletzt geändert von wp_xyz am Mi 24. Jan 2024, 23:37, insgesamt 1-mal geändert.

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von Mathias »

Ich hatte meines gestern aktualisiert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von corpsman »

So ich kann mich da leider auch nicht so rein hängen wie ich das gerne würde:

https://gitlab.com/freepascal.org/lazar ... sues/40726

Aber immerhin, den Bugreport kann ich schreiben ;)
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Y-Offset bei TPaintbox Kaputt ?

Beitrag von corpsman »

Danke für die Tollen Vorarbeiten, gerade wurde mein Ticket schon wieder geschlossen, habs getestet, nun funktioniert alles wieder 1a.
--
Just try it

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Y-Offset bei TPaintbox Kaputt ? [gelöst]

Beitrag von wp_xyz »

Sowas sind die Highlights von Open Source. Bei einem kommerziellen Produkt müsste man viel für solchen Service zahlen!

Antworten