- This topic has 5 replies, 2 voices, and was last updated 15 years, 11 months ago by
Support.
-
AuthorPosts
-
May 22, 2009 at 3:17 pm #39319
Support
KeymasterMixture occurs when animating working seems. You can try to disable animation and look…
And thank you for the demo, I'll research it soon.May 22, 2009 at 3:55 pm #39325OldGrumpy
ParticipantMeanwhile I did some more research and I think there are two independent bugs. One is demonstrated in the sample project, the other one occurs in my main app only.
I am not sure how the second bug is triggered but it has definitely to do with switching skins. When I switch skins in my main app (done from a secondary dialog, not the main dialog like in the Alphaskin demo), the secondary dialog is visible but not modal. Immediately after switching the skin some repaint occurs and during that TsScrollBox.WMNCPaint() is called at a time where FCommonData.FCacheBmp is nil. This isn't checked and there is another branch in that function that explicitly sets it to nil… So I guess we're facing some kind of race condition. I set a breakpoint at that line (line 326) with the condition set to only break when FCacheBmp is nil. It doesn't break there until the skin is switched at runtime, and everytime after that again. So I guess something goes wrong during switching the skin.
May 25, 2009 at 12:32 pm #39336Support
KeymasterThank you for additional information.
Your second form (where skin is selected) must have not a skinning?
If SkinProvider is placed there then I do not see a problem…
In the your application this form haven't TsSkinProvider component too?May 25, 2009 at 1:38 pm #39339OldGrumpy
ParticipantThank you for additional information.
Your second form (where skin is selected) must have not a skinning?
If SkinProvider is placed there then I do not see a problem…
In the your application this form haven't TsSkinProvider component too?The second form is skinned, too. It has the same skin as the main form. Do I understand this right, each form needs a TsSkinProvider placed on it? My app looks basically like this:
TMainForm (has TsSkinManager and TsSkinProvider on it)
TSettingsForm (has no Manager and no Provider)CODETSettingsForm.sCombobox1OnChange(Sender : TObject);
Begin
TMainForm.sSkinManager1.SkinName:=sCombobox1.Items[sCombobox1.ItemIndex];
End;All Forms look skinned properly, i just noticed that something makes the sScrollbox code break as mentioned before. The breakpoint I set in line 326 is never triggered before changing the skin from the SettingsDlg, and gets triggered again and again afterwards. This makes me think that something caused that the two code branches are no longer synchronized properly. I added code to create a bitmap if it is missing, but I fear this could create a resource leak instead. I haven't had time to debug everything thoroughly. I could not reproduce this effect with code changes to the demo application, though. There has to be a very complex connection…
May 25, 2009 at 2:30 pm #39343Support
KeymasterThank you, I'm in researching and problem will be solved soon.
-
AuthorPosts
- You must be logged in to reply to this topic.