Themes (vista) TScrollbar uses unclean bitmap (doublebuffer, from previous?)
Original Reporter info from Mantis: Martin @martin_frb
-
Reporter name: Martin Friebe
Original Reporter info from Mantis: Martin @martin_frb
- Reporter name: Martin Friebe
Description:
How to repeat: (tested on Vista)
- But a TScrollBar, and a TButton on a Form
- enable Manifest
- compile and start
- move mouse over button
(It will be highlighted in a bluee-ish color (this happen gradually, the blue fades in)
- move mouse over TScrollbar.
=> It does the same highlight. BUT the first frame of the "fade-in" is drawn with an older bitmap, in this case the button.
Effect: for a tiny moment you can see the button Image in the place of the scrollbar.
Additional information:
I do not know if any of the following is related, but it may be....
in lcl\interfaces\win32\win32callback.inc procedure WindowProc
CurDoubleBuffer.Bitmap
is reused/shared between controls, it's DC is used in the various messages send to the Control. If a TScrollbar fails to clean the Bitmap, then that would be an explanation.
in lcl\stdctrls.pp TCustomScrollBar
procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;
procedure TCustomScrollBar.WMEraseBkgnd(var Message: TLMEraseBkgnd);
begin
DefaultHandler(Message);
end;
May be stopping the control from erasing the Bitmap? Removing this Procedure cures the issue, but introduces the new issue, of an empty space being drawn for just a moment.
- If this is related, there may be more controls suffering this fate
Mantis conversion info:
- Mantis ID: 11578
- Version: 0.9.25 (SVN)
- Fixed in version: 0.9.29 (SVN)
- Fixed in revision: 25157 (#a943bcac)
- Monitored by: » crossbuilder (Burkhard Carstens), » luizamerico (Luiz Americo)
- Target version: 1.0.0
- LazTarget: 1.0