Commit Graph

46937 Commits

Author SHA1 Message Date
Jehan 8d8c77730c devel-docs: release-howto updated.
Update in particular the tarball creation steps. We now use tarballs
generated by the CI. I still leave information for doing it locally in
this howto, but mostly so that we can easily find this info for testing
or fixing dist bugs when needed. Other than this, if the CI works
flawlessly, a successful pipeline ends up with a proper tarball.

The main advantages of this approach are:

- Transparency: the full distribution process is now fully accessible on
  Gitlab, from the source, through the build (including all the logs)
  and up to the final tarball. Even the checksums are generated by the
  CI, making it easy to recognize if different tarballs were published
  on the download website or mirrors. This makes for a much safer and
  trustworthy publication process.

- Less bus factor: we don't rely as much on a single person to take care
  of the whole process.

- More automatization: a release still has to be prepared and verified
  manually (it always will), but at least the whole tarball creation is
  now automated. The next step will be to automate also the publication
  on the download server.
2021-04-29 20:21:30 +02:00
Jehan 0645bf6f0f authors.xml, README: update the authors list.
- Update last-active parameter to 3.0 for various people.
- Add Liam Quin, lillolollo, Stanislav Grinkov, Povilas Kanapickas and
  woob.
- Move myself to maintainer.
2021-04-29 19:24:26 +02:00
Rodrigo Lledó fa143017e7 Update Spanish translation 2021-04-29 11:21:49 +00:00
Jehan 2211ca7fd3 app: wait child processes with g_child_watch_add_full() rather than…
… waitpid().

