Commit graph

56673 commits

Author SHA1 Message Date
dimspingos
e019e90f6f Updated Greek translation 2026-01-10 09:07:22 +02:00
dimspingos
d3ca4a2974 Updated Greek translation 2026-01-10 08:48:34 +02:00
Jehan
333ec9b163 NEWS: update. 2026-01-09 22:07:48 +01:00
Jehan
4d8ff3178e libgimpbase: add some API break warning for future improvement in the API.
Commit e735054347 clearly shows that gimp_range_estimate_settings() can
be improved, but it would not be possible unless we added some argument
to know if the increments are meant for an integer widget.
2026-01-09 21:50:16 +01:00
Jehan
ef69089881 libgimp: coding style fix. 2026-01-09 21:49:42 +01:00
Jehan
ec9c60ffcd app: also move the link loop verification inside the pre-check. 2026-01-09 21:35:31 +01:00
Jehan
76a255caa1 app: take into account possibility of NULL error.
Normally the error should not be NULL if file_open_layers() returns no
layers. But just in case, in order not to crash when we could avoid it,
let's double-check.
2026-01-09 21:35:31 +01:00
Jehan
85a9af435a app: remove wrong assert.
I added this in earlier test but in committed code, the file_proc is
only ensured after file_open_pre_check() returns.
2026-01-09 21:35:31 +01:00
Jehan
726dd4feaf libgimp: clean out ugly trailing whitespaces. 2026-01-09 21:35:31 +01:00
Alx Sa
5753ac75b4 libgimpconfig: Save legacy XCF grid colors...
...in GimpRGB format.
Resolves #14754

GimpGrid properties are saved and loaded
in XCFs as GimpParasites. When we
converted from GimpRGB to GeglColor
for the fgcolor and bgcolor properties,
we caused those properties to be lost
when saving a 2.10 and below compatible
XCF in GIMP 3.0+.

This patch adds new
gimp_config_get_xcf_version () and
gimp_config_set_xcf_version () API to
libgimpconfig's interface. This allows us to
pass the intended XCF version to the
parasite serialization process, and save
as either GeglColor or GimpRGB compatible
formats based on that value.
2026-01-09 16:53:33 +00:00
Bruno Lopes
4a63666c8e build/windows: Graphviz v13+ plugins config file is now config8
Yet, it will not work since MSYS2 is not distributing it anymore:
https://github.com/msys2/MINGW-packages/issues/27256
2026-01-09 10:51:55 -03:00
Bruno Lopes
f560c8a906 build/windows: Make install to GIMP_PREFIX message unambiguous locally 2026-01-09 10:47:08 -03:00
Alx Sa
f2eedcb6ec app/plug-in, app/gui: Fix initialization warnings
This patch moves two variables to prevent
warnings about variable creation mixing
with usage during build.
2026-01-08 23:50:12 +00:00
Bruno Lopes
33e638fe5d gitlab-ci: Slightly refine Windows artifact glob to not catch gimp-data dir
The 'n' letter is present on clangarm64, clang64 and mingw32 suffixes.
2026-01-08 20:14:29 -03:00
Jehan
3337d97786 app: only wait for fonts when loading XCF files.
I am factorizing the initial checks on files into a common function
which will also handle the data wait if needed.
2026-01-08 21:27:14 +01:00
Jehan
7374da53da plug-ins: plug-in-busy-dialog arguments should not depend on run-mode.
In INTERACTIVE or WITH_LAST_VALS modes, the arguments were replaced by
the latest values, which is typically not acceptable for this specific
plug-in. Even in interactive mode, we still want file descriptors to be
set explicitly, and used by the plug-in.

This fixes such error I had on terminal:

> (busy-dialog:193133): GLib-WARNING **: 20:34:43.692: ../glib/giounix.c:414Error while getting flags for FD: Bad file descriptor (9)

And the worst part was that it sometimes prevented the busy dialog from
quitting (though sometimes it still exited fine despite the wrong file
descriptors 🤷).
2026-01-08 21:27:13 +01:00
Jehan
326358a76a app: add some further sanity check.
Though the crash in #14139 won't hopefully happen again, thanks to my
previous commit, these additional assert may help in debugging if ever
it does again. Because truth is that even with partly-loaded fonts, this
was weird. If we had a GimpFont already, why did we fail to get a pango
font, or to query its file path through fontconfig?
2026-01-08 21:27:13 +01:00
Bruno Lopes
21a6b6bed8 build/linux: Update poppler-25.12.0.tar.xz to 26.01.0 2026-01-08 16:26:51 -03:00
Bruno Lopes
f1333f3ada Revert "build/windows: Build graphviz on MSVC pipeline"
This reverts commit 4b0f0cf820.

I forgot that we do not have mingw32 package for graphviz and
the vcpkg package started to fail out of the blue on MSVC.
2026-01-08 14:10:30 -03:00
Alx Sa
0da5e56a7b app/path: Add <title> to SVG import/export
In 84ff512c, we made the SVG id attribute
conform to SVG standards by using a
generic ID. However, we also relied on
that field to rename the path when copying
and pasting in GIMP. As a result, the path
name was lost.
This patch adds a <title> element inside the
<path> element, per David Gowers.
This allows us to retain the original
path name when copying and pasting
paths within GIMP itself, as this also adds
a check to see if there's a title element and
uses that as the path name.
2026-01-08 03:01:52 +00:00
Bruno Lopes
4e2463b688 app: Set GTK_IM_MODULE_FILE on internal macOS wrapper
This is needed to use im-quartz.so

(It will make no difference on the current gimp-macos-build scripts but it was
already not being defined so fine. It will work in the upcoming new scripts)
2026-01-07 23:01:28 -03:00
Bruno Lopes
5033a8b319 app: Default to 'quartz' IM on macOS for emoji keyboard support
This will work with upcoming changes that will set GTK_IM_MODULE_FILE too
2026-01-07 22:54:36 -03:00
Alx Sa
83a45b6824 plug-ins: Don't translate "ms" for WEBP animation
Resolves #15632
Since our code expects WEBP time to be measured in
ASCII "ms", translating it causes the time between
frames to be ignored. This patch reuses the string from
the GIF loading plug-in so that we always add milliseconds
as "MS", per Daniel Plakhotich.
2026-01-07 20:09:21 +00:00
Ondřej Míchal
e735054347 libgimp: Handle integer properties bound to GimpSpinScale in procedure dialogs
Setting a step/page size of less than one for a spin scale bound to an
integer property does not make sense. Similarly the number of decimal
digits shown can be set to 0.
2026-01-07 16:13:57 +02:00
Aurimas Aurimas Černius
04af22eef1 Update Lithuanian translation
(cherry picked from commit 94cbc1ae75)
2026-01-07 13:50:16 +00:00
Aurimas Aurimas Černius
d0b1f28565 Update Lithuanian translation 2026-01-07 13:38:23 +00:00
Jehan
1f68185cb1 NEWS: update. 2026-01-07 01:36:32 +01:00
Jehan
bf6fcac0a9 Issue #14139: wait for fonts to be loaded before loading files.
This was happening when trying to load a file before fonts were fully
loaded, which may happen when loading while starting GIMP (either from
CLI, or from a file browser, etc.), or simply just after start for
people with a lot of fonts, whose font loading may take a long time as
background task.

Note that I didn't manage to reproduce properly because from reports, it
seems like the problem appears where some fonts may be only partly
loaded so gimp_font_get_hash() fails to load the font and get a hash. I
never managed to trigger such a case and no reporters answered my call
for testing of debug builds.
As a consequence, I'll just assume that simply waiting for all fonts to
be loaded before starting to load images would work out.

Note that the crash was not happening when text layers were using the
older syntax (pre-XCF 19) of text layer data, since it was not storing
any font hash, which means that we were not trying to compare hashes. It
would also not crash if fonts were not fully loaded yet, but we didn't
have any weird intermediate state where fonts appeared in the list yet
their file were not hashable (cf. what I failed to reproduce, as
explained in previous paragraph). But both these cases were not ideal
either anyway because then we could load the XCF apparently OK… except
that the correct fonts would not be associated to the related text
layers (hence as soon as you start to edit said texts, the rendering
would break). So we should wait for fonts to be loaded, and that was a
bug even when you can't reproduce the crash.

When starting GIMP without loading an image, or simply when fonts are
loaded quickly enough, it won't make any difference. So it should not
make startup any slower for most common use cases and installations.
2026-01-07 01:06:20 +01:00
Jehan
56a17c73eb app: fix gimp_get_data_factory() to support returning the tool preset…
… factory.
2026-01-07 01:06:20 +01:00
Jehan
2b369c1f19 app: small style cleanup. 2026-01-07 01:06:20 +01:00
Jehan
9f18afd2b6 app: make sure main GIMP process is not frozen while waiting with gui_wait().
Even if we may have to wait for some feature, we may not want to freeze
the whole GUI. And this would also avoid the dreaded popup dialog from
the system which makes it look like the application is broken.

Finally in an upcoming commit, it will prevent the interface from not
being presented at all when loading images at startup (while fonts are
not loaded yet).
2026-01-07 01:06:19 +01:00
Jehan
bfd1ed0309 plug-ins: make plug-in-busy-dialog transient to the calling GIMP window. 2026-01-07 01:06:19 +01:00
Bruno Lopes
d96f47c35b build: Make Windows bundling script consistent with the upcoming macOS one 2026-01-06 17:15:37 -03:00
Alx Sa
b64faaaa26 plug-ins: Use WebPConfigLosslessPreset () for...
...lossless WEBP export
Resolves #15625

