Scrollen im Objectinspektor
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Scrollen im Objectinspektor
Nach Empfehlung von wp_xyz, möchte ich hier eine BUG-Report veröffentlichen, damit es nicht in Vergessenheit gerät...
Das Problem betrifft das Scrollen im Objektinspektor:
Lazarus Windows Version V1.8.4
und, jedoch mit etwas anderem fehlerhaften Verhalten, die Windows Version Lazarus V2.0.0RC2
Hier wird der Bildschirm nicht rechtzeitig bzw. sogar nicht richtig restauriert wenn man sich in einem
Eigenschftsfeld befindet zum editieren. und den Scrollbalken bewegt.
Ich verweis mal auf meinen Thread:
https://www.lazarusforum.de/viewtopic.php?f=15&t=11876
geprüft auf 2 verschiedenen Rechnern mit Windows 10
Für Gegenmaßnahmen bedanke ich mich schon im voraus.
Siro
Das Problem betrifft das Scrollen im Objektinspektor:
Lazarus Windows Version V1.8.4
und, jedoch mit etwas anderem fehlerhaften Verhalten, die Windows Version Lazarus V2.0.0RC2
Hier wird der Bildschirm nicht rechtzeitig bzw. sogar nicht richtig restauriert wenn man sich in einem
Eigenschftsfeld befindet zum editieren. und den Scrollbalken bewegt.
Ich verweis mal auf meinen Thread:
https://www.lazarusforum.de/viewtopic.php?f=15&t=11876
geprüft auf 2 verschiedenen Rechnern mit Windows 10
Für Gegenmaßnahmen bedanke ich mich schon im voraus.
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Re: Scrollen im Objectinspektor
Nein, das liest hier keiner von den Leuten, die das beheben können. Du musst schon im Bug-Tracker posten: https://bugs.freepascal.org/view_all_bu ... oject_id=1, und auf englisch. Falls das ein Problem ist, kann ich das auch posten, nur ich habe meinen Kopf momentan woanders, und es könnte sein, dass ich es vergesse.
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Scrollen im Objectinspektor
Achso, das wuste und kannte ich noch garnicht, Ich dachte die Entwickler schauen auch hier ein.
Wenn Du Zeit und Lust dafür hast, wäre es nett von Dir, wenn Du es dort reinstellen würdest wp_xyz.
Ich will hier aber keine Aufgaben verteilen, das steht mir nicht zu.....
Siro
Wenn Du Zeit und Lust dafür hast, wäre es nett von Dir, wenn Du es dort reinstellen würdest wp_xyz.
Ich will hier aber keine Aufgaben verteilen, das steht mir nicht zu.....
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Scrollen im Objectinspektor
Guten Morgen und vielen lieben Dank an wp_xyz.
Das hätte ich nie so hinbekommen.
Siro
Das hätte ich nie so hinbekommen.
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 572
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Scrollen im Objectinspektor
Bitte mal mit Trunk r59604 testen.
Probleme/Konfirmation bitte hier https://bugs.freepascal.org/view.php?id=34539
Probleme/Konfirmation bitte hier https://bugs.freepascal.org/view.php?id=34539
Re: Scrollen im Objectinspektor
Danke, Martin, scheint zu funktionieren. Nur bei sehr schnellem Scrollen verschwindet manchmal der PropertyEditor, aber das ist tolerierbar im Vergleich zum Zustand vorher.
-
- Beiträge: 572
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Scrollen im Objectinspektor
wp_xyz hat geschrieben:Danke, Martin, scheint zu funktionieren. Nur bei sehr schnellem Scrollen verschwindet manchmal der PropertyEditor, aber das ist tolerierbar im Vergleich zum Zustand vorher.
Verschwindet dauerhaft, oder temporär? Welches Windows? 10,8,7,...
Re: Scrollen im Objectinspektor
Sowohl Win10 als auch Win7 zeigen den Effekt (zu Win8 habe ich keinen Zugang).
Ist etwas schwer zu reproduzieren, ich habe das Gefühl es hängt davon ab, wie sehr die Maschine anderweitig beschäftigt ist. Aber ich glaube jetzt, der Begriff "Verschwinden" ist falsch, besser wäre "Auftaucnen". Ich meine, es jetzt gut zu sehen, wenn ich die Zelle mit dem Property-Editor nach oben aus dem sichtbaren Fenster des OI scrolle, dann den Rollbalken schnell herunterziehe; während des Scrollens ist, wenn dann der Property-Editor wieder ins Fenster kommt, die der blaue Text-Hintergrund nicht zu sehen, er kommt erst dann, wenn der Rollbalken steht.
Während des Scrollens habe ich immer wieder den Eindruck, dass nicht alles in einem Guss (so wie ein gescrolltes Bitmap) gezeichnet wird, sondern dass der Property-Editor erst im Nachhinein auf das gescrollte Grid gezeichnet wird, weil der Property-Editor etwas auf- und abzittert. Delphi hat das nicht: hier bewegt sich das Grid des Objekt-Inspektor zusammen mit den Property-Editor absolut synchron. Hat das vielleicht mit Double-Buffering zu tun? Ich behaupte mal, das trat zum ersten Mal auf, als Ondrej die große Änderung mit dem Double-Buffering gemacht hat.
In dem Zusammenhang gibt es noch ein zweites ähnliches Problem: Wenn man den Splitter zwischen ObjectTree und ObjectInspektor schnell auf- und abbewegt, gibt es nichts als Ausgabereste - siehe Screenshot. Genauso wieder bei Win10 und Win7, vorübergehend während des Scrollens, verschwindet wieder, wenn der Rollbalken angehalten wird. Ich habe noch ein Laz 1.0 auf der Platte, da sieht man den Fehler auch schon. Ich wollte sehen, ob Delphi das auch macht, aber die schalten den Splitter in den rsLine oder rsPattern ResizeStyle, so dass während des Scrollens gar kein Neuzeichnen stattfindet.
Ist etwas schwer zu reproduzieren, ich habe das Gefühl es hängt davon ab, wie sehr die Maschine anderweitig beschäftigt ist. Aber ich glaube jetzt, der Begriff "Verschwinden" ist falsch, besser wäre "Auftaucnen". Ich meine, es jetzt gut zu sehen, wenn ich die Zelle mit dem Property-Editor nach oben aus dem sichtbaren Fenster des OI scrolle, dann den Rollbalken schnell herunterziehe; während des Scrollens ist, wenn dann der Property-Editor wieder ins Fenster kommt, die der blaue Text-Hintergrund nicht zu sehen, er kommt erst dann, wenn der Rollbalken steht.
Während des Scrollens habe ich immer wieder den Eindruck, dass nicht alles in einem Guss (so wie ein gescrolltes Bitmap) gezeichnet wird, sondern dass der Property-Editor erst im Nachhinein auf das gescrollte Grid gezeichnet wird, weil der Property-Editor etwas auf- und abzittert. Delphi hat das nicht: hier bewegt sich das Grid des Objekt-Inspektor zusammen mit den Property-Editor absolut synchron. Hat das vielleicht mit Double-Buffering zu tun? Ich behaupte mal, das trat zum ersten Mal auf, als Ondrej die große Änderung mit dem Double-Buffering gemacht hat.
In dem Zusammenhang gibt es noch ein zweites ähnliches Problem: Wenn man den Splitter zwischen ObjectTree und ObjectInspektor schnell auf- und abbewegt, gibt es nichts als Ausgabereste - siehe Screenshot. Genauso wieder bei Win10 und Win7, vorübergehend während des Scrollens, verschwindet wieder, wenn der Rollbalken angehalten wird. Ich habe noch ein Laz 1.0 auf der Platte, da sieht man den Fehler auch schon. Ich wollte sehen, ob Delphi das auch macht, aber die schalten den Splitter in den rsLine oder rsPattern ResizeStyle, so dass während des Scrollens gar kein Neuzeichnen stattfindet.
-
- Beiträge: 572
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Scrollen im Objectinspektor
wp_xyz hat geschrieben:Sowohl Win10 als auch Win7 zeigen den Effekt (zu Win8 habe ich keinen Zugang).
wenn ich die Zelle mit dem Property-Editor nach oben aus dem sichtbaren Fenster des OI scrolle, dann den Rollbalken schnell herunterziehe; während des Scrollens ist, wenn dann der Property-Editor wieder ins Fenster kommt, die der blaue Text-Hintergrund nicht zu sehen, er kommt erst dann, wenn der Rollbalken steht.
Korrekt. In diesem Falle funktioniert ScrollWindowEx nicht vollständig.
Siehe im Bug den Kommentar bzgl: DeferWindowPos.
Im Moment sendet die IDE die neue Pos einfach hinterher selber. Daher die Verzögerung.
Während des Scrollens habe ich immer wieder den Eindruck, dass nicht alles in einem Guss (so wie ein gescrolltes Bitmap) gezeichnet wird, sondern dass der Property-Editor erst im Nachhinein auf das gescrollte Grid gezeichnet wird, weil der Property-Editor etwas auf- und abzittert.
Ja, eigentlich sollte das mit ScrollWindowEx ja nicht passieren. Ist aber auf jeden Fall mit ScrollWindowEx weniger als mit Invalidate.
Müsste man den gesamten message Austausch zwischen IDE und Windows debuggen....
In dem Zusammenhang gibt es noch ein zweites ähnliches Problem: Wenn man den Splitter zwischen ObjectTree und ObjectInspektor schnell auf- und abbewegt, gibt es nichts als Ausgabereste - siehe Screenshot. Genauso wieder bei Win10 und Win7, vorübergehend während des Scrollens, verschwindet wieder, wenn der Rollbalken angehalten wird. Ich habe noch ein Laz 1.0 auf der Platte, da sieht man den Fehler auch schon. Ich wollte sehen, ob Delphi das auch macht, aber die schalten den Splitter in den rsLine oder rsPattern ResizeStyle, so dass während des Scrollens gar kein Neuzeichnen stattfindet.
Ganz anderer Fall.
Hier werden beide Komponenten verschoben, und resized (kein scrolling). Da müsste die LCL/Interface DeferWindowPos lernen. Oder eine andere Möglichkeit ein Parent mit allen Children zu bewegen.
-
- Beiträge: 732
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Scrollen im Objectinspektor
Invalidate ist oftmals SEHR langsam, wenn ich sofortige Reaktion haben möchte nutze ich Refresh.
Ich vermute dass hier das Problem herrührt ?
Ich hab in fast allen meinen Komponenten Invalidate durch Refresh ersetzt sonst hinkten die Zeichenoperation ständig hinterher....
Mit ScrollWindowEx hatte ich damals auch Probleme, ich bin grad am Suchen, find das irgendwie nicht mehr.
Ich vermute dass hier das Problem herrührt ?
Ich hab in fast allen meinen Komponenten Invalidate durch Refresh ersetzt sonst hinkten die Zeichenoperation ständig hinterher....
Mit ScrollWindowEx hatte ich damals auch Probleme, ich bin grad am Suchen, find das irgendwie nicht mehr.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 572
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Scrollen im Objectinspektor
Das Problem ist in diesem Falle nicht ScrollWindowEx, sondern eine Kombination aus verschieden anderen Sachen.
RePaint brauch genau soviel Zeit wie Invalidate. RePaint wird nur zeitnah ausgefuehrt, dafuer werden dann andere Dinge nach hinten verschoben...
Zum testen, patch attached.
RePaint brauch genau soviel Zeit wie Invalidate. RePaint wird nur zeitnah ausgefuehrt, dafuer werden dann andere Dinge nach hinten verschoben...
Zum testen, patch attached.
- Dateianhänge
-
- objectinspector_faster_paint.pp.patch
- (3.94 KiB) 180-mal heruntergeladen