This improves the performance when we are selecting GIF/JPEG options and
move the window. So the Editor can redraw the sprite without delaying
the rendering.
* Added she::FileDialog::setType() to select the different kind of
dialog (open one file, multiple files, save one file, open a folder)
* Added capacity to select folders with she::FileDialog
* Added she::CommonFileDialog so all native dialogs share common code
* Windows:
* Reimplemented using the IFileDialog COM interface introduced in
Windows Vista (this one supports choosing folders when
FOS_PICKFOLDERS flags is used)
* Added she::ComPtr<> utility class to Windows port (it might be
useful in laf::base in a future, or we might use the Microsoft
CComPtr or _com_ptr_t types in a future)
* GTK:
* Reimplemented to use gdk and gtk directly instead of using gtkmm
library
* Now it's centered on the given she::Display (instead of being
centered on the screen)
* Default location is the desktop instead of documents (this should
be configurable in a future "more generic" solution)
* Removed WITH_DEPRECATED_GLIB_SUPPORT and fixed compilation with GTK
file selector
This bug wasn't reproduced in other situations. Only when running
Aseprite from the app bundle. It looks like app bundles are dynamically
linked with a different free/delete implementation which zeroes/modify
the deallocated memory.
I've posted an answer to this kind of problem on macOS here:
https://stackoverflow.com/a/47817729
This is a weird combination of things:
1. StatusBar::onPixelFormatChanged() is being called in a non-UI thread
because ChangePixelFormatCommand changes the color mode from a
Job (background thread).
2. The UI layer is not prepared to work on multithreading, so all UI
stuff should be used in the main UI thread (anyway, generally, the UI
layer doesn't crash if it's used by multiple threads).
3. The harfbuzz library (used for TTF fonts) crashes if it is used by
multiple threads, so that was the trigger of this crash.
Several issues fixed from https://community.aseprite.org/t/750
- Don't apply flip/rotate commands to cels from locked layers
- Show a status bar tooltip when all selected layers are locked
- Keep the timeline range enabled after the flip/rotate command