I can then easily show you which lines of code to change to make things broken/fixed.This update is a hotfix for 5.0.4 that fixes loading images that have multiple frames (GIF or TIFF). I'm able to provide access to my solution/code for MSFT employees thanks to an NDA/license that and I set up a few years back. Everything will be completely, catastrophically broken. Anyway, close the window and then try all the things listed above (File->New, etc.). This is supposed to only affect the floating tool forms, since they're the only forms that use Opacity. Next, go into Settings (gear icon at top right of main window), then uncheck the box "Translucent windows". You should be able to launch things like File->New, Image->Resize, Layers->Rotate/Zoom, and run effects and adjustments and everything works fine. Launch the app by double-clicking paintdotnet.exe. Here's a ZIP of the "cursed" Paint.NET v4.3.6 build, in portable (self-contained deployment) form: It's just a total disaster.Įverything works great. The app will soft hang because modal progress dialogs don't close when they're supposed to. Dialogs aren't closing properly, layout is all broken, every new dialog is at the top-left corner of the screen instead of centered, etc. The behavior of the bug(s) seems to indicate some kind of disconnect between what WinForms thinks the handle is, and what handle Win32 is using, or maybe a disconnect between various parts of WinForms itself. My fix, which is in the frantically released 4.3.7 update, is to first check this.IsHandleCreated before grabbing this.Handle to manually set the form's opacity (via SetWindowLongPtrW() and SetLayeredWindowAttributes()). I do consider this to be a bug in my code, but it should only be a performance bug, and it's been working fine for literally 18 years (Paint.NET 1.0 was originally released in May 2004 on. it ain't broke so don't fix it? maybe?) When "Translucent windows" is disabled, this ends up causing the window handle to be created in my Forms constructor (in a common base class that all other forms derive from), after SuspendLayout() and InitializeComponent(), and right before ResumeLayout(false). (I may be able to remove this code now, but like. NET 1.1 in 2004, there was some bug with Form.Opacity that I don't remember the details of. Here is the change in 6.0.1 that is highly suspicious: #6114 cc my code, I'm setting the window's opacity myself via SetWindowLongPtrW() and SetLayeredWindowAttributes(). Completely scrambled dialog layout for things like File->New, Image->Resize, etc.Progress dialogs that never complete and can't be closed, resulting in a soft hang that requires Task Manager -> End Process. There's a big discussion on my forum that details the issue, the pleas for help and rollbacks, the troubleshooting, the discovery of a workaround in the app, and subsequently a test build that saved the day: ĭialogs always opening at the top-left of the screen, instead of centered or literally anywhere they're supposed to be I've since published a new update with that workaround fix applied and everything works fine. NET 6.0, I had very few changes in the new version, and the workaround I found suggests a change in behavior surrounding Handle, IsHandleCreated, OnHandleCreated(), OnHandleDestroyed(). NET 6.0.1, as it doesn't happen in the previous version of my app (v4.3.4) on. I'm pretty sure this was caused by a bug (or bug "fix" ?) introduced in. After quickly pushing out a hotfix (v4.3.6) for something that I broke in the code, I then received numerous reports of another catastrophic breaking issue that rendered the app completely broken.Īfter many hours it was finally determined that the culprit was having a certain app setting disabled (the default is enabled): "Translucent windows". Yesterday I rolled out a new update for Paint.NET, version 4.3.5.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |