Commit graph

56904 commits

Author SHA1 Message Date
Alexander Alexandrov Shopov
24f1dd6956 Update Bulgarian translation 2026-02-21 18:07:02 +00:00
Alexander Alexandrov Shopov
53d55f0e1d Update Bulgarian translation 2026-02-21 17:44:58 +00:00
Alexander Alexandrov Shopov
1394b43fd6 Update Bulgarian translation 2026-02-21 17:27:14 +00:00
Jehan
9849f2eff7 app, pdb: factorize code for allowed filters.
The code to ban some filters for non-destructive usage was duplicated in
a PDB file and in the XCF load code. Additionally to combining these 2
codes into a single gimp_gegl_op_nde_allowed(), this commit also moves
part of the logic into gimp_gegl_op_blacklisted() which improves the
following:

* It used to be possible to create filters for hidden operations which
  were not returned by gimp_drawable_filter_operation_get_available(),
  such as "gegl:color" or "gimp:equalize", which would create all sorts
  of problems. Now trying to create these filters through the API will
  not work and will properly warn with an explicit error message.
  I do not consider this an API break since the filters were not
  returned in the available lists and therefore were not considered
  usable. Anyone who would have used any of these hidden filters was
  just going around a weakness in our implementation.
* We make sure that our lists of allowed/forbidden filters are
  consistent across usages.
* When getting the list of filters with gimp_gegl_get_op_classes(), we
  don't need to do an additional validation step (as we were doing until
  now in the PDB call). This is meant to imply that all returned
  operations were already validated.
2026-02-21 14:50:19 +01:00
Lukas Oberhuber
cb730621e6 Issue #11998: do not steal focus from spin widget when double clicking 2026-02-21 13:48:16 +00:00
Jehan
06fafe6f71 plug-ins: change to Unix newlines with dos2unix. 2026-02-21 12:22:56 +01:00
Jehan
3b9b300252 plug-ins: make GimpUi global when imported from a local scope.
This fixes Spyro Plus not running interactively after commit a7f02d4ee1.
Note that this seems to be the only plug-in which got broken by this
commit AFAICS.
2026-02-21 12:21:32 +01:00
Jehan
68b231cdf8 NEWS: oups! I had not saved some changes before committing. 2026-02-20 23:50:05 +01:00
Jehan
e2ca5e6e2e NEWS: update. 2026-02-20 16:46:10 +01:00
Jehan
831cae29db app: let's hide gimp:equalize from API.
This operation cannot be run from the public API right now because it
requires the "histogram" argument whose type is currently unknown to
libgimp/PDB.
Furthermore even if we were to add this type, there are some fundamental
issues with this op which makes it unsuitable (for now) as a
non-destructive filter:

1. Since the histogram is computed only once at op construction, it
   wouldn't be rebuilt when the source buffer changes.
2. Using gimp_drawable_calculate_histogram() doesn't build from the
   source buffer of the node anyway, but from the drawable buffer. This
   would mean a broken histogram as soon as the filter is inserted in
   the middle of other filters (anywhere but in the bottom).

