Commit Graph

53164 Commits

Author SHA1 Message Date
6e88ac559e app: forbid GeglOperationSink as layer effects on XCF load.
As suggested by pippin, it would at least prevent loading XCF which
would override local files using default GEGL operations. Normally these
ops which writes to file cannot be created through the GUI, but a XCF
using one such op could easily be constructed.

Of course, this doesn't block third-party ops doing similar things
without being sink operation subclasses.
2024-09-26 14:08:28 +02:00
9ee369690b libgimpbase: handle cases when fgets() may fail.
Fix:

> warning: ignoring return value of ‘fgets’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
2024-09-26 10:51:31 +02:00
9e4ff0f62f app: oups, using the string after freeing it! 2024-09-25 22:09:34 +02:00
2633291a55 app: don't try to convert mask when only the TRC changed.
E.g. changing from non-linear to linear without bit-depth change would
trigger a CRITICAL on mask conversion, because masks are always linear
anyway. Only the bit-depth change should trigger a conversion.
2024-09-25 22:03:05 +02:00
4803c62201 app: make some radio actions not sensitive when selected.
Rather than showing actions as active when they'll just be no-op, make
these inactive.

There are more to fix this way, but these 2 had been really annoying me
for some time because they are very often run.
2024-09-25 21:29:53 +02:00
f3cd852da8 app: return without doing anything when toggling the already active action. 2024-09-25 20:59:00 +02:00
a38d3d3028 libgimp: fix some copy-paste bug.
Thanks to Alx for spotting this one!
2024-09-25 12:06:44 +02:00
c8664bfdd6 Add Bengali translation 2024-09-25 02:34:47 +00:00
01af0f78c8 app, libgimp, pdb: Fix generation warnings
On generating our PDB files, we were
getting warnings about uninitialized strings.
This is because descriptions and authors
had been left off three .pdb files. Adding
these in resolved the warnings.
A new PDB author entry was also added
for Idriss Fekir.
2024-09-24 22:56:44 +00:00
33ec5b70b1 app, libgimp, pdb: fix our PDB script to try to interpret gi-docgen syntax.
Fixes:

> Possible unintended interpolation of @palette in string at /builds/GNOME/gimp/pdb/groups/image.pdb line 1692.
2024-09-24 23:29:33 +02:00
479fb9501a Add Bengali translation 2024-09-24 17:26:16 +00:00
3a0dd58b7f Update Ukrainian translation 2024-09-24 14:25:16 +00:00
439a5c9831 scripts: Remove last use of SF-VALUE
This patch replaces SF-VALUE in burn-in-anim.scm with
SF-ADJUSTMENT, allowing us to deprecate and remove
SF-VALUE from the API.
2024-09-24 13:12:25 +00:00
60a0a0e598 NEWS: fix latest NEWS update.
See: 8d5cd6f3d5 (note_2230413)
2024-09-24 12:18:48 +02:00
f8bdb07d91 Update Chinese (China) translation 2024-09-24 01:36:45 +00:00
8d5cd6f3d5 NEWS: update. 2024-09-23 21:43:39 +02:00
ad7264773e Update Slovenian translation 2024-09-23 19:05:46 +00:00
cd44eeb778 Update German translation 2024-09-23 19:05:03 +00:00
693817a424 app: add gexiv2 and exiv2 versions to crash data
For metadata related issues, it is often relevant to know the versions
of both gexiv2 and exiv2, so we add those here.
2024-09-23 18:24:48 +00:00
f84e4ee04d plug-ins: fix failure to write IPTC TimeCreated
The IPTC TimeCreated tag does not allow fractions of a second, while
Xmp.Photoshop.DateCreated (which includes the time) does allow this.

In our metadata editor we base our date/time on the last value and then
synchronize it with the IPTC date and time values.
While doing that, we did not check if the seconds had a fractional part.

To fix this we first check for the presence of a fraction by checking
for a dot in the time string.
Complicating factor is that a timezone difference may follow that,
which we want to keep if present. So we check for that too and
concatenate the parts we want.
2024-09-23 13:37:29 -04:00
151cb9c40c app, libgimp, pdb, plug-ins: rename gimp_palette_entry_[gs]et_*().
These function names look like they should be applied to a
GimpPaletteEntry, which is a type which doesn't exist in libgimp. This
naming is much more appropriate.
2024-09-23 18:37:27 +02:00
1b7f8533ee libgimp, plug-ins: fix a case of not showing dialog.
Fix a generic case when gimp_window_set_transient() is called on an
already mapped window: the handle argument was missing.

The part in bmp-export though, in fact, I am still a bit at a loss.
Somehow calling gimp_window_set_transient() was making the dialog not
showing up at all, yet kinda blocking the bmp plug-in (waiting for a
response to the non-displayed dialog) and various features in the main
GIMP GUI too.
Calling gtk_widget_show() first, before setting transient was enough to
make the dialog finally work as it should, but this is really not ideal.
I compared to other cases in other plug-ins where the set_transient()
function was called before the dialog was shown and it is working fine.
I just cannot find the proper reason. So this will do for now.
2024-09-23 18:20:46 +02:00
3bfda4f119 Issue #9477: remove gimp_image_[gs]et_colormap() from libgimp API.
They are now replaced by the more generic gimp_palette_[gs]et_colormap(),
hence making less of a particular concept of "image colormap". It's just
a palette attached to the image (and restricted to the image format).
2024-09-23 18:20:14 +02:00
2e1bf0e44c plug-ins: get rid of all remaining usage of gimp_image_[gs]et_colormap().
When I see that we are just using R'G'B' format with no space
everywhere, I'm pretty sure some of this code must be wrong (even though
for some formats, maybe only sRGB is supported, I am guessing that for
some others, the palette may be in specific color spaces).
This will have to be improved with time.
2024-09-23 18:20:14 +02:00
8fff258286 app: display in the set color space when a color dialog is not context-aware.
In particular, palette's colors will want to be shown in their own space
(which may in fact be the image's space, for indexed image's colormap;
or in various spaces for named palettes).
2024-09-23 14:33:50 +02:00
c26ca2339a app: store GimpPalette in GimpImageUndo, not a raw colormap.
Also make sure gimp_data_copy() also copies the proper palette format
restriction and apply it when necessary (e.g. setting the stored
colormap which is done when popping an image undo).

Otherwise we were losing format/space information, which was corrupting
color space when undoing then redoing.
2024-09-23 14:33:50 +02:00
16a2fc58ba libgimp: fixing "palette" libgimp API unit testing.
It was an equality because I think the conversion from palette format to
"RGBA float" should go through the exact same babl code path, however it
is done in the API. And that is the case on my machine where I get
indeed perfect equality. But apparently not on the CI.

Though I guess investigating further would not be a bad idea, let's
consider this a minor issue (as a general rule, comparing float with
epsilon is still a recommended software usage), and just add a comment.
2024-09-23 12:14:19 +02:00
8344d7c331 tools: more portability fixes.
Apparently mktemp with busybox (and no GNU coreutils) requires mktemp
template to be XXXXXX.
Thanks to pippin for raising this issue.
2024-09-23 01:18:14 +02:00
4b25148269 app, meson: disable GimpBacktrace on Linux without execinfo.h.
If execinfo.h was not found, do not try to compile gimpbacktrace-linux.c
because the backtrace() API is not optional there.

