On 05/01/2013 10:54, luiz americo pereira camara wrote:
2013/1/5 luiz americo pereira camara <[email protected]>:
2013/1/5 luiz americo pereira camara <[email protected]>:
2013/1/5 Mattias Gaertner <[email protected]>:
On Sat, 05 Jan 2013 08:32:54 +0000
Martin <[email protected]> wrote:
and therefore finally

    s:=PageControl1.AddTabSheet;
    PageControl1.ActivePage := s;  // paint tabsheet
    l := TSynEdit.Create(self);
    l.Parent := s;                               // paint scrollbars, not
yet aligned
    l.Align := alClient;                      // paint scrollbars
(again), this time aligned. Since synedit itself does not yet paint, the
previous painted scrollbars remain a visible image
It seems the Win32 intf triggers immediate paints.
Maybe some win32 developer can explain why.

I've found a suspect.

SetParent triggers the handle creation
TSynEdt.CreateWnd calls SizeOrFontChanged that calls UpdateScrollBars
Here, since PaintLock <> 0 the scrollbar change is postponed

Martin/Bart, can you check if you pass the check for PaintLock in
UpdateScrollBars?

Alternatively comment the call to SizeOrFontChanged in CreateWnd and
see what happens

More info:

SynEdit.CreateHandle -> DoDecPaintLock -> UpdateScrollBars ->
ShowScrollBar (LCL) -> ShowScrollBar (Win32) -> Windows.RedrawWindow

I don't think it can be avoided.

I can detect the situation of course, but preventing that call, might lead to wrong display results.

Example
s := TSynEdit.Create
// Set ALign, size, text, all options.
s.Parent := form;

The last line makes the synedit visible. SynEdit must at some time tell the WidgetSet that scrollbars should be visible (assuming they should).

SynEdit can not trust that there will be a resize. The final size may be equal to the initial size. So it can not wait for the resize. (Assuming that after the first resize it would have the right/final size, and that therefore doing the "ShowScrollBar" in Resize would not cause as much as a disturbance. (It would still paint the scrollbars early, leading to a period of time showing only the scrollbars, but not yet the Edit).




--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to