We will need to fix these 2 points to consider using this as NDE (and
therefore also make it available in the API).
2026-02-20 16:16:04 +01:00
Jehan
e026538477 Issue #14486: have gimp:equalize work in non-linear space again.
This completes the commit by Alx, 2 commits before, which was indeed
part of the fix, but not the full of it.
2026-02-20 15:00:39 +00:00
Jehan
f8b7429a6c app: do not let trc uninitialized.
The trc variable could be initialized by the "trc" property, but even
though this is processed inside GimpOperationPointFilter code, the
property is only set in some of the child classes (such as Curves or
Levels). As a consequence, this was left unitialized and even actually
used in other child operations (unless they overrode prepare()). This
was the case of GimpOperationEqualize which was always working in
linear mode since GIMP 3.0 (see #14486).

Since uninitialized variables may end up as 0, which would have been
GIMP_TRC_LINEAR enum case anyway, this probably doesn't really change
the behavior. This is not guaranteed by C, but IIRC GObject zero-ed
object structs. Yet it is always better to be explicit.
2026-02-20 15:00:39 +00:00
Alx Sa
6949400a03 core: Fix Equalize TRC compared to 2.10
In GIMP 2.10, gimp_histogram_new () takes a boolean
parameter to indicate if it should be rendered in a linear
or non-linear TRC. In GIMP 3.0, this function instead takes
a GimpTRCType where 0 is equal to the linear enum and 1
is equal to the non-linear enum.

Since gimp_drawable_equalize () still passes FALSE as it
did in 2.10, this is treated as 0 and thus setting it as a linear
operation.

This patch changes the FALSE to be GIMP_TRC_NON_LINEAR,
both for clarify and to better match the 2.10 behavior.
2026-02-20 15:00:39 +00:00
Alx Sa
2af5aa651a tools: Don't disconnect rasterized layer signals
In the path tool, when setting a new vector layer as
the editable path, we try to disconnect the old signal for
gimp_path_tool_vector_layer_path_changed () from the
vector layer options. However, if this code is triggered
because we rasterized the vector layer while the path
tool was active, it will throw a warning because the
layer options are NULL. This patch adds a check to make
sure the options exist before trying to disconnect their
"notify::path" signal.
2026-02-20 02:48:05 +00:00
Alx Sa
4bfa65d72d core: Refresh new vector layers when pasting it
When copying and pasting vector layers, if we needed
to add a new path then the layer was not redrawn.
This would require the user to move or edit the path
to see the correct view of it.

This patch adds a call to gimp_vector_layer_refresh ()
after pasting it if it is not rasterized, in order to correct
the initial view.
2026-02-19 23:18:39 +00:00
Alx Sa
6ab235dc20 tools: Grab display from correct path's image
When copying and pasting a vector layer into
another image, the display would jump back to
the original image. This also happened if you
re-selected the pasted vector layer in the new
image after choosing another layer.

This patch makes sure that when updating the
selected path in the Path tool, it grabs the display
from the pasted vector layer rather than the old
image's path.

Note that this may be a "symptom" rather than a
root cause, due to a number of remaining issues
with copying and pasting vector layers.
2026-02-19 18:57:40 +00:00
Alx Sa
7bebb1d36b dialog: Reorder options to match dialog
The Canvas Size dialogue and the default options
for it in the Preferences dialogue were listed in
opposite order. This patch puts them in the same
order as the Canvas Size dialogue (Fill with, then
Resize Layers) to keep them consistent.
2026-02-19 13:27:50 +00:00
Anders Jonsson
139e23ab8b themes: Define System theme style for GimpPivotSelector
Follow-up to ed1e71917b, removing the button offset the same
way as for Default theme.
2026-02-18 18:40:20 +01:00
Jacob Boerema
04f3030371 plug-ins: fix #15274 Imagemap create guides dialog is too wide
The create guides dialog of the imagemap plug-in shows up very wide
due to the hint text not being wrapped.

To fix this we enclose the hint box inside a scrolled window and set
horizontal policy to GTK_POLICY_EXTERNAL and a minimum vertical size
of 100, based on how we do this in the export procedure dialog for
the comment field.
2026-02-18 11:23:56 -05:00
Bruno Lopes
03f3b1a741 build/linux: Use mirror-urls for flaky intltool sake 2026-02-18 12:15:15 -03:00
Bruno Lopes
c4f1dc697c build/linux: Make mypaint-brushes .patch self-contained in the Flatpak manifest 2026-02-18 12:15:15 -03:00
Alx Sa
ed1e71917b widgets, themes: Define style for GimpPivotSelector
This patch adds a CSS class name to
GimpPivotSelector so we can define its
CSS style in the GUI.
It also defines the margin-right CSS property
to prevent it be affected by the general
GimpOverlayDialog style.
2026-02-18 14:52:49 +00:00
Jacob Boerema
bffa26d995 libgimp: fix #15877 crash in export dialog with long comment line
Our export dialog resizes the width of the dialog based on the size
of the longest comment line. Apparently certain programs save data
that can be very long. On Windows I did not experience a crash, but
the dialog is many screens wide and unusable in that state.

To fix this we change the horizontal scroll policy to
GTK_POLICY_EXTERNAL because GTK_POLICY_NEVER apparently stops GTK
from resizing the window at a reasonable size.

We also set wrap mode of the comment field to GTK_WRAP_WORD_CHAR
to make sure the lines that consist of only numbers without spaces
get wrapped at a reasonable length.
2026-02-18 09:20:47 -05:00
Bruno Lopes
90a91c1395 build/linux: Update openjph 0.26.1.tar.gz to 0.26.3
Synced from: b00eb15620
2026-02-18 07:27:57 -03:00
Bruno Lopes
b9c0d099fe build/linux: Make libiff/libilbm .patch self-contained in the Flatpak manifest
Following e22ae3bfda
2026-02-17 21:29:30 -03:00
Bruno Lopes
e22ae3bfda build/linux: Make json-c .patch self-contained in the Flatpak manifest 2026-02-17 19:00:34 -03:00
Alx Sa
64cf55da70 themes: Define NDE popover theme colors
When we switched the NDE popover to use
GimpRow instead of GtkTreeView, it inherited
the `list row` style which is inverted in comparison.
This resulted in the "selected" filter looking like an
unselected row and vice versa.

This patch adds a more specific version of the theme
to GimpRow when it exists in the NDE popover widget,
to prevent this confusion.
2026-02-17 12:37:18 +00:00
Bruno Lopes
8f5966398a build/windows: Add Thai isl on iso_639_custom.xml after Inno 6.7.1 2026-02-17 08:54:58 -03:00
Bruno Lopes
a6105fc562 build/linux: Add limited global menu support for Flatpak
Synced from 9d0e24086b

This requires setting GIMP_GTK_MENUBAR as per:
https://developer.gimp.org/core/debug/debugging-tips/#debugging-the-menu-bar
2026-02-16 20:07:28 -03:00
Bruno Lopes
a7f02d4ee1 plug-ins: Fix some Python plug-ins query in headless environments
This fixes this unharmful message we were getting on macOS CI:

Gdk-WARNING **: 18:06:23.048: Failed to initialize CVDisplayLink!

The hard ones (spyro-plus.py, histogram-export.py and python-console.py)
were not touched for now, just the ProcedureDialog plugins were fixed.
2026-02-16 13:13:23 -03:00
Alx Sa
59e4aeff3f plug-ins: Use original DDS format on export
This patch adds a parasite on load that retains
the original import settings of a DDS
texture (such as compression, number of mipmaps,
and flags). This parasite is then checked on export,
and if it exists, we default the compression
format to the original to reduce the chance
the user will choose the wrong format for
the game they're creating the texture for.
The other data stored is not currently used,
but can be implemented in future commits.
2026-02-16 14:26:27 +00:00
Jehan
4deb6fad5a gimp-data: further improve Windows installer image script.
Current version had a cropped software name in it. This is a further
improvement on gimp-data#16, adding also some layer choice (otherwise we
are stuck just moving the crop window away, never able to get a possible
beautiful crop under the software name).
2026-02-16 13:31:25 +01:00
Jehan
a4a485359c gimp-data: bump to fix the DMG. 2026-02-16 12:37:37 +01:00
Jehan
0c5117e210 build: adding info about new Cornish language.
This was failing our build when -Dwindows-installer=true thanks to
integrity rules. Note that there is no iso-639 gettext module for kw, so
I found the "Kernewek" translation with Wikipedia.
There is no Inno code module that I could find.

Fixes:

> Error: languages listed in iso_639_custom.xml do not match the .po files in po/.
> - Faulting 'dl_code' on iso_639_custom.xml: kw
2026-02-16 12:09:54 +01:00
Marco Ciampa
040d800c8b Small fix in Italian translation 2026-02-16 11:38:47 +01:00
Bruno Lopes
6df22e2ba0 tools: Try to prevent race conditions on python3 symlink handling 2026-02-15 23:09:34 -03:00
Bruno Lopes
0d14a37975 libgimp: Make build-time .gir patching on macOS consider other libs
This does not fix any bug but reduces noise when some bug appears.
2026-02-15 22:00:42 -03:00
Bruno Lopes
ed9dbb91c9 build/linux: Update openjph module to 0.26.1 2026-02-15 18:49:24 -03:00
Alx Sa
d302310fb7 app, pdb: fix gimp_image_get_thumbnail() on high-bit depth image.
Applies f78a0629 and b420a773 logic to
gimp_image_get_thumbnail () so it
converts higher bit-depth images to 8 bits
for GdkPixBuf.

This affects plug-ins like GFig which use
a full image preview, as well as thumbnail
metadata exports and image combobox
previews.
2026-02-15 06:19:37 +00:00
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