Branch: refs/heads/master
Home: https://github.com/synfig/synfig
Commit: 69dc1f7b9f06ba36273c393eebc29214e46a3e46
https://github.com/synfig/synfig/commit/69dc1f7b9f06ba36273c393eebc29214e46a3e46
Author: ice0 <[email protected]>
Date: 2022-06-23 (Thu, 23 Jun 2022)
Changed paths:
M synfig-core/src/synfig/debug/log.cpp
M synfig-core/src/synfig/filesystem.cpp
M synfig-core/src/synfig/filesystem.h
M synfig-core/src/synfig/main.cpp
M synfig-studio/src/gui/app.cpp
M synfig-studio/src/gui/duckmatic.cpp
M synfig-studio/src/gui/workspacehandler.cpp
M synfig-studio/src/synfigapp/main.cpp
M synfig-studio/src/synfigapp/settings.cpp
Log Message:
-----------
fix: Synfig does not start if the OS username contains non-Latin characters
(Windows) (#2650)
* Fixed a bug due to which Synfig does not start if the username contains
non-Latin characters (Windows)
Finally, I found a proper solution for the problem with file paths
containing non-Latin characters in Windows.
The main problem was that we are working with UTF-8, while on Windows
filenames use UTF-16. To work with files, we use the Glibmm wrapper,
which performs correct path conversion, but in some cases we need
standard cpp `std::fstream` objects.
Unfortunately, the standard implementation does not support `std::wstring`
paths. C++17 introduced support through the use of `std::filesystem::path`,
but since we continue to support c++11, this option is not suitable for us.
Luckily, both MSVC and MinGW support a non-standard constructor overload
using wchar_t, and on Windows we can use it. All that is required is to convert
the path to UTF-16 for Windows and leave it as is for other operating systems.
For this, a special method `FileSystemNative::path(...)` has been added, which
does all the necessary work of converting the path when necessary.
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl