Commit Graph

53867 Commits

Author SHA1 Message Date
Bruno 5948f8176b
Issue #11734: Use Inno new 'x64os' architecture identifier 2024-11-30 18:13:24 -03:00
Alx Sa fda5981c52 pdb: Copy NDE filters on layers when using PDB
This patch adds code to also copy over
NDE filters when using the gimp-layer-copy
and gimp-layer-new-from-drawable PDB calls.
2024-11-30 14:11:54 +00:00
Alx Sa 2770cce833 pdb, operations, tool: Replace GimpContext with GeglColor...
in gimp:offset filter.
Since gimp:offset is now an NDE filter,
always loading the background color from
context causes the color to change each
time the filter is redrawn. This is inconsistent
behavior.

This patch replaces the GimpContext
parameter with GeglColor, and updates
gimp_drawable_offset and related functions
to set the color directly. The libgimp version
loads the background color from context
and passes it on since the API is now
frozen.
2024-11-29 00:29:36 -05:00
Alx Sa 626c1ff781 app/core: Fix importing LAB colors in ASE palettes
Resolves #12478

There was existing code to scale the Lightness value of LAB
colors by 100 to match the 0.0 - 100.0 range used in babl.
However, it was not actually running because the `color_space`
value was not being properly cleaned before the comparison.
2024-11-29 00:04:21 +00:00
Cheng-Chia Tseng 2aaeb55ac0 Update Chinese (Taiwan) translation 2024-11-27 19:16:20 +00:00
Alx Sa 54c46ea175 app/xcf: Don't override channel opacity on XCF load
When loading channels, the alpha value is stored separately from
the RGB value as "opacity". After the switch to GeglColor, we were
overriding the opacity values by always using "R'G'B" format, so
the loaded opacity was always reset to 100%.

This patch pulls the opacity value before setting the color, then
restores the opacity afterwards.
2024-11-26 23:51:55 +00:00
Alx Sa e409a74ec2 libgimpwidgets: Ellipsize GimpColorSelect color profile labels
Similar to 42300d9d, we want to prevent overly long color profile
labels from stretching out dialogues with GimpColorSelect too far.
This patch adds gtk_label_set_ellipsize () to both the color profile
and simulation profile labels, and adds them to a grid instead of
letting them free-flow.
2024-11-26 21:56:11 +00:00
Bruno 9149fd0727
build/linux: GTK_THEME code on AppImage is uneeded
Assuming that this var is needed seemed to be a error on my side. GIMP can
use the system theme out of the box in to my tests on Manjaro and Ubuntu.
2024-11-26 13:08:11 -03:00
Bruno 3bbcdbd325
build/linux: Drop LIBGL_DRIVERS_PATH for upcoming unstable AppImage
mesa 24.2, available on Debian testing, don't read this var anymore.
2024-11-26 13:08:08 -03:00
Bruno 72f2c0066c
build/linux: Do not bundle graphviz nor video drivers in stable AppImage
They are not needed since the "Debug" menu is hidden.
2024-11-26 13:08:04 -03:00
Bruno f8423e5e00
build/linux: Complete GJS bundling in AppImage 2024-11-26 13:08:01 -03:00
Bruno 444518da5d
build/linux: Move to edge appimagetool for static AppImage squashing
The latest appimagetool inserts a runtime with static libfuse in the .appimage.
It also makes the .appimage run way faster and slightly better compressed.

Thanks for helping me with this, @samueru
2024-11-26 13:07:56 -03:00
Bruno 8fe7ddf36c
build/linux: Set LD interpreter but unset LD_LIBRARY_PATH on AppImage
This avoids calling host libs, fixing the last pendency on !1440 desc.
In other words, the AppImage now can be run, in thesis, in any distro.

Thanks for helping me with this, @samueru
2024-11-26 13:07:53 -03:00
Jehan 10dc081c05 Issue #12469: Setting language to Chinese (zh_CN) in the preferences makes GIMP crash.
Make sure we always use the UTF-8 encoding, whichever the locale
language.
2024-11-26 22:26:40 +09:00
Rūdolfs Mazurs 4fcf9f7130 Update Latvian translation 2024-11-26 06:52:12 +00:00
Alx Sa 10b32c35b6 plug-ins: Read TIFF resolution correctly
Resolves #12468
In a2458f15, we converted xres and yres to gdouble since
gimp_image_get_resolution () requires doubles as arguments.
However, TIFFGetField () expects a float, and returns incorrect
values if a double is used as a parameter.

This patch converts xres and yres back to gfloat, and makes
new default_xres and default_yres variables as gdoubles to
use with gimp_image_get_resolution ().
2024-11-26 02:56:54 +00:00
Alx Sa 6a820e946f themes: Define GimpSpinScale slider padding values
We did not explicitly define the padding and margins for
the slider text and "progress" areas, which allowed for
system theme leaks. This patch defines these values and
makes the sliders visually closer to 2.10's style.
2024-11-25 19:57:36 +00:00
Rūdolfs Mazurs 7c275c96ed Update Latvian translation 2024-11-25 18:53:00 +00:00
Rūdolfs Mazurs 3a75022cf4 Update Latvian translation 2024-11-25 18:27:35 +00:00
Bruno 325074fec5 build/windows: Complete de3cf104 (regarding correct pyhton .exe)
I forgot to set rules to cleaning a previous Inno install. And they
need to be set since the previous .exe are from python3.11, not 3.12.
2024-11-24 17:37:32 +00:00
Alx Sa c24ac78afd dialogs: Restore focus to Layer Name in Layer dialogue
In 2.10, the "Layer Name" field in the Layer dialogue was
auto-focused (perhaps because it was the first field in the dialogue). 
This patch restores this behavior so users can type the name and
press Enter/Return to continue their new layer workflow.
2024-11-24 17:31:00 +00:00
Rupert 4730ec4eb0 plug-ins: avoid log-spamming by tiff plug-in
* last log I checked had over 30.000 tiff msgs
* limit tiff_io_warning() and tiff_io_error() to a max of 3 msgs
2024-11-24 16:54:46 +00:00
Rupert 08fa28d6f9 plug-ins: avoid log-spamming by sgi plug-in
last log I checked had ~12.000 'sgiGetRow...' msgs
2024-11-24 16:54:46 +00:00
lloyd konneker 5b077a9232 Fix #12344 PDF export crash w stack smash on flatpak
Fix overflowing RGB array on the stack.

Revise comments to say painting opaque.
2024-11-24 16:24:45 +00:00
Jehan b9bee21683 Issue #10874: crash when freeing uninitialized string.
Make sure the memory is 0-initialized because mapping->action_desc is
not necessarily initialized to an actual action.
2024-11-25 01:15:49 +09:00
Michael Natterer 64f45df6ce app: make sure pattern previews always have non-zero dimensions,
even if the pattern has an insane aspect ratio.
2024-11-24 16:58:52 +01:00
Jehan e7523ed412 Issue #11822: fix double-free in edge cases of broken XCF.
A patch was originally contributed by Andrzej Hunt in #11822 (cf.
0002-xcf-fix-channel-s-reference-counts.patch in the report).

The diagnostic of the double PROP_SELECTION issue is right, but not the
fix which was over-reffing, hence leaking channels and buffers, in the
normal cases, just to avoid double-free in broken edge cases.

The other issue is not possible though (unreffing the image's selection
when encountering an error in xcf_load_channel()) because we explicitly
check it it's the image mask AFAICS.

I added a second test which was not double-freeing yet which deserves a
bit of stderr messaging: when 2 different channels have PROP_SELECTION
set.

Relevant text from the commit message originally contributed by Andrzej
Hunt is the following (diagnostic and ASAN output still of interest):

----------------

xcf_load_channel creates a new channel using gimp_channel_new. This
channel has a floating reference (because GimpChannel is a subclass of
GimpItem, and gimp_item_init uses g_object_force_floating()).

