Commit Graph

54188 Commits

Author SHA1 Message Date
13d2751446 build/windows: Update .isl patching situation regarding PowerShell capabilities 2025-02-23 08:15:01 -03:00
9042486dac plugin, macos: Fix #12711, #12898
This fix does not cause the problems that the alternative fix caused (as detailed in #12898).
2025-02-22 17:32:51 +00:00
ff5e3fdab6 libgimpbase and core: fix #12711 plugin hang on MacOS
This a bandaid for an issue on MacOS:
an IO event is received that says a read pipe from a plugin has data,
but the pipe is actually empty and reads hang, and hang the app.

Possibly this is an issue with GLib and could be fixed there,
to not send such a spurious IO event.

Possibly an alternative fix is to determine whether the app side of the
plugin protocol is in a state where no messages from the plugin
are expected.  In that case, the read pipe should be flushed
i.e. data discarded, with non-blocking reads, until a read returns nothing.
2025-02-22 17:32:51 +00:00
3a9dbbd4b0 Revert "app/plug-in: fix #12711 app hang on MacOS IO event on empty pipe"
This reverts commit 4b71ca6e44.

Breaks on MacOS, see #12711.
2025-02-22 17:32:51 +00:00
70843915d3 NEWS: update. 2025-02-22 13:52:20 +01:00
9b59e54457 Fixes to Catalan translation 2025-02-22 11:18:58 +01:00
ca6ea27c3e python: Update suggestion for GimpCoreObjectArray parameters
Resolves #12973
Since the standard 'drawables' argument for procedures
is now a GimpCoreObjectArray, the suggested syntax for
setting it in a Python call was incorrect. This impacts other
parameters as well, so we add a check for the argument type
being Gimp.ParamCoreObjectArray and then provide the
correct Python code to set them.
2025-02-22 03:45:55 +00:00
6076c4d4a6 Issue #12825: generate a help ID for any operation with "gimp:menu-path" key.
This is an alternative implementation for issue #12825, replacing commit
424ef17bac, after further discussion with Jacob.

Basically we don't need a new key "gimp:help-id" anymore. Instead, for
every action we add through a "gimp:menu-path" key AND when its name is
prefixed with "gegl:", we generate a help ID from the operation name.

The first few operations in such case already have a help page for them,
with corresponding help ID, in gimp-help repository.

In the future, we may expand this help ID generation rule to any
core operation (i.e. any operation prefixed with "gegl:") but for the
time being, we only do for the ones with a menu path, otherwise we'd
have too many missing pages.

Also fix again gimp_gegl_procedure_get_help_id() so that it searches a
help ID within all existing operations in the "filters" group, as I
realized that this was still broken in some cases.
2025-02-21 22:53:37 +01:00
29ba885985 app: fix help ID of hardcoded filters.
Help ID of filters with an explicit help ID got broken with commit
8c0fdb9cf0 (which was fixing help ID for filters added to menus with a
GEGL key).
2025-02-21 21:41:16 +01:00
b146b6255e Issue #12751: get rid of the direct exit() call in stable builds.
I pondered a lot about this one. In particular I wished we saw the leaks
earlier so that this change were in a RC (really unsure we'll have any
more RCs now).

On the one hand, I could tweak signal callbacks so that the callback
gui_exit_after_callback() is called before the fast exit(). But it feels
more and more like a hack over a hack.

Having 2 code paths depending on whether we are in a release or not is
ugly and would only hide bugs during the whole development cycle (as
proven here). Now when I read the comment, the part about speeding up
the quit process doesn't seem like it makes much sense these days (maybe
back then when this was implemented?). GIMP is fast to quit with or
without this.
Now the part where I worry is the problem of plug-in possibly still
running. Does it mean there used to be cases where GIMP would be stuck
at exit because of buggy plug-ins? I don't think I ever saw one of these
during the whole unstable cycle, and pretty sure we have code able to
kill plug-ins when needed. Even if not, by now, my preference would be
that, if ever someone were to report a similar case, we should just
improve our exiting code to kill (SIGKILL, without any chance of
avoiding it) any guitly plug-in.

This is why I finally decided to just get rid of this very old code.
For reference, the last time it was added was commit cdc2f0ded6 in
2004, though we can actually find older commits where it was removed
(921f00c13d), added (1db2ada311)… Looks like it used to be quite a
dance, but this is hopefully not needed anymore.
2025-02-21 21:15:48 +01:00
614fdfcd70 app: fix a CRITICAL when cutting when there is a floating layer.
Fixes:

