Commit graph

56865 commits

Author SHA1 Message Date
Alx Sa
009aa52cbb plug-ins: Initial DDS BC7 export support
We use Richard Geldreich's bc7enc_rdo
library to minimize the code changes required
in the existing DDS plug-in, and so it can
more easily be swapped out in the future.
2026-02-15 02:20:07 +00:00
Alx Sa
d35893890d path: Unescape imported path information
When we export paths in GIMP, we escape the <title>
text to ensure it matches the SVG specification.
On import, we were not unescaping the text. This resulted
in changed path names when copying and pasting within
GIMP itself.
This patch adds a call to g_uri_unescape_string () to convert
the escaped text back to its original format.
2026-02-15 00:17:57 +00:00
Alx Sa
57795c0c25 tools: Add arrow keys to Shear tool
Per user request, this allows you to use
arrow keys to adjust the shear tool.
Left/right move the shear on the X axis,
up/down move the shear on the Y axis.
By default, it moves one pixel at a time.
If you hold shift (similar to the move
tool), it moves based on the slider's
page increment setting (factoring in the
current zoom).
2026-02-14 22:36:08 +00:00
Jacob Boerema
44ee4ecdbf build: Fix MSVC gegl patch
I made a copy/paste error. This should fix it.
2026-02-14 15:25:54 -05:00
Jehan
3a3eccdf82 gimp-data: new RC3 splash image!
Also fix some icons for legacy icon theme.
2026-02-14 18:54:40 +01:00
Jehan
2b45e54b0c app: set the rasterized status properly on opening XCF files. 2026-02-14 18:30:37 +01:00
Jehan
b8e094416f Issue #15119: flipping link layers should not rasterize them. 2026-02-14 18:30:37 +01:00
Bruno Lopes
2e5bfd458c build/linux: Remove dangling .snap file on CI just in case
After the unsquashfs, the .snap file is simply not needed anymore.
The less the space we use, the better.
2026-02-14 14:19:20 -03:00
Bruno Lopes
552078ae75 gitlab-ci: Reduce Dockerfile RUNs aiming for less cached layers and faster VFS
Too much RUN calls are not efficient. First, VFS uses a lot of IO at each RUN;
second, each RUN is cached as layer (we had more than one hundred layer tags!).

(Not that this does not apply to Dockerfile2 which uses no layers.)
2026-02-14 14:17:27 -03:00
Jacob Boerema
b282074da8 build: update Use vs_module_defs for MSVC patch...
to be used after the corresponding MR is merged in GEGL.
See gegl!251
2026-02-14 11:31:29 -05:00
Marco Ciampa
7a70833251 Updated Italian translation 2026-02-14 17:00:52 +01:00
Alx Sa
b507aae3fc tools: Add alpha if crop can grow the layer
This patch conditionally adds an alpha
channel to a layer when using the Crop
Tool, under the following conditions:
1) "Selected layers only" is checked
2) "Allow growing" is checked
3) "Fill with" is set to transparency
4) The crop rectangle is larger than the
width or height of the layer
5) The layer does not already have an
alpha channel.
2026-02-14 14:23:39 +00:00
Bruno Lopes
5f7e82211c gitlab-ci: Compress GitLab Registry images
This compresses our images at push with ZSTD and default level 3.

This saves at least 90MB of storage from each Debian image and
190MB from each Ubuntu image. In total, we saved aprox. 690MB.
2026-02-14 11:19:23 -03:00
Jehan
794ea77223 NEWS: fix per Bruno's precisions. 2026-02-14 12:37:04 +01:00
Flynn Peck
761e17347d Add Cornish translation 2026-02-13 19:22:46 +00:00
Jehan
596044cd18 NEWS: update. 2026-02-13 13:39:17 +01:00
Alx Sa
11f131aa1f widgets: Use 64bit for HistogramEditor counts
Resolves #13014
In GimpHistogramEditor, pixels and counts are stored
as doubles. We previously converted them into 32bit integers
when displaying the values to the user.

As it is possible for the dimensions of an image to exceed the
limit of a 32bit integer, this could lead to overflow and negative
pixel counts.

This patch switches our display code to use 64bit gsize casts
for conversion to prevent this from happening.
2026-02-13 06:17:52 +00:00
Alx Sa
29f991cbf2 libgimpwidgets: Reorder GimpPropToggle docs
The documentation for gimp_prop_toggle_new ()
had "icon_name" and "label" in the wrong order.
This patch fixes the documentation to be consistent
with the API.
2026-02-13 05:29:53 +00:00
Alx Sa
31eb0d86cf core: Associate color profile with SBZ palette
Color profiles were not being correctly connected to
Swatchbooker imported palettes, because the path
was included with the profile name (so a direct comparison
did not match). This patch fixes this by comparing the suffix
instead. It also fixes some minor formatting issues.
2026-02-12 02:07:49 +00:00
Alx Sa
dbc1c55de4 core, dialog: Add Procreate swatches import support
Procreate swatches are zipped JSON files.
They contain an object array of HSB
color palette values. Newer versions of the
format also support different color models,
spaces, and color profiles.

