Added `Primitives::drawSoftShadow` to draw simple shadows with primitives. Improved the shadow rendering adding correct rounded borders. UIWindow::drawShadow now uses this function.
Fixed a bug not displaying a recently create window when default transitions are enabled.
Plus some minor fixes.
Introduced a new configuration file for projects in the project file `.ecode/settings.json` file.
Initially it supports files associations the following way:
```json
{
"files.associations": {
"glob_pattern": "language_name",
"functional": "cpp",
"map": "cpp",
"**/c++/**": "cpp"
}
}
```
Format is exactly the same as in vscode, and also, if no `.ecode/settings.json` file exists but does `.vscode/settings.json` file exists, it will fallback to that one.
This is related to the discussion in issue SpartanJ/ecode#585.
* "convert-indentation-to-tabs" and "convert-indentation-to-spaces" (SpartanJ/ecode#667).
* "fold", "unfold", "toggle-fold", "fold-all", "unfold-all" (SpartanJ/ecode#683).
Added logic for file associations in SyntaxDefinitionManager, not used yet. Also added generic logic to detect languages from file path (specifically for C++ headers that contain file names without extension).
Minor changes in String.
Added "move-to-previous-paragraph", "move-to-next-paragraph", "select-paragraph", "delete-paragraph" (SpartanJ/ecode#670).
Updated codicon font and changed the AI Assistant main icon.
Improved `CommandPalette::build`.
Added a new UIMessageBox event: `Event::OnDiscard`, this will triggered when window is closed without confirmation (`Event::OnConfirm`). And now `Event::OnCancel` is only triggered when is manually cancelled (click the cancel button).
ecode: Greatly improved image viewing experience. Now you can switch images from the same directory with the mouse wheel, also zoom, translate and rotate the images, images open in a new tab by default but quick-preview can be activated in `Settings -> Window -> Quick Preview Images` (SpartanJ/ecode#96).
Fix a use-after-free bug in Font::getGlyph and FontTrueType::getGlyphIndex.
Some extra checks to avoid crash reported in SpartanJ/ecode#650.
Some minor improvement in auto-close brackets logic.
Added clone document buffer (SpartanJ/ecode#632).
Build ecode with -g1, it should improve crash information.
Regain editor focus after escaping from settings menu.
Prevent crash when during widget splitting (couldn't reproduce it but this just avoid crashing, SpartanJ/ecode#650).
Improved toggle-block-comment logic to take into account extra spaces between the open and close of block comments (improvement suggested in SpartanJ/ecode#625 for SpartanJ/ecode#604).
Improve TextDocument::fileMightBeBinary to avoid some false-positives.
Sanitize on load corrupted document line endings when \r\n are found but not expected.
Improve HExtLanguageTypeHelper::detectLanguage to avoid allocating memory.
Added String::readBySeparatorStoppable.
Added SyntaxDefinitionManager::isFileFormatSupported.
Added Objective-C++ highlighter (SpartanJ/ecode#616).
Replaced "Treat .h file as C++" in favor of "Treat .h files as..." with multiple options, including auto-detection (SpartanJ/ecode#614).
Refresh semantic-highlighting after syntax highlighter change.
Register `.h.in` and `.c.in` extensions (SpartanJ/ecode#567).
Slight refactor for Repositories, now it will hold a SyntaxRespository struct (to easily extend it in the future).