> app/gimp-3.0: Gimp-Core-CRITICAL: gimp_image_remove_layer: assertion 'gimp_item_is_attached (GIMP_ITEM (layer))' failed
2025-02-21 18:45:28 +01:00
a435bc98e7 Issue #12851: crashed with seg fault using gimp-edit-cut. 2025-02-21 18:33:56 +01:00
543bb374a8 plug-ins: add some better error handling when the docs XML request/parsing fails.
In particular, we don't want to return/store a bogus GimpHelpLocale for
which the parsing actually failed.
2025-02-21 18:33:56 +01:00
b36787894f gitlab-ci, build/windows: Take simplier approach on ccache drop
The result is the same but more pleasant to see.
2025-02-20 21:31:06 -03:00
cbfd1152ad build/windows: Prettify MSYSTEM_PREFIX condition 2025-02-20 21:30:20 -03:00
ca70bce088 Update Catalan translation 2025-02-20 21:48:41 +01:00
8c0fdb9cf0 Issue #12825: implement a get_help_id() for GimpGeglProcedure.
This fixes the second part of #12825, which is that the help ID was even
wronger when editing a filter.
2025-02-20 20:21:56 +01:00
424ef17bac Issue #12825: new custom GEGL key "gimp:help-id". 2025-02-20 20:21:56 +01:00
f2d47e910b plug-ins: try to load the gimp-help.xml file in a thread.
I had a case where the GIO API ended just stuck and never returning.
This API is made to work in a thread so that you can cancel loading URIs
from the main thread. Let's make use of that.
2025-02-20 20:21:56 +01:00
87a22a7401 gitlab-ci: Re-order Universal and Windows vars respecting build-time and runtime 2025-02-20 16:12:26 -03:00
67827f8597 gitlab-ci: Fix 'apt' warnings on crossbuilds by seting TERM and DEBIAN_FRONTEND
Seems that Debian Testing 'apt' defaults to 'dialog' mode by default, which
produces warnings since the Docker image don't come with 'noninteractive' set.

These warnings are inoffensive but they pollute the job output. Indeed,
they were making some GIMPers a bit worried on IRC.

---

Also, added a comment about why we always use Debian Testing for crossbuilds.
2025-02-20 11:52:15 -03:00
d27828c00f build/windows: Improve MSYSTEM_PREFIX AND MINGW_PACKAGE_PREFIX detection 2025-02-20 09:11:57 -03:00
693f95a25c build/windows: Detect local MSYS_ROOT with PowerShell wizardry
This is useful only for local runs. There is no registry key on runners.
2025-02-20 09:11:53 -03:00
128b0b81cc gitlab-ci: Organize Windows variables puting GIMP_PREFIX on the front
That's how we do in the other platforms.
2025-02-20 09:11:49 -03:00
9e8f1b3a38 gitlab-ci, build/windows: Organize MSYS variables naming
Let's call 'C:\msys64' $MSYS_ROOT as vcpkg guys do (since
it is not a prefix, the real MSYS prefix is $MSYS_ROOT/usr)
and call the various shells by MSYSTEM_PREFIX.
2025-02-20 09:11:46 -03:00
127cd67118 plug-ins: Fix crash when loading CMYK JPEG 2000 images
When converting a CMYK JPEG 2000 image to RGB, we freed
the Key array. Since it is still in use, this caused the
plug-in to crash. This patch replaces this with lowering
the component content and letting the OpenJPEG clean up
process handle this work instead.
2025-02-19 19:00:57 +00:00
535d0183be core: Data security improvements per Wormnest 2025-02-19 16:47:54 +00:00
3a01b90c2d core: Add support for uncompressed 16 bit ABR brushes
Some ABR brush files have 16 bit grayscale masks, which fail to load.
This patch adds support for uncompressed versions of these brushes,
based on a provided sample file.
2025-02-19 16:47:54 +00:00
421186ecee Update Catalan translation 2025-02-19 07:30:37 +01:00
4a1dee4651 plug-ins: improve the progress notification for Script-Fu.
First of all, let's init with the main procedure label (stripped of
leading/traling spaces, of mnemonic underscore and of ellipsis) as
progress status for gimp_progress_init().

Then reuse this main label for all subsequent progress updates by the
same top procedure.