Per Daniel Plakhotich, we should use
WebPConfigLosslessPreset () when saving
lossless WEBP, so that the lossy quality settings
defined by the user don't override the lossless
values and unintentionally change the exported
file.
2026-01-06 20:04:18 +00:00
Bruno Lopes
0bca2158fe app: Organize macOS internal wrapper
This is both to make it easier to read and to  make easier to
customize (preparing to the almost-ready macOS scripts on our CI_.
2026-01-06 15:51:36 -03:00
Bruno Lopes
50daef259a build/windows: Update MSVC patch after a9991021 2026-01-06 14:11:04 -03:00
Jacob Boerema
41ab092e00 plug-ins: fix unitialized warning in psd loader
psd-image-res-load.c:1614:33: warning: variable 'init_fill' is
 uninitialized when passed as a const pointer argument here

Although where it is used it is initialized in the function call,
let's fix it to get rid of the warning.
2026-01-06 10:57:24 -05:00
Bruno Lopes
c8fd1d356a tools: Check LC_BUILD_VERSION before copying .dylibs
We should avoid macOS version mismatch on custom built libraries.
2026-01-05 22:20:03 -03:00
Bruno Lopes
a99910217a libgimp, meson: Port make-in-build-typelib to Python and fix build order
Seems this was the last .sh script pending to ported. Since I was experiencing
problems with the .sh one (not working locally nor on HomeBrew), I just ported.
Now, it is easier to read and fix if needed.

I also fixed the build order on libgimp meson.build to ensure the patched
.typelib being always present at the time GIMP generate splash screen etc.
2026-01-04 17:57:24 -03:00
Bruno Lopes
391008e42f tools: Handle installations where Meson python do not have python3 symlink
We do check for python with import('python').find_installation() then
check for GI module support for introspection. However, this python is
not necessarely the one that will be found by .py plugins at build-time.
That is because the found python by Meson can not have a python3 symlink
but the python3 symlink is the one in-build GIMP uses fowlloing the shebang.

So, to we proper build GIMP on such environments, we can create a symlink.
That is needed for MacPorts where multiple pythons exist without a symlink
but this is useful for all environments because python3 is now unambiguous.
2026-01-04 17:56:32 -03:00
Bruno Lopes
778d40f06c plug-ins: Do not call in-build-gimp.py before building plugins
We were already considering the plugins under /common but
not the plug-ins that have their own subdirectories. So,
plugin_executables did not match custom_plugin_targets and
the build started to fail on macOS where install_name_tool
neeeds to process the plugins setting the right LC_RPATH.
2026-01-04 09:39:02 -03:00
Bruno Lopes
c9ce259e9c gimp-data, tools: macOS assets are now built from Meson
Adresses #14236

We used to call ninja at Portfile, which is way suboptimal.
Now, we properly generate them from Meson if -Ddmg is true.
2026-01-03 22:17:18 -03:00
Bruno Lopes
cd4af46675 tools: Check for GIMP_TEMP_UPDATE_RPATH" binaries before patching
Similarly to what we do on tools/lib_bundle.py when setting LC_RPATH.
This is needed to avoid multiple install_name_tool conflicting.
2026-01-03 18:09:13 -03:00
Bruno Lopes
5bb91fa75c meson, gimp-data: Add '-Ddmg' option for control assets generation on macOS 2026-01-03 17:34:59 -03:00
Bruno Lopes
9a598a6fcd tools: Support for .framework on LC_LOAD_DYLIB section of lib_bundle.py
It will not bundle the framework but now correctly point to @rpath.

This will be specially useful since we do use Python.framework on macOS.
2026-01-03 15:10:21 -03:00
Jan Papež
9c22fafb75 Update Czech translation 2026-01-03 15:44:36 +00:00
Bruno Lopes
4b0f0cf820 build/windows: Build graphviz on MSVC pipeline
This is just for making the all-deps-uni.txt file consistent with
the upcoming macOS one.
2026-01-02 21:22:31 -03:00
Jehan
aeb3df266e Issue #13199: Text duplicated in pt.setup.isl lang from installer.
lang() XPath function selects too much because when used with a base
language, because it would also select any sublanguage. E.g. lang('pt')
selects both 'pt' and 'pt-BR'.

See: https://www.w3.org/TR/xpath-10/#function-lang
2026-01-03 01:10:12 +01:00
Bruno Lopes
83459c6eb2 meson: Let's check for libunwind.h
This is the header we use after all. And it
is also available on the MacOS*.SDK too.
2026-01-02 17:11:06 -03:00
Bruno Lopes
bb56770ed6 meson: Ensure unwind.h is interpreted as non mandatory
Following d0ca8bb9

It is not a required dependency.
2026-01-02 16:00:27 -03:00