This update should be a positive experience! In our last update we made an attempt to solely use zIndex to deal with element visibility, which sadly turned out to be impossible. It was worth a shot, but in the end the original idea turned out to be the correct way of doing things.
ZOrder is still there as a property, and you can set this directly if you need it. So all in all we gained a better understanding of what not to do, but we also solved what we set out to fix, namely how TQTXWindow can deal with it's bringToFront() and sendToBack() issues. Which is now dealt with properly, causing no problems with embedded IFrame widgets.
Other changes
The changelog for the previous update was massive, and all those changes still stand. It was only the zIndex that caused issues - which has now been fixed. Besides that we have also fixed a few hiccups with the IDE:
- Pressing CTRL + F while a search-dialog is active caused an access violation. This has now been fixed
- We have had problems with the file-change watcher thread. I have implemented a manager object for this so that ignoring or listening to changes is offloaded there rather than inside the thread itself. This has fixed the issue of BeginUpdate() and EndUpdate() calls to enable/disable watching for changes. Normally when the IDE does changes, it disables change notification to avoid reporting changes it already knows about (or is doing at the moment). This caused issues with the thread because changes require delicate handling of the changelog from the OS. So this fixes the issue
- Added watcher code for File-Added and File-Removed so that these are handled more carefully
- Added a OnItemDeleted event to TFileSource. When the filesource updates it's file-index, it will now report when files have been removed. This gives the IDE a chance to close whatever editor is active for that file, and also check-in the stream it might be holding for that file.
What's next?
Next to be fixed is the colors for SynEdit that affects non-pascal units. The color config must be expanded so you can chose what filetype you are defining colors for -- or if you want to use the same color coding for all files (might be easiest). The TSynHighlighter components have somewhat different properties depending on the language / filetype, so i need to take a closer look at what we can do there.
Then there is the fixups to the Ragnarok codegen
Finally, the timer for auto-synchronization of the AST (background compilation). This is already in place, I just need to agree with myself on some rules for when to update the AST and consequently, the visual overview of the unit.
Once the above points are done, I think the IDE is pretty smooth and good to go for version 1.0. The rest of the changes, like getting the new desktop app-model into the IDE is pretty straight forward and easy -- so I will save that for last.
Download
As always, backers can download from Patreon.
Hi Jon - just noticed this post and the reference to z-Index. Not sure if it's of use to you but I use z-Index extensively to control form visibility in my WebCore projects. The trick is to use the alpha channel to get opacity without affecting the child elements, e.g. in WebCore (where result is a container div):
result.ElementHandle.style.setProperty('background', 'rgba(255, 255, 255, 1.0)');
This style property is set when the div element is created in code, so only needs to be done once.
Cheers, Bob