View Issue Details

IDProjectCategoryView StatusLast Update
0037161LazarusLCLpublic2020-06-19 16:10
ReporterBrunoK Assigned ToMartin Friebe  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
PlatformWin32OSWindows 
Product Version2.0.9 (SVN) 
Fixed in Version2.2 
Summary0037161: Flicker when changing active TabSheet in TPageControl
DescriptionFlicker when changing active TabSheet in TPageControl
Steps To Reproducehttps://forum.lazarus.freepascal.org/index.php/topic,50042.msg364418.html#msg364418
GetMem's tmp4_noflicker.zip without call to LockWindowUpdate.
Additional InformationIt seems that when a tab becomes inactive due to activating an other tab on the TPageControl, an erase WM_BACKGROUND is sent for the deactivated Tab and this briefly paints to the screen its area with a default clear colour before it is replaced with the new selected tab contents which may take some time to draw. (a visually detectable time).

First time seen when testing issue 33923.


TagsNo tags attached.
Fixed in Revision63261
LazTarget2.2
Widgetset
Attached Files

Relationships

related to 0022080 resolvedPaul Ishenin Blinking of TPageControl when switching tabs 

Activities

BrunoK

2020-06-01 15:53

reporter  

win32pagecontrol.inc.patch (629 bytes)   
Index: lcl/interfaces/win32/win32pagecontrol.inc
===================================================================
--- lcl/interfaces/win32/win32pagecontrol.inc	(revision 63021)
+++ lcl/interfaces/win32/win32pagecontrol.inc	(working copy)
@@ -58,7 +58,7 @@
 
 function ShowHideTabPage(TabControlHandle: HWnd; Showing: boolean): integer;
 const
-  ShowFlags: array[Boolean] of DWord = (SWP_HIDEWINDOW or SWP_NOZORDER, SWP_SHOWWINDOW);
+  ShowFlags: array[Boolean] of DWord = (SWP_HIDEWINDOW or SWP_NOZORDER {~bk} or SWP_NOREDRAW {~bk}, SWP_SHOWWINDOW);
 var
   TabControl: TCustomTabControl;
   PageIndex: Integer;
win32pagecontrol.inc.patch (629 bytes)   

BrunoK

2020-06-01 16:06

reporter   ~0123163

Without change annotation.
win32pagecontrol.inc-2.patch (617 bytes)   
Index: lcl/interfaces/win32/win32pagecontrol.inc
===================================================================
--- lcl/interfaces/win32/win32pagecontrol.inc	(revision 63021)
+++ lcl/interfaces/win32/win32pagecontrol.inc	(working copy)
@@ -58,7 +58,7 @@
 
 function ShowHideTabPage(TabControlHandle: HWnd; Showing: boolean): integer;
 const
-  ShowFlags: array[Boolean] of DWord = (SWP_HIDEWINDOW or SWP_NOZORDER, SWP_SHOWWINDOW);
+  ShowFlags: array[Boolean] of DWord = (SWP_HIDEWINDOW or SWP_NOZORDER or SWP_NOREDRAW, SWP_SHOWWINDOW);
 var
   TabControl: TCustomTabControl;
   PageIndex: Integer;

jamie philbrook

2020-06-01 16:49

reporter   ~0123167

Can you please place some comments in there about the severity of the effect so someone does not decide to put it back just because ?
I just applied that to my local copies and compiled a large app that suffered flickering issues with tab controls, maybe not as bad as this report was based on but It fix my issue.. I no longer has the flickers...

Thank you.

Martin Friebe

2020-06-01 21:07

manager   ~0123168

Applied.
Thanks, please close if ok

BrunoK

2020-06-19 16:10

reporter   ~0123478

No complaints -> close.

Issue History

Date Modified Username Field Change
2020-06-01 15:53 BrunoK New Issue
2020-06-01 15:53 BrunoK File Added: win32pagecontrol.inc.patch
2020-06-01 16:06 BrunoK Note Added: 0123163
2020-06-01 16:06 BrunoK File Added: win32pagecontrol.inc-2.patch
2020-06-01 16:49 jamie philbrook Note Added: 0123167
2020-06-01 20:38 Martin Friebe Relationship added related to 0022080
2020-06-01 21:02 Martin Friebe Assigned To => Martin Friebe
2020-06-01 21:02 Martin Friebe Status new => assigned
2020-06-01 21:07 Martin Friebe Status assigned => resolved
2020-06-01 21:07 Martin Friebe Resolution open => fixed
2020-06-01 21:07 Martin Friebe Fixed in Version => 2.2
2020-06-01 21:07 Martin Friebe Fixed in Revision => 63261
2020-06-01 21:07 Martin Friebe LazTarget => 2.2
2020-06-01 21:07 Martin Friebe Note Added: 0123168
2020-06-19 16:10 BrunoK Status resolved => closed
2020-06-19 16:10 BrunoK Note Added: 0123478