New API function which rolls back the Undo buffer (which is snapshotted
upon a mousedown event ahead of calling the Magic tool's `_click()`
function.) Dangerous; use sparingly!
Filled Polygon uses this to prevent partially-created (aka unfinished
aka incomplete) polygons -- the preview lines and control points -- from
being recorded and wasting space in the Undo history, or reappearing
upon Redo.
TODO - Other tools (e.g., Clone) would certainly benefit from this.
TODO - Needs more testing to help identify any bugs/issues introduced
by this!
TODO - Magic API docs need updating.
This is probably a sufficient solution that will make
https://sourceforge.net/p/tuxpaint/feature-requests/246/,
'"Overlay" surface in Magic API', unnecessary.
Rotating brushes would not draw anything if you simply
click and release with no motion in between (unless brush
spacing was set to the minimum). It will now draw the
default "up" direction of the brush in that situation.
(h/t Pere for reporting)
Implemented by using a boolean that tracks whether there has
been any motion since a click; if not, the `brush_counter` is
forced to reset (to 999), to insist on `brush_draw()` blitting
something. (It used to always ignore if a rotational brush,
to avoid accidentally drawing in the wrong direction on release.)
The size option is being misused to allow different
color combinations: Red/Cyan, Red/Blue, Red/Green, and Magenta/Cyan
(there are others we could add, if only someone could figure out the
math :-D)
Note - If Tux Paint is running in "Novice" complexity mode, no choices
will be available; it will use Red/Cyan, as before.
h/t O'Hare The Rabbit for the idea
Added round erasers that only expose 25% of the background each
time you click and apply the eraser.
Reworked how erasers are handled in the code to make it easier
to add this.
Reworked how eraser icons are drawn in the selector on the right.
(Squares and non-fuzzy, non-transparent circles are solid;
fuzzy circles are solid in the center with a dithered edge;
transparent circles are entirely dithered.)
TODO
* Document the new eraser type
* Remove a visual artfact (XOR outline) when using Ctrl-Z to Undo
* Eraser icons turn from black to white when temporarily switching
to certain other tools (e.g., after prompts like Quit or Print,
or after using Save)
Updates the Bulgarian translation to 100%.
Also fixes an inconsistency in the translation of the word "click", replacing all instances with the variant, derived from English, since it makes it easier to understand the mouse is being talked about.
appstreamcli validate gets very upset if you have a trailing period in
the name of the app:
E: org.tuxpaint.Tuxpaint:116: name-has-dot-suffix P\u025bntiri Tukisi .
E: org.tuxpaint.Tuxpaint:119: name-has-dot-suffix Tuks il\u0259 \u015f\u0259kil \u00e7\u0259k.
The named values for <display_length> were removed in Appstream 1.0,
released recently. In their place, use integer values.
For the <requires> block, attempt to encode the same reasonableness
restrictions as are enforced on the windowsize setting. The code
requires the height to be at least 480px and the width at least 500px,
but there is no way to specify width versus height, just shortest versus
longest edge, so I just require that the shortest edge is at least
500px.
For the <recommends> block, 768px is the suggested number in the
appstream specification for laptops and tablets.
005c5f104dhttps://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-display_length