In gimp_idle_run_async(), connect to the async's "waiting" signal,
and run the async func in the context of the caller in response, to
avoid blocking indefinitely.
(cherry picked from commit 30f509c84d)
In gimp_drawable_get_sub_preview_async(), use
gimp_idle_run_async_full() to render the preview in a low-priority
idle source when the drawable uses a validate handler (i.e., when
it's a group layer), to avoid rendering the preview before the
projection is done rendering, causing a noticeable freeze.
(cherry picked from commit fee159e6b4)
In gimp-utils, add new gimp_idle_run_async() and
gimp_idle_run_async_full() functions, having the same signature as
gimp_parallel_run_async[_full](), but running the async function in
an idle source on the main thread, instead of in a separate thread.
The 'priority' parameter of gimp_idle_run_async_full() specifies
the idle-source priority.
(cherry picked from commit 6733b153cc)
Recent code changes depend on 2.56 symbols, and no one seemed to
complain for 2.10.18, so let's just bump the requirement.
Furthermore, 2.56.0 and 2.56.1 have a Windows-specific bug we were
testing for, so let's just bump straight to 2.56.2.
...from an svg file
gimp_bezier_stroke_new_ellipse(): need to interpolate the path's head
and tail, not its tail and tail. Spotted by Massimo.
(cherry picked from commit 27e78849a2)
In the various libgimp data-selection functions, replace spaces
with hyphens in the callback-proc parameter names. Spaces in
parameter names are invalid, which is now enforced by GIMP/GLib,
causing procedure registration to fail.
When committing a transformation to a floating-selection layer, if
the selection mask is non-empty (probably a state we don't want to
allow, but one that can currently be achieved), and the tool-GUI
dialog is detached, gimp_transform_grid_tool_response() is called
*while* applying the transformation, leading, ultimately, to a
segfault.
Fix this by returning early when this happens.
(cherry picked from commit 11efe64736)
In file-psd, make the data_start and data_len fields of the
PSDimageres and PSDlayerres structs unsigned, to avoid potential
overflow/sign-extension.
(cherry picked from commit be7cace74e)
Add new Symbolic-High-Contrast and Symbolic-Inverted-High-Contrast
themes, which are automatically-generated high-contrast variants of
the (original) Symbolic theme. The contrast factor is settable in
the makefile, and is currently at 1.5 for both themes.
Rename tools/invert-svg to tools/svg-contrast, which now takes a
contrast-factor argument, and adjusts the input SVG contrast,
instead of just inverting it. Note that we can still use the tool
to invert icons, using a contrast of -1.
I didn't realize it because the meson build was returning 'windows' for
GIMP_BUILD_PLATFORM when I cross-built with Mingw-w64. But in the
autotools, it was storing "mingw32", which would not compare with our
gimp_versions.json. Therefore in GIMP 2.10.16, the version update check
would have worked, but not the revision check.
This fixes the problem.
(cherry picked from commit a5ea6d6b9b)
Allow horizontal scrollbars in all the Preferences dialog tree-
views, so that they don't limit the minimal width of the dialog (in
particular, the UI- and icon-theme tree-views may contain
arbitrarily-long paths).
(cherry picked from commit d868247fd9)
In GimpFgBgEditor, we currently use gtk_render_frame() in master,
and gtk_paint_shadow() in gimp-2-10, to draw a border around the
color FG/BG color areas. However, the former is relatively
subtle, especially with dark themes, and the latter is a NOP with
the pixmap engine, which is what our built-in themes use.
Instead, draw the border ourselves as a pair of black and white
rectangles, similarly to Photoshop.
Move the entire color-frame drawing functionality to a separate
function, to avoid code duplication between the FG and BG frames.
(cherry picked from commit fb1c086097)
In xcf_load_image(), suspend size updates for layer groups before
adding their sublayers, to avoid unnecessary intermediary size
updates. Resume size updates in reverse order, so that nested
groups are updated before their ancestors, after all layers have
been loaded.
(cherry picked from commit 63df5602a2)