Also I'm further improving the meson summary, regarding "Dashboard
Backtraces". Rather than just yes/no to say if the traces are detailed,
let's go for finer-grained state, saying if the traces are completely
deactivated ("no", e.g. when execinfo.h is not found), or "rough" (when
libunwind and libbacktrace are not found) or "partially detailed" (one
of these is not found) and finally "detailed".
Also add info on missing dependency between parentheses to help
packagers find the proper dependencies to get to the "detailed" state.
2024-09-23 00:01:07 +02:00
df8b8015f2 tools: --preserve-root --one-file-system are not portable options.
pippin had trouble with it when using busybox. So let's test for them
(assuming they will show up in a `rm --help`).
2024-09-23 00:01:06 +02:00
9ad05ee6fa app, libgimp, pdb, plug-ins: change gimp_palette_set_colormap() to take a C array.
Similar to previous commit.
2024-09-23 00:01:06 +02:00
c60512514c app, libgimp, pdb: change gimp_palette_get_colormap() to return a C array.
GBytes are a bit annoying to handle, so I'm renaming the PDB procedure
to a private _gimp_palette_get_bytes() instead, and making a wrapper
function which returns a C array and both the number of colors or number
of bytes. The latter is needed for introspection (otherwise the binding
can't know the size of the C array), but for the C API, both these
returned integers can be considered redundant (since one can be computed
from the oher), so only one at a time is mandatory.
2024-09-23 00:01:06 +02:00
c3488ad0c5 plug-ins: port various plug-ins to gimp_palette_[gs]et_colormap() and …
… gimp_image_[gs]et_palette().
2024-09-22 23:26:33 +02:00
9bd69498ca app, libgimp, pdb: new gimp_image_set_palette() procedure.
When we want to set a full palette based on an existing one, no need to
request the full colormap from core to libgimp then back. Just set the
palette which is nothing more than an empty shell around a resource ID.
2024-09-22 23:26:33 +02:00
6a35118a8f app, libgimp, pdb: new gimp_palette_set_colormap() PDB procedure. 2024-09-22 23:26:33 +02:00
f66c9c1996 app: fix circle dependency of data attached to an image.
I had this case with the palette of an indexed image which had its own
reference to the image. So the image would never be freed until the
palette is freed, while the palette is freed in GimpImage's dispose()
code.

Make this a weak reference from GimpData instead.
2024-09-22 23:26:33 +02:00
78ee9f56d4 app: add a message on stderr when stray images are freed at exit.
This is not necessarily a core bug, so I can't put this message as a
WARNING or CRITICAL. It may just be a plug-in which left some image
over. Nevertheless it is still useful information for plug-in
developers, same as it can also help core developers to discover actual
core bugs (see next commit).
2024-09-22 23:26:33 +02:00
537c3bb2c8 app: don't inhibit or uninhibit when there is no GtkApplication.
I had the case when gimp_exit_idle_cleanup_stray_images() would clean up
some images on exit, apparently after the GtkApplication is itself
already gone.
2024-09-22 23:26:33 +02:00
d361ba4c9a app: do not run gimp_palette_view_select_entry() when there is no palette. 2024-09-22 23:26:33 +02:00
4708609395 app, libgimp, pdb: new gimp_palette_get_colormap() function. 2024-09-22 23:26:33 +02:00
aa31d22e9f app, libgimp*, pdb: new "format" type in the PDB.
We have a bunch of special-casing format passing through the PDB, but
either we were only passing the encoding, or else we were reconstructing
the full format through private intermediate functions. In the
space-invasion world, this is not right. Let's have a proper "format"
type for PDB which does all the relevant data-passing for us, once and
for all!

Note that I am creating a wrapper boxed type GimpBablFormat whose only
goal is to have recognizable GValue since Babl types don't have GType-s.
Moreover I'm not using the GeglParamSpecFormat either, because it just
uses pointers which again are a bit annoying in our various PDB code.
Having a simple boxed arg is better.
2024-09-22 23:26:33 +02:00
94c7ca6809 plug-ins: support saving the history of commands.
Since I use the Python console a lot myself to test GIMP API, the
ability to recall previously ran commands is extremely useful. Let's
just add support for this as an AUX argument. This was already done in
the Script-fu console, now in the Python console too!
2024-09-22 23:26:33 +02:00
85a686b8c5 libgimpconfig: do not add NULL to a GStrv.
gimp_scanner_parse_string() transforms the empty string into NULL, which
might be what we want elsewhere, but definitely not for GStrv since NULL
is the end flag for the string array.
2024-09-22 23:26:33 +02:00
79faa06693 script-fu: fix failure to load SF_FILENAMEs on Windows
A path on Windows contains backslashes, which got interpreted as
escape sequences in script-fu when selecting a filename by the call
to g_string_append_printf.
This caused failures in e.g. Stencil Chrome after selecting an
environment map image.

Use script_fu_strescape to escape the filepath, so that we correctly
interpret the Windows path.

See also
https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/1851#note_2225989
2024-09-22 17:34:09 +00:00
c4fb7b128c Update Chinese (Taiwan) translation 2024-09-22 17:01:16 +00:00
aff0e69036 Update Spanish translation 2024-09-22 15:50:51 +00:00
93fd9ca75f Update Chinese (Taiwan) translation 2024-09-22 13:54:04 +00:00
c5ab8d510d Update Polish translation 2024-09-22 14:41:00 +02:00
b3b466dcbc gitlab-ci: Do not trigger crossbuilds anymore
febb2126 was proposed temporarely while we had hope of having a fix.
Now, we have !1860 (apparently 99% done) but the main maintainer of
crossbuilds refused to look at it because he is focused on core code
until 3.0 so, with this timeframe, the commit lost its reason to exist.

So, to avoid keeping runners work unnecessarelly with abandoned jobs,
let's not trigger them ('when: never') as I proposed on IRC months ago.
2024-09-22 07:44:41 -03:00
f5804fa82b Issue #12063: CTRL+C handling breaks 32-bit build.
Should fix:

> error: passing argument 1 of 'SetConsoleCtrlHandler' from incompatible pointer type
2024-09-21 15:39:24 +00:00