Next, three different scenarios can occur:
 - xcf_load_channel_props does nothing, and we either return channel, OR
   in the error case we g_object_unref (channel) which frees channel.
   The returned channel is either silently dropped (in the case where
   it's already been set as the mask), or added to the image using
   gimp_image_add_channel if not (which sinks the floating reference).
 - xcf_load_channel_props encounters a single PROP_SELECTION. We create
   a selection using gimp_selection_new (which again has a floating
   reference), transfer ownership of the new selection to the image
   using gimp_image_take_mask(), free the old channel, and finally set
   channel to point to this new selection. Back in xcf_load_channel, IF
   we hit the error case, we call g_object_unref (channel), which frees
   the new selection - but we're still using it as the image's mask,
   meaning we could eventually hit a use-after-free whenever someone
   reads the mask.
 - xcf_load_channel_props encounters 2 PROP_SELECTION's. After the first
   PROP_SELECTION, channel is pointing to the image mask, which has
   reference count == 1 (as explained above). When we hit the second
   PROP_SELECTION: we create another new selection, followed by calling
   gimp_image_take_mask() again. gimp_image_take_mask() call
   g_object_unref() on the old mask, which frees it - but channel is still
   pointing to this mask. We then call g_object_unref() on channel, which
   is effectively a double-free.

We fix this by making sure to always ref_sink whatever object is put
into channel. gimp_image_take_mask also calls ref_sink, which means
we'll now bump the refcount up to 2 when the channel is being used as
the image's mask (and drop back to 1 if the mask is replaced, and down
to 0 when channel is unref'd).

See also ASAN output below from the 2x PROP_SELECTION scenario:

==6381==ERROR: AddressSanitizer: heap-use-after-free on address 0x6150000047d0 at pc 0x7fb5531ef31b bp 0x7ffe81e86cb0 sp 0x7ffe81e86ca8
READ of size 8 at 0x6150000047d0 thread T0
    #0 0x7fb5531ef31a in g_type_check_instance_cast /home/ahunt/git/glib/_build/../gobject/gtype.c:4117:26
    #1 0xb2346b in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1742:41
    #2 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9
    #3 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17
    #4 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19
    #5 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17
    #6 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
    #7 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6
    #8 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9
    #9 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #10 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349)
    #11 0x4e0829 in _start /home/abuild/rpmbuild/BUILD/glibc-2.26/csu/../sysdeps/x86_64/start.S:120

0x6150000047d0 is located 336 bytes inside of 504-byte region [0x615000004680,0x615000004878)
freed by thread T0 here:
    #0 0x5e8612 in free /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:127:3
    #1 0x7fb552d9ce08 in g_free /home/ahunt/git/glib/_build/../glib/gmem.c:199:3
    #2 0x7fb552dc7a6b in g_slice_free1 /home/ahunt/git/glib/_build/../glib/gslice.c:1183:7
    #3 0x7fb5531e7b04 in g_type_free_instance /home/ahunt/git/glib/_build/../gobject/gtype.c:2008:5
    #4 0x7fb5531bfe3a in g_object_unref /home/ahunt/git/glib/_build/../gobject/gobject.c:3604:11
    #5 0xd4d4d4 in gimp_image_take_mask /home/ahunt/git/gimp/app/core/gimpimage.c:3267:5
    #6 0xb23438 in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1739:13
    #7 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9
    #8 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17
    #9 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19
    #10 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17
    #11 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
    #12 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6
    #13 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9
    #14 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #15 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349)

previously allocated by thread T0 here:
    #0 0x5e887d in malloc /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3
    #1 0x7fb552d9ccf2 in g_malloc /home/ahunt/git/glib/_build/../glib/gmem.c:106:13
    #2 0x7fb552dc72e0 in g_slice_alloc /home/ahunt/git/glib/_build/../glib/gslice.c:1072:11
    #3 0x7fb552dc78ae in g_slice_alloc0 /home/ahunt/git/glib/_build/../glib/gslice.c:1098:18
    #4 0x7fb5531e6e0a in g_type_create_instance /home/ahunt/git/glib/_build/../gobject/gtype.c:1911:17
    #5 0x7fb5531c215e in g_object_new_internal /home/ahunt/git/glib/_build/../gobject/gobject.c:1945:24
    #6 0x7fb5531c1d1f in g_object_new_valist /home/ahunt/git/glib/_build/../gobject/gobject.c:2288:16
    #7 0x7fb5531c0e8b in g_object_new /home/ahunt/git/glib/_build/../gobject/gobject.c:1788:12
    #8 0xdb7260 in gimp_item_new /home/ahunt/git/gimp/app/core/gimpitem.c:722:10
    #9 0xce1668 in gimp_drawable_new /home/ahunt/git/gimp/app/core/gimpdrawable.c:1067:14
    #10 0xe283e9 in gimp_selection_new /home/ahunt/git/gimp/app/core/gimpselection.c:626:13
    #11 0xb2342a in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1735:15
    #12 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9
    #13 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17
    #14 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19
    #15 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17
    #16 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15
    #17 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6
    #18 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9
    #19 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10
    #20 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349)

SUMMARY: AddressSanitizer: heap-use-after-free /home/ahunt/git/glib/_build/../gobject/gtype.c:4117:26 in g_type_check_instance_cast
Shadow bytes around the buggy address:
  0x0c2a7fff88a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c2a7fff88b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c2a7fff88c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c2a7fff88d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2a7fff88e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c2a7fff88f0: fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd fd fd
  0x0c2a7fff8900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
  0x0c2a7fff8910: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c2a7fff8920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2a7fff8930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c2a7fff8940: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==6381==ABORTING

( crash-c35bcae86d35ce7d0cd8ffcb41a470f37354e018 )
2024-11-25 00:54:02 +09:00
Bruno 3b90d0b845
gitlab-ci: Fix untested commit that broke CI
b9f81e1c broke CI because it is a CI-related change but not tested on CI.
Despite https://developer.gimp.org/core/maintainer/giving-developer-right/
not making previous CI test mandatory, it is reasonable to do, even the infra
being sick. That is not the first time our CI got broken by lack of testing.
2024-11-24 10:59:15 -03:00
Anders Jonsson 52296cd3eb themes: fix System theme color for ink tool nib
Like in #11964 for Default theme, the nib handle for the ink
tool is invisible on the System theme. Fix this by adjusting
the solution in a4f9e7e89a for use with the System theme.
2024-11-24 13:03:19 +00:00
Jehan 986736f57f Issue #12433: do not show the unsupported fonts message on startup.
It seems any installation will have a lot of them (mostly because of
bitmap fonts which are now unsupported by Pango) and the message
startles people who believe there is something broken with GIMP.

Let's just not show this message on stable release builds, yet still
keep it on stable development builds (and all unstable builds, even
releases), because it is informative and keep us aware of this
limitation (which we hope to someday get rid of, i.e. get back support
of bitmap fonts, as well as any font format!).
2024-11-24 20:49:53 +09:00
Jehan b9f81e1c0f gitlab-ci: add a more explicit error message when existing at the `git diff` CI test. 2024-11-24 20:38:26 +09:00
Jehan 74eb242587 pdb: sync enums.pl generated file with source.
My commit 0b792c22a4 was a beginner mistake as pdb/enums.pl is a
generated file. I also need to fix the source otherwise `git diff` will
always differe when generating the file.

Our CI in particular verifies that `git diff` is always empty so this
was breaking our gimp-debian-x64 CI job.
2024-11-24 20:34:43 +09:00
Jehan 58038990dc gimp-data: temporarily use Default icons as replacement of missing Legacy ones. 2024-11-24 08:51:21 +09:00
Alx Sa 7f09826d23 plug-ins: Fix fractal explorer crash related to color-mode
In activate_fractal (), we copy over preset Fractal values into the current
config object. Since "color-mode" is now a GimpChoice instead of an int,
this caused a crash when applied. This patch switches it to set a string in
g_object_set () rather than the original int.
2024-11-23 16:26:32 +00:00
Alx Sa cd2d3bef85 themes: Fix menu style on context menus
In 9b917b8d, we defined the background and hover style
for the top menubar context menus. However, this did not
carry over to the menus for the on-canvas context menu.
This patch generalizes the CSS style so it affects both.
2024-11-23 15:13:53 +00:00
Bruno 19ab03e69f
build/windows: Uninstall previous desktop .lnk icon again for RC2 and onwards
A regression introduced by a8b9bedf is that installing GIMP 3.0.0-RC1+git was
keeping GIMP 3.0.0-RC1 icon since an [InstallDelete] line was mislooked by me.

As a side note, to understand how the Windows versioning introduced by a8b9bedf
works, please read the latest base_gimp3264.iss file at 3.2.2 [Setup] section.
2024-11-23 09:34:37 -03:00
Ryan Sims e682027b4b file-dds: Fix texture array loading
load_info.dxgi_format was not set after reading the DX10 header, leading
to DX10 texture arrays, volumes, and cubemaps not loading in multiple
layers
2024-11-23 01:32:09 +00:00
Jehan 01d8d2680f Issue #12409: make sure action tooltips are escaped when used as markup. 2024-11-22 16:37:51 +09:00
Jehan 121762d9b3 app: migrate the actions which used to have an -accel variant.
For this to work properly, I don't process them line by line, like all
other actions. Instead, I do a post-processing pass where I verify if
both variants were set, and if so, with an acceleration or with an empty
string. Indeed several cases are triggered:

1. We may migrate with 2 custom shortcuts on the same action;
2. we may mix 1 custom shortcut with one of the default shortcuts;
3. we may disable one of the default shortcut but not the other;
4. we may disable both shortcuts.
2024-11-22 09:03:25 +09:00
Jehan bc89a8b046 app: migrate edit-paste-as-new-layer* actions.
These were removed in commit 2c4f91f585, though I do wonder if this may
not have been a mistake since edit-paste and edit-paste-in-place are not
exact equivalent. They may still create floating items in some cases.
But that's good enough for now.
2024-11-22 09:03:25 +09:00
Jehan a6afbcbfe1 app: migrate *-gamma precision from templaterc and gimprc.
Since commit 2559138931, *-gamma precision were removed and this would
fail a templaterc file using such precision.
2024-11-22 09:03:25 +09:00
Jehan 2d9e8ef7bb app: better future-proof config migration.
This is an improvement over commit ce2a9dc3eb which was only meant to
work for GIMP 3.0. This new code should work for 3.2 and any future
version too. It will try to migrate any configuration folder from GIMP
2.0 to whatever is the current version.
2024-11-22 09:03:25 +09:00
Jehan 0b792c22a4 pdb: always set header to PDB enums, even when empty.
This fixes the following warning when generating gimpenums.h:

> Use of uninitialized value in pattern match (m//) at pdb/enumcode.pl line 71.
2024-11-22 09:03:25 +09:00
Alx Sa 054821b172 app/tools: Add filters even if Preview is unchecked
Should resolve #12436
Since we currently always apply filters with Aux nodes
destructively, we need to move them to the bottom of
the filter stack on creation. However, it's possible to have
the Preview checkbox unchecked when adding such a filter.

The current code does not add the filter to the stack until the
Preview is turned on. This can cause a crash when reordering
filters with Aux nodes, as they haven't actually been added yet.

Rather than duplicate code, this patch changes the code to always
apply the filters, then immediately set their visibility based on the
checkbox. This also adds a check to see if the filter stack actually
contains the filter before reordering.
2024-11-21 19:59:27 +00:00
Bruno 889c1f9896
build/windows: Fix not working WACK mode in MSIX script
The bug was introduced by 1380b899
2024-11-21 14:18:43 -03:00
Bruno 7b596bedbd
build/windows: Make WinSDK detection code portable 2024-11-21 14:18:12 -03:00
Cheng-Chia Tseng f5ca6e0151 Update Chinese (Taiwan) translation 2024-11-21 05:09:51 +00:00
Jehan 02199755ab Issue #12277: GIMP 3.0 RC1 opens Windows Console.
This is a followup of previous commit. We must set the win_subsystem
option on executable() so that the result binary is compiled as a GUI
application (and doesn't output a console every time).

The previous commit is still needed and is what allows us to control
when to actually display a console.
2024-11-21 04:23:10 +00:00
Jehan fcf524fbc3 Issue #12277: GIMP 3.0 RC1 opens Windows Console.
This was a bug in the meson port which was not taking into account the
stable or release state of a build (unlike how it was in the old
autotools). The rules are:

* All unstable builds (release or not) have the console.
* Non-release builds in stable series have the console.
* Only release of stable series don't have the console.
* The RC of a stable release should behave as a stable release.
2024-11-21 04:23:10 +00:00
Cheng-Chia Tseng b5e356265d Update Chinese (Taiwan) translation 2024-11-20 19:55:02 +00:00