This patch adds support for importing the
palette name, colors, and associated color
profile in the original HSB format.
2026-02-12 01:49:47 +00:00
Alx Sa
9e277c3944 themes: Define some margin-right values
240160f3 added some unintentionally margin-right values
for buttons in GimpSpinScale and the header icons in the
GimpLayerTreeView. This patch adds definitions to those
CSS styles to override the general addition of the 4px
margin-right values.
2026-02-12 01:30:58 +00:00
Bruno Lopes
c3ed54e8d7 build/linux: Build babl relocatable on Snap package
Closes: #14793
2026-02-11 11:12:30 -03:00
Anders Jonsson
9d09a70a58 plug-ins: set_rgba in Fog works on sRGB
In GIMP up to 2.10, the default color for the Fog filter
had linear RGB values (240, 180, 70), (#f0b446).

The set_rgba call that's now in Fog treated these normalized
values as sRGB, resulting in another, lighter color (#f8db8e).

Change to recalculated values from the definition at
https://en.wikipedia.org/wiki/SRGB to get the original color
again.
2026-02-11 13:15:19 +01:00
Bruno Lopes
e5c8b05064 build/linux: Update v7.12.1.tar.gz to 7.12.2 2026-02-11 08:50:26 -03:00
Bruno Lopes
bcb9f5c73a build/linux: Add super-privileged 'personal-files' interface to GIMP snap
See: #15547

This needs approval from Cannonical and allows migrating app data from
older versions as well writting current app data outside the sandbox.
2026-02-10 13:13:29 -03:00
Bruno Lopes
22e9ccf72d build/linux: Support 3P binary plug-ins on AppImage (if linked against Debian)
Closes: #15807 by preloading API-related libraries for 3P plug-ins sake.

This will only work if the .appimage is run normally (without extract), because
when extracted its APPDIR can be placed on dirs with spaces unsupported by LD.

It also requires plug-ins to be built with the Debian used for the AppImage.
But there is nothing new under the sun, this rule is valid for all packages.
2026-02-09 22:36:25 -03:00
Alx Sa
ec1dfb2e0c script-fu: Fix background color in Round Corners
When we call (gimp-context-set-defaults) in the
Round Corners script, we reset the background color
in addition to temporarily clearing out the other
context settings. This results in us always using the
default white background color for the "Add background"
toggle.
This patch saves the background color beforehand and
restores it before creating the background layer, so we
still use the user's preferred color for this layer.
2026-02-09 16:33:47 +00:00
Sveinn í Felli
885c07555d Update Icelandic translation
(cherry picked from commit 828e299347ed15b3433093e70454333c4d112e9e)
2026-02-09 16:15:08 +00:00
Sveinn í Felli
41ac0e5b08 Update Icelandic translation 2026-02-09 15:58:13 +00:00
Jehan
3d707b42e4 libgimpwidgets: have gimp_widget_get_monitor() work on Wayland too.
Our historical heuristic looking for the main monitor based on the
position of the center point in a widget just won't work on Wayland,
where reported positions are always (0, 0). This is the security policy
for this protocol.

Instead we must now use gdk_display_get_monitor_at_window() which is
meant to do the approximation of determining the monitor a surface is
in, for us.

This is one step of implementing color management for Wayland (#15827),
except we still need the code to get the ICC profile of a monitor (but
now at least, we know which monitor we are on).
2026-02-09 14:09:58 +01:00
Alx Sa
f08eff5cda core: Retain SamplePoint modes when copying images
Resolves #15833
When we copied images in
gimp_image_duplicate_sample_points (), we only carried
over their X & Y position, not their pick mode.
This patch adds calls to get the original pick mode and
to set it to the new sample point created in the copied
image.
2026-02-09 12:17:11 +00:00
Marco Ciampa
9ea1b90e45 Update Italian translation 2026-02-08 23:38:15 +01:00
Sveinn í Felli
6bc0c965b9 Update Icelandic translation 2026-02-08 21:38:39 +00:00
Sveinn í Felli
d45b4f1e56 Update Icelandic translation 2026-02-08 17:09:25 +00:00
Sveinn í Felli
0ac4c216b1 Update Icelandic translation 2026-02-08 13:34:57 +00:00
Sveinn í Felli
2221220dbd Update Icelandic translation
(cherry picked from commit 4bbe2291da7ded741f863a8813224cbfe3a1626a)
2026-02-08 13:19:19 +00:00
Sveinn í Felli
258bf43349 Update Icelandic translation 2026-02-08 11:49:31 +00:00
Sveinn í Felli
45fe3f6fac Update Icelandic translation
(cherry picked from commit f3b3df6cf227d39c20ec5be38f0b89b45ac54015)
2026-02-08 11:09:09 +00:00
Sabri Ünal
0351968424 Update Turkish translation 2026-02-08 08:56:57 +00:00
Alx Sa
a4b9e4c4db app: Don't show Welcome Dialog if images loaded...
...on start.
Users who open GIMP with images
(such as via the command line or drag & drop)
may not want the Welcome Dialog to
appear over their image.

This patch moves the check for files to be
above the code that loads the Welcome
Dialog, so that we can pass that information
to gimp_update_auto_check ().
If files are being loaded, we don't display
the Welcome Dialog (with the exception
of on first update, so users don't miss the
update information).
2026-02-08 00:43:36 +00:00
Jacob Boerema
fa0e95941d plug-ins: don't fail loading gflare files with Windows line endings
There was a report on reddit that the flare files on Windows were
stored with Windows (\r\n) line endings and that gradient flare did
not recognize these flare files.

Since these files are text files there is no reason not to accept
windows line endings. To do this, we adjust the header to not include
the line feed and check for the header as a prefix instead of the
whole line including line ending.

Also adjust saving to add the line feed separately.
2026-02-07 13:52:10 -05:00
Jehan
0d59f00b36 gimp-data: bumping again. 2026-02-07 17:50:28 +01:00
Jehan
f2e398df06 NEWS: update. 2026-02-07 16:36:22 +01:00
Jehan
947d42aa27 gimp-data: bump after latest gimp-splash.crop updates. 2026-02-07 16:22:42 +01:00
Jehan
d893aa373d Issue #11642: "images-delete" action not disabled when the selected…
… image's displays change in the Images dockable.
2026-02-07 00:39:12 +01:00
Alx Sa
cfba63a932 core, widgets: Don't remove inactive filters on merge
If a filter is inactive/invisible, it does not
affect the appearance of the drawable.
Therefore, when merging all active filters,
those filters should not be removed.

This patch adds conditional checks for
gimp_filter_get_active () and does not
remove filters on merge if it returns
FALSE. It also adds sensitivity checks in
the GUI so that the merge down button is
not active if there are no visible filters.
2026-02-06 21:50:13 +00:00
Jacob Boerema
02886e626d plug-ins: fix crash due to uninitialized ptr_array...
when loading a specially crafted PSD.
After fixing the issue in the previous commit, using the poc from that
issue, a new issue surfaced where the ptr_array used for
img_a->alpha_name did not contain any names. Trying to access the
first index then caused a crash, because apparently that is only
valid if at least one item has been added.

Let's fix this by only creating the ptr_array when we know for sure
that we are going to add an item.
2026-02-06 16:00:11 -05:00
Jacob Boerema
8cf2772f56 plug-ins: fix #15812 PSD loader: heap-buffer-overflow ...
in fread_pascal_string

In plug-ins/file-psd/psd-util.c, the function fread_pascal_string()
allocates a buffer with g_malloc(len) and reads len bytes from the file
into it. The buffer is not null-terminated, but is assumed to be in
later code.
This causes it to read past the end of its allocated region with a
specially crafted PSD, causing a heap-buffer-overflow.

Fix this by alloocating one more byte than its length and set that
to '\0'.
2026-02-06 15:56:07 -05:00
Jacob Boerema
84fb1b3ce5 plug-ins: Fix #15818 gfig crash and critical when opening saved gfig
When opening a saved gfig file that came with GIMP, I noticed
several criticals:
GEGL-CRITICAL **: 09:16:16.320: gegl_color_get_format: assertion
 'GEGL_IS_COLOR (color)' failed
After that the gfig plug-in crashed.

After examination I noticed that the initial style gets copied. In
the case of the default style this means the source and destination
are the same.
When duplicating our code first removed the GEGL color objects from
the destination style before assigning from the source. But because
they are the same, this leads to invalid colors. Before the change
to GEGL colors they were simple values where reassigning didn't matter,
but here it does.
Since the same function does other assignments with resources that
may cause later issues, let's just return right away if the source
and destination style are the same.
2026-02-06 13:36:46 -05:00
Bruno Lopes
7ac037e346 gimp-data: Bump to fix gimp-splash.crop path for macOS dmg 2026-02-06 14:36:36 -03:00