- Fixes brushes sometimes including extra random pixels they're not supposed to, for example a two-pixel pencil.
- Fixes document sometimes being considered transparent
- Fixes brush/pencil/airbrush sometimes showing rainbowy (my hack representation of translucency) even though the color is solid
- Fix the contrast of (most) tool options in the new dark theme
- (There isn't very good contrast for the shape style options in this dark theme.)
- Simplify events for re-rendering tool options
- Re-render tool options when dropping in a .theme/.themepack file
"Invert Selection" was ambiguous, could mean selecting the opposite set of pixels.
"Rotate 90 degrees Selection" was ungrammatical.
I could template the names so that it was "Invert Selection Colors", "Rotate Selection 90 degrees", but for now, putting parentheses around "Selection" works fine.
`cancel()` inside `undoable()` action callback caused it to navigate history,
and it would navigate all the way to the start of the last pointer gesture because
`history_node_to_cancel_to` was only set on pointerdown, not taking into account non-pointer-gesture operations.
The point was to allow undoing Fill With Color when canceling, but with the old definition of `history_node_to_cancel_to` it would have needed to be set in scattered places.
Now I'm defining it where it can be null, and if it's null, canceling should just go back to the history node at the start of `cancel()` (after making history nodes if applicable by telling tools to finish).
- Remove the whole ugly hacky module. Most things only modify the canvas when creating undoables now. Only a few things modify undoables after creating them.
- Formally disable pointer operations playback, instead of just leaving it accidentally disabled.