My use case was when testing gimp_brush_select_new(). When doing tests,
if I let the brush dialog opened while letting the plug-in exit cleanly
otherwise, it somehow locked the process (I have stared so long at the
code and still don't understand why).
gimp_plug_in_close() would wait for it forever and the only way out was
to kill GIMP completely. I guess we could try to run waitpid() with
WNOHANG (and finally force-kill the child if it really won't exit) but
it made the whole logics extra complicated.

The logics with g_child_watch_add_full() is that we don't stop waiting
for the child and just set a callback to finalize what needs to be. Now
the worst case scenario would be to leave zombie processes dangling
around, but it's better than freezing GIMP.

Finally as a weird side effect, doing this change even unblocked the
process with an unfinished brush selector so we don't even have a zombie
anymore (at least for this specific case). All good in the end!

Last side effect: it can speed up a tiny bit the plug-in close as we
don't wait for processes anymore, which could be more visible at first
startups (when we reload all the plug-ins). Though there is nothing
scientific to my numbers, after multiple "first startups", it seems it
went down from about 3.5 to 3.2 seconds on my specific machine. Nothing
extra fancy, but we take what we can (and speeding up the startup was
never the goal of this change anyway). It doesn't affect Windows which
has its own logics to handle process termination and I preferred not to
touch it.
2021-04-29 02:19:41 +02:00
Asier Sarasua Garmendia 3d233695be Update Basque translation 2021-04-28 10:13:09 +00:00
Jehan 4ee3a9caa1 app: fix core crash when a plug-in calling a GimpPdbDialog crashes.
There are 2 parts for this fix:
- First expect the GimpPdbDialog to possibly disappear while
  gimp_pdb_dialog_run_callback() is running. This can indeed happen as
  this core dialog is tied to a PDB call. If the calling processus
  crashes (which may happen, and has to be expected for third-party
  plug-ins), then this dialog may just end up closing at anytime (signal
  "plug-in-closed" from the plug-in manager which implies a
  GTK_RESPONSE_CLOSE, hence dialog destruction).
  To account for this, we check the dialog availability with a weak
  pointer and returns the info to the caller as well.
- Don't connect to "value-changed" on the spacing adjustment because
  when a crash happened, I had cases when the adjustment was finalized
  while being set (crash in GTK code). This one is a bit harder to
  explain (I had to look long at backtraces) but having a proper signal
  "spacing-changed" on the GimpBrushFactoryView is actually much cleaner
  code than relying on a public object anyway and it fixes this crash.

Note: this fix is related to my previous commit. When running
gimp_brush_select_new() from Python code, the plug-in crashed when
trying to run the callback, which also resulted into core crash (and
this part is obviously not acceptable at all).
2021-04-28 02:47:24 +02:00
Jehan 2967ab7f82 libgimp: add docs and annotations for gimp_brush_select_new().
Somehow the callback doesn't work for bindings (at least Python binding,
python plug-ins crash when the callback is called), so we'll still want
to have a closer look at this.
2021-04-28 00:51:40 +02:00
Jehan 208921706a Issue #5475: Tablet pointer offset malfunction with scale ratio + …
… multi-monitor

Test the patch gtk!3275 on our development releases for validation.
2021-04-27 14:24:11 +02:00
Jacob Boerema fe228a6f6f plug-ins: fix #5960 Gimp loads 16 bit DDS images with luminosity as 8 bit.
So far all dds images were loaded as 8 bit per channel which makes
sense for most but not all dds formats.

This commit implements loading in 16 bit for "L16" - a 16 bit
luminance channel.

In addition to that we improve security a bit  by not assuming
that L16 is the only left over case but instead explicitly
checking the correct value of rmask for L16.

For other cases we now set an error with enough details
to identify the type of DDS image that needs extra
handling.
2021-04-26 17:35:04 -04:00
Jehan 88898dad95 gitlab-ci: improve the CI for releases.
- Only publish the bz2 tarball because that's what we currently provide
  on download.gimp.org (let's see in the future for the xz tarball).
- Generate also a sha512 checksum. It's better to do it on the CI rather
  than on the download server, otherwise it wouldn't protect against
  transfer errors (from gitlab to download server).
- Rename the checksum files to ${filename}.SHA256SUMS (512 respectively)
  for easy download without name clash with the global files listing all
  the previous releases.
- Disable all meson jobs for tagged releases. They are currently not
  reliable and may fail randomly (see issue #6257), even though without
  code problems (this is also one of the reasons why autotools is still
  our official build system and meson is still deemed experimental).
  It's ok for regular builds, but not for tagged builds, which we need
  as reliable as possible. The really important job is the distcheck one
  for tags.
2021-04-26 20:56:31 +02:00
Jehan 1e53985e4b configure.ac, meson.build: post-release version bump to 2.99.7. 2021-04-26 15:18:46 +02:00
Jehan bf1b405a74 Release development version GIMP 2.99.6. 2021-04-26 12:05:16 +02:00
Jehan 9b978467c1 devel-docs: update release-howto. 2021-04-26 12:05:16 +02:00
Jehan 842689c9d8 docs, etc: regenerate the default gimprc and its manpage. 2021-04-26 12:05:16 +02:00
Ngọc Quân Trần 8e77f7c3ec Update Vietnamese translation 2021-04-26 02:21:39 +00:00
Jehan 9b3611e517 desktop: release date pushed one day.
Same for the planned news date.
2021-04-26 02:20:15 +02:00
Aryeom Han 603e912dc3 Issue #6179: New Icon for Paint Select Tool.
Based on original very nice designs by Yash Arya.
2021-04-26 02:07:06 +02:00
Alexandre Prokoudine e9e92338f4 Update Russian translation: and then some 2021-04-26 00:25:20 +03:00
Alexandre Prokoudine 694d81de25 Update Russian translation (slightly) 2021-04-25 23:56:33 +03:00
Yuri Chornoivan ed6f1fec52 Update Ukrainian translation 2021-04-25 17:56:33 +00:00
Jordi Mas 5115fd8db9 Update Catalan translation 2021-04-25 19:06:54 +02:00
Jordi Mas 3950cc2c83 Update Catalan translation 2021-04-25 19:02:46 +02:00
Anders Jonsson 829b0da61e Update Swedish translation 2021-04-25 16:35:17 +00:00
Ian Martins c97cf30e6e pdb: add a PDB compat procedure for median-blur
(cherry picked from commit eb9eec4acb)

Reviewer note: with re-generated C files for the updated PDB in the main
branch.
2021-04-25 15:56:41 +02:00
Jehan b7a06795d6 desktop: fix release date (wrong month! Oups!).
Also put the news date to Wednesday because it's not ready yet, and
anyway we'll have to wait for mirrors' sync.
2021-04-25 15:46:28 +02:00
Jehan 423a6fe6d6 NEWS: update. 2021-04-25 13:30:38 +02:00
Jehan d977876363 libgimp: add missing API docs-comment for gimp_procedure_new_arguments() 2021-04-25 13:10:49 +02:00
Ngọc Quân Trần 3773490436 Update Vietnamese translation 2021-04-25 08:20:45 +00:00
Yuri Chornoivan b25a8c5beb Update Ukrainian translation 2021-04-25 07:50:26 +00:00
Jordi Mas 6b1ed7d722 Update Catalan translation 2021-04-25 07:14:10 +02:00
Jordi Mas 0c951e62da Update Catalan translation 2021-04-25 06:54:18 +02:00
Anders Jonsson 61a95a8cc9 Update Swedish translation 2021-04-24 23:08:41 +00:00
Jehan c8020c20a5 app: don't print a NULL insensitive action reason.
Print an empty string itself, otherwise it actually displays "(null)".
And anyway it's not clean code to use a NULL pointer in a printf format.
2021-04-24 23:26:33 +02:00
Jehan ef2402bf8e app, libgimp, pdb, plug-ins: allow pasting multiple full layers.
When a selection exists, we are copying then pasting the selection
contents. In particular, with multi-layer selection, it means pasting a
merged result of the selected layers (like a sample merged but limited
to selected layers).

Yet when no selection exists, with a single layer selected, a cut in
particular would remove the layer fully, then a paste would copy it
elsewhere (in the same image or even on a different image). This was
still working, but not with multiple layers. This is now fixed and we
can now copy/cut then paste several layers (without merge), which is
sometimes a very practical way to move layers (sometimes simpler than
drag'n drop, especially between images).

As a consequence, the PDB function gimp_edit_paste() now also returns an
array of layers (not a single layer).
2021-04-24 23:22:58 +02:00
Jehan 11e1f6ea5e app: fix out-of-gamut representation (pink triangle).
The small pink triangles were completely broken, i.e. displayed at the
wrong coordinates.
2021-04-24 19:32:13 +02:00
Jacob Boerema 165b50abcc plug-ins:fix #6624 metadata viewer default window size is too small
Let's increase the default size of the metadata viewer a bit.
Ideally we would add some logic to determine the width of
the first column since that one currently depends on the
length of the longest tag. However for now this change
will be enough for most cases.
2021-04-24 12:45:52 -04:00
Jacob Boerema ed35579861 script-fu: fix #6741 Round Corners script fails to work on layer masks
The round corners script was assuming that the drawable always
was a layer, which is incorrect when a layer mask is selected.

We fix this by always requesting the active layer instead of
active drawable.

We also enable this script for RGB and GRAY with alpha
channel. Although it might not always make sense to
use this script when an alpha channel is present, there
can be use cases where it is perfectly fine.

So let the designer decide if this script is suited or not
instead of GIMP making that judgement.
2021-04-24 12:41:41 -04:00
Jehan 69fdcf5d3f plug-ins: use g_mkdir() for generic cross-platform code.
This fixes the following error when building for Windows:

> error: too many arguments to function ‘mkdir’

On Windows, mkdir() is deprecated, it is an alias for _mkdir() which
doesn't have a mode parameter. The GLib version duplicates the POSIX
signature and is cross-platform (mode is simply ignored on Windows).
2021-04-24 17:03:43 +02:00
Jehan 472eec0bfb NEWS: update. 2021-04-24 15:51:36 +02:00
saul 11906fa82c plug-ins: Add 'dir-make' procedure to Script-fu.
Closes: GNOME/gimp#541

Reviewer note: thanks to Stanislav Grinkov for cleaning up and reworking
a bit the patch, such as renaming the procedure to dir-make, as per
Kevin Cozens' review.
2021-04-24 15:09:24 +02:00
bootchk c6fde64815 GIMP-CRITICAL: gimp_marshal_VOID__OBJECT_STRING_STRING: assertion 'n_param_values == 4' failed 2021-04-24 15:00:42 +02:00
Jehan d6dac25579 Issue #5008: Always true condition (i>=0) inside fill_inverse_cmap_gray.
Removing useless condition, add a g_return_if_fail() assertion for the
only (impossible unless bug) case which we don't expect. Also set
default mindist to G_MAXLONG instead of a magic number (which was ok now
but might become a problem if some day colormap allowed more than 16-bit
per channel colors).
Finally break when we reach a distance of 0 since we won't get lower
anyway, so better stop early.

Thanks to Rafał Mikrut and Øyvind Kolås for code commenting.
2021-04-24 14:48:22 +02:00
Jehan c0e605ef96 app: fix an assertion when converting grayscale images to indexed.
We cannot just compare the drawable format with the model-type specs of
the color model. We need to include the space now.
In my case, some random screenshot converted to gray then indexed would
assert because the format is "Y' u8-space-gray-sRGB" (or for layers with
alpha: "Y'A u8-space-gray-sRGB"), hence indexed conversion failed and
ended up dark.
2021-04-24 14:12:57 +02:00
Jordi Mas 1fcb2a3d68 Update Catalan translation 2021-04-24 11:59:24 +02:00
Yuri Chornoivan 6a1a0d51bb Update Ukrainian translation 2021-04-24 06:31:36 +00:00
Anders Jonsson 1d0b925d55 Update Swedish translation 2021-04-23 21:01:54 +00:00
Jacob Boerema cad6273fed plug-ins: fix #6755 DDS RGB10A2 has Red and Blue swapped.
Looking at the documentation it is indeed red that should go
in the lowest bits and blue in the highest bits so just
reverse our code for red and blue.

We also update the version of our GIMP DDS plug-in,
this way we can catch and correct RGB10A2 images
written by older versions of our plug-in and correct
them.
2021-04-23 14:31:50 -04:00
Jehan 13a02aea23 app: append insensitive reason to GimpAction proxy tooltip.
With my previous commit, I improved the search action display and search
algorithm (which was returning wrong results), but we had lost showing
the non-sensitive reason in menu item tooltips. This fixes it, by
actually appending the reason, but only in the end, on the GtkWidget
tooltip (not in the action's tooltip itself).
2021-04-23 19:48:37 +02:00
Jehan 811d356953 app: GimpAction now has a "reason" parameter to explain being disabled.
In some cases, in particular for actions generated from plug-in
procedure right now, we were displaying the reason of the insensitivity
(typically right now, only the drawable type is cited). This was done by
appending the reason to the tooltip, separated by 2 newlines, which
resulted in extra ugly design, no nice way to style this info directly
(with pango for instance if the widget display allows it, or on a
separate info widget in a possible future, or whatnot).

Also it would mean that the action search could match a disabled action
by mistake if a search word happens to be in the reason message.

This improves the situation with the following changes:
* gimp_action_set_sensitive() now takes an optional reason string to set
  the reason message.
* Same for gimp_action_group_set_action_sensitive().
* gimp_action_get_sensitive() returns an optional reason string.
* gimp_procedure_get_sensitive()'s tooltip return value now becomes a
  reason (it won't contain anymore the tooltip and the reason
  concatenated, only the reason for separate processing).
2021-04-23 19:43:30 +02:00
Anders Jonsson e1e4818ad5 Update Swedish translation 2021-04-22 21:07:33 +00:00