Finally "pulse" the progress at each update to make it more like
progression actually happens.

This is a first experiment to see if not having progress API in
Script-Fu is fine (#12948), by having better progression defaults.
2025-02-18 21:09:22 +01:00
9d7bfb4669 Issue #12940: GimpProcedure base class should default to GIMP_PROCEDURE_SENSITIVE_ALWAYS.
Note that I don't touch the GimpFileProcedure and children because they
are special-cased anyway. As for GimpBatchProcedure, ALWAYS is a good
default too.
2025-02-18 16:50:37 +01:00
7a2537de9a build/linux : Fix unwanted character in AppImage revisioning
Completing 57e91450
2025-02-17 21:03:58 -03:00
9ef88f3c88 app: re-add "gegl:hstack" to blacklist.
This was removed by commit 38b18de709 because this operation doesn't
exist anymore and was replaced years ago. Even though it was not wrong,
let's be over-cautious rather than not enough. What if someone had still
a binary of this old operation lying around?

This doesn't cost much to keep it in the list, so let's just do it (with
a comment to still document it doesn't even exist anymore).
2025-02-17 22:33:38 +01:00
f7b0a82cf3 NEWS: update. 2025-02-17 22:28:16 +01:00
5861be8d2b plug-ins: support GimpUnit type in Script-Fu.
Since the move of GimpUnit from some weird int/enum mixed type into a
proper object type, this was not usable anymore in Script-Fu.

Functions like (gimp-text-layer-new) were therefore broken. It now works
again.
2025-02-17 22:21:24 +01:00
4f44ef6ed1 app, pdb: add parameter validation for (gimp-text-layer-new).
Even though the libgimp wrapper has annotations, it is still possible to
pass a NULL font through, in Script-Fu for instance by not passing all
arguments (and very likely in a plug-in by calling the PDB procedure
directly rather). And unfortunately this would crash GIMP when it tries
to work on the NULL font.

Let's do some sanity check!
2025-02-17 22:21:24 +01:00
57e914507d build/linux: Complete AppImage revisioning code
It was first introduced in 131834d3 but was incomplete.
2025-02-17 16:01:23 -03:00
62bd4b30cb Update Italian translation 2025-02-17 16:33:41 +00:00
79568e3094 build/windows: Patch only the needed Inno lang files
The previous code was inconditionally patching all the lang files, even
the ones which we don't use. Let's fix that using the "langs*" arrays.
2025-02-17 12:32:31 -03:00
27a01b5ca8 build/windows: Supress noisy .gitignore creation on MSIX script 2025-02-17 10:10:24 -03:00
5e287e8bbe meson, build: Auto parse full 'config.h' for future-proof scripts
Now, we can use whatever variable we want from 'config.h' with its
value, unlike the previous code which was hardcoded and did not
worked at all for variables with custom values like GIMP_RC_VERSION.

(Note: there are still work to do with Inno scripts)
2025-02-17 09:51:19 -03:00
322002e389 Update Persian translation 2025-02-17 10:10:40 +00:00
1473a52704 build/windows: Do revisioning stuff with Inno scripting
Also, fixes CUSTOM_GIMP_VERSION format.
2025-02-16 18:58:11 -03:00
0fa421d874 po: update POTFILES.in 2025-02-16 18:33:33 +01:00
fd3fcf68a5 build/linux: Fix 'undefined symbol: gtk_module_display_init' error on AppImage
It was caused by GTK finding host's canberra or others modules, which
is goappimage fault: https://github.com/probonopd/go-appimage/issues/332

This bug will remain if the distro have some uncommon module (e.g.
appmenu, colorreload), since we don't ship them.
2025-02-16 10:49:58 -03:00
10e6642786 Update Catalan translation 2025-02-16 07:07:08 +01:00
626af9990f Update Catalan translation 2025-02-15 21:57:36 +01:00
29209fa219 Issue #12937: Bundle 'gio-launch-desktop' to fix AppImage unable to open links
Closes #12937
2025-02-15 16:57:43 -03:00
f6fb61f5fe Update Norwegian Nynorsk translation 2025-02-15 17:39:38 +00:00
61f380789e libgimp: all blurbs to GimpProcedure arguments are nullable.
Without this, we cannot set NULL (or equivalent, such as None in Python
3) when calling these functions in bindings.
2025-02-15 17:42:52 +01:00