Redesigned UIDropDownList to inherit from UIDropDown which is a base class to handle different types of drop-downs. Added UIDropDownModelList which is the same as UIDropDownList but uses a UIListView by default so it's a model/view based DropDown.
Fix crash when changing states of the buttons in the build panel.
Increased the default animations speed.
Added support for SmallVector using svector (and we are already using it in a couple of places).
Added debug symbol inspector script for the new SmallVector in project/scripts/debug.
Added tilde support for files and folders passed as parameters from the CLI in ecode (and added FileSystem::expandTilde).
Fixed a bug in "light-dark" parsing.
* Fixed LSPDocumentClient::~LSPDocumentClient: It now explicitly calls `mDoc->unregisterClient(this);`. This ensures that whenever the client is destroyed—whether by the server shutting down or just the document closing—it cleanly detaches from the TextDocument.
* Fixed `TextDocument::notifyDocumentClosed` Iterator Invalidation: Since `onDocumentClosed` is called during a loop over `mClients`, and `LSPDocumentClient` now unregisters itself during that exact same loop, it was modifying the `mClients` `std::unordered_set` while it was being iterated (which is undefined behavior). I changed `notifyDocumentClosed` to iterate over a copy of the clients, safely allowing clients to unregister themselves when they receive the notification.
* A crash during debugging that happens due to invalid memory access (UIAbstractView + VariablesModel changes).
* A crash on ChatUI when closing a chat that was about to receive a server response.
Did some fixes in `Text::findCharacterPos` and `Text::findCharacterFromPos`, also tentatively added support for soft-wrap in those function (I haven't tested much yet).
Change the `Text::wrapText` implementation to use the `LineWrap::computeLineBreaks` function, so it's consistent across eepp. Also renamed the function to `Text::hardWrapText` to be more descriptive.
Added new-line support in `LineWrap::computeLineBreaks`.
Added UINodeLink, this is a very simple node that lets you set a link to another node.
Improved focus control in the status bar panels and windows.
It's possible now in UICodeEditorSplitter to cancel a split request with a custom function checker.
When downloading a file that it's not a supported format, it will try to open with the default external program set in the host OS.
Adjust `window-flags` behavior when used from CSS.
Display a download progress window when download-file-web is used. Also support loading images and sounds from downloads.
Minor safety checks added for engine termination and window closing.
Minor changes in Http.
Set language extension priorities per-project.
Added "reset-global-language-extensions-priorities" and "reset-project-language-extensions-priorities" commands.
Added FreeBASIC and QB64 syntax highlighting.
Fixed a minor bug that loaded the same language into memory multiple times.
Minor fixes in C and C++ grammars.
Debugger: Expressions are now evaluated as soon as they are added if debugger is running but paused.
Fix a newly introduced bug that incorrectly calculated string widths when string contained new lines.
Fix how `ECODE_SHAREDIR` is set.
Fix a very rare race condition in LSPClientPlugin.
Always resolve line number when locating files (do not enforce the need of the absolute path).
Add aliases for YAML and Markdown.
Fix a bug when initializing the LSP that provoked to not correctly send the initial commands.
Added `expand-text` to UIPushButton.
Added `setAcceptsDropOfWidgetFn` to externally control which widgets are accepted as droppable in UITabWidget.
Improved draw invalidation in UIStackWidget.
Fix emoji color positioning (broke in previous commit).
Prevent dead-locks in LSP *very* heavy usage scenarios (added a few logs i might remove later).
Enable auto-complete list highlighting by default.
Hack auto-scroll in terminal for Windows 11.
Renamed ScrollViewType and made it global, properties are now `overlay` or `outside`.
Added a couple of goodies for the terminal mode (retain side panel configuration and restore it if no terminals are left).