There was a regression in eXpress++ build 260 that caused a flicker on tabpages when a tabpage receives focus.
Attached is an updated _DCCLASS.PRG.
This is for build 260 users only.
Copy _DCCLASS.PRG to your \exp19\source\dclipx folder.
Run BUILD19_SL1.BAT or BUILD20.BAT to rebuild DCLIPX.dll.
This fix will be in build 261.
Fix for Tabpage flicker problem in build 260
Fix for Tabpage flicker problem in build 260
- Attachments
-
- _dcclass.zip
- (40.75 KiB) Downloaded 760 times
The eXpress train is coming - and it has more cars.
-
- Posts: 605
- Joined: Thu Jan 28, 2010 9:11 pm
- Location: Steven Point, Wisconsin USA
- Contact:
Re: Fix for Tabpage flicker problem in build 260
This fix does not eliminate the problem. It minimized it a small part but it still occurs. When you switch from tab page to tab page, it basically displays/paints the screen twice. If I use Build 259, it only paints the tab page contents once. Switching to Build 260 causes the problem to occur. I traced the cause to the changes made in the _TabActivate Function, excerpted below. This code was commented out in build 260:
/*
IF !oTabPage:minimized .AND. !mp1
RETURN nil
ENDIF
*/
I inserted a WTF !oTabPage:minimized, !mp1 prior to the above commented out code and recompiled dclipx.dll. The results were .T.,.T. everytime I switched to a new tab page. So in build 259 and prior the remainder of the code in _TabActivate was never processed. Now since the code and RETURN nil is never executed because it is commented out, the rest of the function's code is executed. That code is causing the flicker/double painting.
The now executing code appears to handle the changing of the selected/unselected tab page colors. It would appear that it was never being called previously and that is why the code fragment was commented out with Build 260. I tried the 259 version of _TabActivate in build 260 and the problem disappeared. I then commented out the above code and the problem returned as now the rest of the function is being processed. Now, it appears to be repainting the tab page color all the time, even when the default colors are being used (no use of the MINIMIZEDCOLOR/MAXIMIZEDCOLOR parameters). It would appear that the issue would not be new to 260 specifically only that the commented out code now causes the problem to appear because the rest of the function code is now executed. The code has been in many versions but would appear to not be normally executed in the past.
I am working on extracting out a sample for testing purposes, but that will take until sometime next week. The screens need to be big enough to allow the repainting flicker to be easily seen. I am currently testing Build 260 by putting the commented code back in.
I looked at the
/*
IF !oTabPage:minimized .AND. !mp1
RETURN nil
ENDIF
*/
I inserted a WTF !oTabPage:minimized, !mp1 prior to the above commented out code and recompiled dclipx.dll. The results were .T.,.T. everytime I switched to a new tab page. So in build 259 and prior the remainder of the code in _TabActivate was never processed. Now since the code and RETURN nil is never executed because it is commented out, the rest of the function's code is executed. That code is causing the flicker/double painting.
The now executing code appears to handle the changing of the selected/unselected tab page colors. It would appear that it was never being called previously and that is why the code fragment was commented out with Build 260. I tried the 259 version of _TabActivate in build 260 and the problem disappeared. I then commented out the above code and the problem returned as now the rest of the function is being processed. Now, it appears to be repainting the tab page color all the time, even when the default colors are being used (no use of the MINIMIZEDCOLOR/MAXIMIZEDCOLOR parameters). It would appear that the issue would not be new to 260 specifically only that the commented out code now causes the problem to appear because the rest of the function code is now executed. The code has been in many versions but would appear to not be normally executed in the past.
I am working on extracting out a sample for testing purposes, but that will take until sometime next week. The screens need to be big enough to allow the repainting flicker to be easily seen. I am currently testing Build 260 by putting the commented code back in.
Code: Select all
STATIC FUNCTION _TabActivate( aTabPages, oTabPage, lFocus, mp1, mp2 )
LOCAL i, bWhen, bValid, nTab, j, aChildList, oParent := SetAppWindow(), ;
aTabColor, aColor, nColor
IF Empty(aTabPages)
RETURN nil
ENDIF
DEFAULT mp1 := .f.
IF Valtype(oTabPage) = 'O' .AND. oTabPage:isDerivedFrom('XbpTabPage')
/*
IF !oTabPage:minimized .AND. !mp1
RETURN nil
ENDIF
*/
nTab := oTabPage:tabNumber
bWhen := oTabPage:whenBlock
oParent := oTabPage:setParent()
ELSE
nTab := 0
ENDIF
IF (Valtype(bWhen)='B' .AND. !Eval(bWhen,oTabPage)) .OR. !lFocus
RETURN nil
ENDIF
aTabColor := DC_TabPageColor()
Re: Fix for Tabpage flicker problem in build 260
Roger,
Upon link for 1.9 sl1, I receive an error;
unresolved external symbol DC_BASEFONT
Upon link for 1.9 sl1, I receive an error;
unresolved external symbol DC_BASEFONT
-
- Posts: 605
- Joined: Thu Jan 28, 2010 9:11 pm
- Location: Steven Point, Wisconsin USA
- Contact:
Re: Fix for Tabpage flicker problem in build 260
I have been able to rebuild the sl1 dclipx.dll for build 260 without problem.
Re: Fix for Tabpage flicker problem in build 260
xBase 1.90 build 355 ?
Re: Fix for Tabpage flicker problem in build 260
Code: Select all
Upon link for 1.9 sl1, I receive an error;
unresolved external symbol DC_BASEFONT
This fix was for build 260 only.
It will give you an error if you copy the file to your 355 installation.
Roger
The eXpress train is coming - and it has more cars.
Re: Fix for Tabpage flicker problem in build 260
Roger,
No worries, I will update today.
Thanks.
No worries, I will update today.
Thanks.
Re: Fix for Tabpage flicker problem in build 260
Cliff -/*
IF !oTabPage:minimized .AND. !mp1
RETURN nil
ENDIF
*/
You are right. I compared code with build 259 and 260 and it was commented out in 260.
This may have been a remnant when I was working on Terry Wolfe's issue with angular tabs.
I probably was experimenting with this, but incorporated the solution elsewhere.
Here is an updated _DCCLASS.PRG.
- Attachments
-
- _dcclass.zip
- (40.76 KiB) Downloaded 795 times
The eXpress train is coming - and it has more cars.
-
- Posts: 605
- Joined: Thu Jan 28, 2010 9:11 pm
- Location: Steven Point, Wisconsin USA
- Contact:
Re: Fix for Tabpage flicker problem in build 260
Thanks.
Now it works like 259. The screen no longer is painted twice.
Cliff
Now it works like 259. The screen no longer is painted twice.
Cliff