Removed some code from FrameButton.gd since it's used in AnimationTimeline.gd, and removed the Global.hidden_canvases array, as... it did nothing? I don't remember what I made it for, I think it was for UndoRedo purposes but it's seems to be working fine without it.
The resulting camera zoom now depends on the window size. More specifically, the main viewport's x size. This formula is purely trial-and-error, and it may not work perfectly, or properly for some screen sizes.
If anyone wants to improve it, feel free to do so!
Besides the timeline buttons and color switch button being ready to have their changed shortcuts (when we implement them for these buttons) in their hint tooltips, there is no new functionality. This is merely to make the lives of translators easier.
This is the final commit of weird string IDs being replaced to actual sentences in Translations.pot
When the user clicked on a layer container to change its name and then clicked away, the program crashed. This was because the name of the layer was changed (`Global.layers[i][0] = new_name`), and Global.layers_changed() was being called, which removed all of the layer container UI and re-created it.
This is unneeded to happen when only the layer name changes, so I added a boolean to skip the execution of the method.
Oddly enough, the crash was not happening on Windows (at least on my end) and it was working as expected. Godot's output terminal was not showing any error messages, either.
You can add tags by right clicking on a cel and selecting "Add Frame Tag". No tag modifying and deletion is implemented yet.
I'm using a different ScrollContainer for the tags, which gets updated everytime the main timeline ScrollContainer gets updated. I hide its sliders from its theme, wish there was a more straightforward way.
The onion skinning button replaces the old onion skinning area of the timeline, but there's no way right now to change the settings. This will be added in a future commit. More UI changes will soon follow.
An attempt to draw an isometric grid. It behaves oddly on non-square canvas sizes, and on some grid sizes. For this reason, I'm not sure if it will be implemented in v0.7.
To test it, set Global.grid_type = Global.Grid_Types.ISOMETRIC
Every button will have a texture based on its frame AND its layer. Which means, if the button is on layer 2 and frame 1, its texture will be the contents of frame 1's layer 2 contents.