In a freshly cloned repo, submodule directories exist but are not
empty. Check if they are empty and update submodules. Previously,
submodules where only updated if their directories did not exist.
Previously KeyList constants came from the GlobalConstants.hpp header,
but this did not work when compiling for HTML5. Therefore, we now get
the globals constants from the GDNative API.
Throws the error:
`LNK2019: unresolved external symbol godot_get_global_constants referenced in function "private: static void __cdecl godot::Terminal::_populate_key_list(void)" (?_populate_key_list@Terminal@godot@@CAXXZ)`
in GitHub Windows action. So use the old technique on Windows for now.
This is a prerequisite for HTML5 support.
Previously no arguments were provided, but by convention argv[0] should
be the name of the program.
Providing this argumens enables Psuedoterminal node to work on macOS.
- Uses matrix so that build steps don't need to be defined multiple
times.
- Caches godot-cpp bindings, so they only need to be built when the
submodule version changes.
- Uploads build artifacts for linux 32/64-bit, windows 64-bit and macOS
64-bit.
Move pre-built binary to 'dist' folder so it no longer causes git
conflicts with custom builds. Also make it a release build which
decreases its size by ~70M.
Former-commit-id: ea9954712062f6ab0f6af9a55d72f0324cd51e5f
This is important when terminal is a child of a Container node and we
set the margin properties, otherwise the background rect is drawn with
an offset.
Former-commit-id: e68d2f55c9
If a true color has been set it will have code -1 regardless of the
actual color. Therefore, it shouldn't be stored in the color cache
dictionary otherwise all true color cells will be colored the most
recently set value.
Former-commit-id: 0d14fd1e47
Most notably:
- Reflow is now working. Terminal size will fill the window and
cols/rows will be resized/calculated based on window and font size.
- Added support for different fonts (i.e. bold, italic, bolditalic).
- Enabled blinking characters.
- Adde more tests and caught a few subtle bugs.
- Removed renderer code (which was part of xterm.js) and just
doing naive rendering in terminal.gd, but it seems to perform
a lot faster.
Still not working completely:
- vim (some weirdness going on).
- vttest (more weirdness).
Todo:
- Fix the above.
- Draw the cursor!
- Improve performance. Performance is still not great. The terminal
becomes unusable when running `yes` or `cmatrix -r`.