Paintbox Canvas Verschiebung unter Linux (gtk2)

Antworten
Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Warf »

Hey mir ist grade was seltsames aufgefallen, manche Canvas operationen funktionieren unter GTK2 nicht richtig.

Szenario: Paintbox Align: Client, TreeView Align: Left.
Paintbox Onpaint:

Code: Alles auswählen

 
var
  C: TPoint;
begin
  C:=Point(PaintBox1.Width div 2, PaintBox1.Height div 2);
  PaintBox1.Canvas.Brush.Color:=clGreen;
  PaintBox1.Canvas.Brush.Style:=bsSolid;
  PaintBox1.Canvas.pen.Style:=psClear;
  PaintBox1.Canvas.Polygon([Point(C.x-50, c.y-50),Point(C.x+50, c.y-50),Point(C.x+50, c.y+50),Point(C.x-50, c.y+50)]);
  PaintBox1.Canvas.pen.Color:=clred;
  PaintBox1.Canvas.Brush.Style:=bsClear;
  PaintBox1.Canvas.pen.Style:=psSolid;
  PaintBox1.Canvas.Rectangle(C.x-50, C.y-50, c.x+50, C.y+50);     


Ergebnis:
Bild

Unter windows überlappen die beiden perfekt (wie ich es auch erwarten würde).

Daher die Frage, Bug oder Feature

PS: Lazarus 1.8.4 OpenSuse Tumbleweed

shokwave
Beiträge: 436
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win10 (L 1.6 FPC 3.0.0)
CPU-Target: i386,x64
Wohnort: Rudolstadt

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von shokwave »

Definitiv ein Feature! Sieht besonders cool aus, wenn du noch einen Splitter dazu packst. 8)

Kann das Verhalten unter Ubuntu Budgie 18.04 x64 mit Lazarus trunk r58416 bestätigen.
Polygon scheint sich auf die Koordinaten der Form und nicht der Paintbox zu beziehen. Ein Fall für den Bugtracker!
mfg Ingo

Michl
Beiträge: 2340
Registriert: Di 19. Jun 2012, 12:54

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Michl »

Ja das ist ein Bug in GTK2 (sehe ich hier auch: Lazarus Trunk Revision 58256, Mint Cinnamon 18.3).

Win32 (Windows 7) sowie GTK3 und Qt (Mint Cinnamon 18.3) funktionieren.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Erwin »

Ich habe es auch mal probiert. Allerdings nutze ich ja Xubuntu, das hat die Xfce-Oberfläche.
Außerdem fand ich 'TreeView' nicht, um es auf 'Align: Left' einzustellen. (Erwähnt für denn Fall, das dies der Grund für ein anderes Ergebnis sein sollte.)

Bei mir ist es fast ganz überlappend gewesen. Genauer gesagt: Rechts und Unten war ein schwarzer Strich. Was aber kein Wunder ist. Weil beim Polygon werden die Exakten Koordinaten genutzt, während beim Rechteck (also Rectangle) die zweiten Koordinaten ja um eins kürzer sind.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

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

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Mathias »

Hier wurde mir mal gesagt, das die PaintBox sowieso veraltet sei.
viewtopic.php?f=18&t=9464&p=83505&hilit=paintbox#p83505
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

shokwave
Beiträge: 436
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win10 (L 1.6 FPC 3.0.0)
CPU-Target: i386,x64
Wohnort: Rudolstadt

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von shokwave »

@Erwin: Du kannst auch eine andere Komponente(z.B. ein TPanel) benutzen, um den Effekt zu sehen.
mfg Ingo

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Warf »

Gibt es eine Möglichkeit zu überprüfen welches Widgetset verwendet wird (Compilerswitch reicht schon)?

Polygon scheint sich auf die Koordinaten der Form und nicht der Paintbox zu beziehen.


Nicht mal, anscheinend nur vom Parent abhängig

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Erwin »

shokwave hat geschrieben:@Erwin: Du kannst auch eine andere Komponente(z.B. ein TPanel) benutzen, um den Effekt zu sehen.

So war das mit dem TreeView gemeint?
Ok, jetzt ist es auch bei mir nebeneinander.

Fragt sich jetzt nur noch, welchem Bugtraker man das melden muss?
Dem vom Lazarus/FPC? (anderseits, da es unter Win geht, ...)
Dem von Linux?
Dem vom Windows und Lazarus/FCP (weil es sich nicht überlappen sollte?)?
Oder gar Lazarus/FPC und Linux?
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

shokwave
Beiträge: 436
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win10 (L 1.6 FPC 3.0.0)
CPU-Target: i386,x64
Wohnort: Rudolstadt

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von shokwave »

Erwin hat geschrieben:
shokwave hat geschrieben:@Erwin: Du kannst auch eine andere Komponente(z.B. ein TPanel) benutzen, um den Effekt zu sehen.

So war das mit dem TreeView gemeint?
Ok, jetzt ist es auch bei mir nebeneinander.
Genau, dass hatte ich gemeint. Hab es ein wenig schwammig formuliert. Sorry.
Erwin hat geschrieben:Fragt sich jetzt nur noch, welchem Bugtraker man das melden muss?

Das sieht mir nach Lazarus/LCL aus, da Rectangle ja korrekt arbeitet.
mfg Ingo

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Warf »

Hab rausgefunden, den Effekt hat man nicht nur bei Canvas.Polygon sondern auch Canvas.Pie. Wahrscheinlich ist einfach irgendeine unterliegende Methode broken, eventuell sind noch mehr Funktionen betroffen.

Erwin
Beiträge: 225
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 16.04 / x86_64_linux-gtk 2 / L 1.6+dfsg-1 / FPC 3.0.0

Re: Paintbox Canvas Verschiebung unter Linux (gtk2)

Beitrag von Erwin »

So viel zu Plattformunabhängigkeit.
Klar kann man sagen, Lazrarus/FPC oder LCL ist schuld dran. Aber anderseits darf man nicht vergessen, dass auch BS (besonders gern Windows) gerne ihre eigenen Standards macht, und dadurch unnötig an jedes System einzeln angepasst werden muss. Als Beispiel fällt mir das mit den Buttons ein. Die Buttons können schon seit der vorletzten (?) Win-Version nicht mehr Farbig angezeigt werden, weil die von MS da was geändert haben.
Win 7 / Lazarus 1.6 / FP 3.0.0 / x86_64-win64-win32/win64

Antworten