Commit graph

42393 commits

Author SHA1 Message Date
Piotr Drąg
deb20726f1 Update Polish translation 2018-12-16 12:13:08 +01:00
Marco Ciampa
7c9629c01f Updated Italian translation 2018-12-13 15:56:03 +01:00
Ell
fd297f943b app: in the warp tool, blink behavior combo when the current behavior is invalid
In the warp tool, when the warp is empty and the current behavior
has no effect as a result (i.e., when it's ERASE or SMOOTH), show
an error message in the status bar, and blink the behavior combo
widget in the tool options, to hint at the source of the error.

(cherry picked from commit 7958387d54)
2018-12-12 11:23:49 -05:00
Ell
6f4e233cf0 app: in the warp tool, blink stroke frame when no events are selected
In the warp tool, when no stroke events are selected, blink the
stroke frame widget in the tool options, in addition to showing an
error message in the status bar, to hint at the source of the
error.

(cherry picked from commit 17cc44a7be)
2018-12-12 11:23:48 -05:00
Ell
a8ef7db616 app: s/GEGL_WARP_BEHAVIOR/GIMP_WARP_BEHAVIOR/
The enumerators of the GimpWarpBehavior enum, except for MOVE, had
a GEGL_ prefix, rather than a GIMP_ prefix, for some reason.

Change all of them to GIMP_.

(cherry picked from commit 2085cb4a37)
2018-12-12 11:23:48 -05:00
Ell
df475195d4 app: in gimp_widget_blink_cancel(), avoid redrawing non-blinking widget
Since commit fe139e5662, when
blinking a widget, we cancel blinking for all its ancestors.  Avoid
redrawing all the ancestors as a result, unless they're actually
blinking.  This prevents some noticeable lag when blinking a
widget.

(cherry picked from commit 5a2dee29d7)
2018-12-10 14:19:40 -05:00
Ell
a8841a3c07 app: in all tools, blink lock box when the current item is locked
In all tools, when the current item can't be edited due to its lock
mask, use gimp_tools_blink_lock_box(), added in the previous
commit,to blink the lock box of the corresponding dockable, in
addition to showing an error message in the status bar, to hint at
the source of the error.

(cherry picked from commit 637105b962)
2018-12-10 08:57:14 -05:00
Ell
c237ee3c23 app: add gimp_tools_blink_lock_box()
Add gimp_tools_blink_lock_box() utility function, in a new
gimptools-utils.c file, which takes a GimpItem, and blinks the
GimpItemTreeView lock-box of the corresponding dockable.  This can
be used to hint that the item's lock toggles are preventing it from
being edited.

(cherry picked from commit 9bdaec3a49)
2018-12-10 08:57:11 -05:00
Ell
66a9dffa2e app: in gimp_widget_blink(), cancel blinking of parent widgets
When blinking a widget using gimp_widget_blink(), cancel the
blinking of all its ancestors, to reduce visual clutter.

(cherry picked from commit fe139e5662)
2018-12-10 08:55:43 -05:00
Ell
ace9b12205 app: in the paint tools, blink mode box when the current mode is invalid
In the paint tools, when the current paint mode is invalid, i.e.,
when it requires an alpha channel, but the the current drawable has
no alpha channel, or its alpha channel is locked, blink the paint-
mode box widget in the tool options, in addition to showing an
error message in the status bar, to hint at the source of the
error.

(cherry picked from commit 464bf1b0a9)
2018-12-10 08:55:43 -05:00
Ell
a42f2cb2e7 app: in the transform tools, blink type box when there's no item to transform
In the transform tools, when there is no item of the selected type
to transform, blink the move-type box widget in the tool options,
in addition to showing an error message in the status bar, to hint
at the source of the error.

(cherry picked from commit 17412aa234)
2018-12-10 08:55:42 -05:00
Ell
92c6f87391 app: in the move tool, blink type box when there's no item to move
In the move tool, when there is no item of the selected type to
move, blink the move-type box widget in the tool options, in
addition to showing an error message in the status bar, to hint at
the source of the error.

(cherry picked from commit c9bc3d7a09)
2018-12-10 08:55:41 -05:00
Ell
02ccab9e7e app: in the selection tools, blink mode box when the current operation is invalid
In the selection tools, when the selected operation is invalid,
i.e., when trying to subtract-from or intersect-with an empty
selection, blink the selection-mode box widget in the tool options,
in addition to showing an error message in the status bar, to hint
at the source of the error.

(cherry picked from commit f990e41609)
2018-12-10 08:55:41 -05:00
Michael Natterer
95deaa7bf3 app: clean up size group code in the preferences dialog
(cherry picked from commit 0efa00932b)
2018-12-10 12:18:51 +01:00
Richard McLean
acc15e614a Issue #1299 - Add selection of default export file type
Patch cleaned up by Alexandre Prokoudine and Michael Natterer.

(cherry picked from commit bfbad0a5ca)
2018-12-10 12:17:00 +01:00
Marco Ciampa
e68fdd537d Updated Italian translation 2018-12-09 19:47:19 +01:00
Piotr Drąg
d797592223 Update Polish translation 2018-12-09 12:23:02 +01:00
Ell
a2c20b1539 Issue #2635 - Segfault when using measuring tool
In gimp_tool_compass_update_angle(), use fuzzy comparisson when
determining whether to update the angle properties, to avoid
infinite recursion due to floating-point inaccuracies.  In
partcicular, on x86, when using the x87 FPU rather than SSE, the
floating-point registers are 80-bit, while the properties are
stored as 64-bit, which can create small discrepancies between the
calculated angles and the stored values.

(cherry picked from commit ad831dbc6d)
2018-12-08 06:03:54 -05:00
Marco Ciampa
ebe209f463 Fixed term for unsharp mask in italian 2018-12-07 12:12:02 +01:00
Marco Ciampa
18bc8b8933 Updated Italian translation 2018-12-07 10:14:18 +01:00
Jehan
bffe0c6965 NEWS: update. 2018-12-07 00:51:13 +01:00
Jehan
96d67fd1b2 Issue #2495: many tablets broken by GIMP 2.10.8.
We had many reports of tablets from various brands (Huion, Gaomon,
XP-Pen…) broken in the last release (though working fine when
downgrading to 2.10.6). Latest Huion drivers seem to fix the issue
(according to at least one report), but this is not the case for other
tablets.

Though unable to test myself, provided stderr logs indicate that we hit
the case when 2 devices with the same name are registered. Therefore
this commit is basically reverting commit 717c183a3e (though keeping and
completing the comments). I don't think there is an ultimate solution
here but with this regression, experience shows us there seem to be a
lot more breakage when overwriting the device with newer occurences (at
least on Windows). It is unclear though if commit 717c183a3e was also
supposed to fix another case actually encountered. If so, we will need
to get an even more advanced solution.

(cherry picked from commit ce24e16083)
2018-12-07 00:51:13 +01:00
Skal
741a659a12 webpmux: fix memory leak by calling WebPMuxDelete()
(cherry picked from commit e9200d2c00)
2018-12-07 00:51:13 +01:00
Jehan
ab851924dd plug-ins: make various usage of g_file_replace() safer.
As I did on app/, finalizing an output stream also implicitly flushes
and closes it. Hence if an export ended with an error, we'd end up with
incomplete data file (possibly overwriting a previously exported image).
Only 2 plug-ins I haven't fixed yet are file-tiff-io and file-gif-save.
The later one don't even clean up its memory (which somehow is good here
as at least the output stream is never finalized hence sane files are
not overwritten in case of errors). As for the former (TIFF plug-in), it
doesn't even seem to have any error control AFAICS, apart from printing
error messages on standard error output.

(cherry picked from commit 66ec467217)
2018-12-07 00:51:13 +01:00
Jehan
48e14ef3b9 app, libgimpconfig: make various usage of g_file_replace() safer.
When an error occurs, we want to prevent overwriting any previous
version of the file by incomplete contents. So run
g_output_stream_close() with a cancelled GCancellable to do so.
See also discussion in #2565.

(cherry picked from commit 613bf7c5ab)
2018-12-07 00:51:05 +01:00
Jehan
c9da44bed3 app: do no overwite XCF when an error occurred at saving time.
We can cancel a file overwrite at the last second when closing the
stream by setting a cancelled cancellable. Current code was simply not
closing the stream, but this was not enough as overwriting was happening
anyway (probably when finalizing).
This will allow much safe saving process since we would not be
overwriting a previously sane XCF file when an error occurred (either in
our code or a memory error, or whatnot).
See also discussion in #2565.

(cherry picked from commit 076b53511a)
2018-12-07 00:27:12 +01:00
Ell
61a181933c app: in GimpProjection, fix reinit. of current row when chunk height changes
In GimpProjection's chunk renderer, when the chunk height changes
in the middle of a row, we need to merge the remainder of the
current render area back into the renderer's update region, and
refetch the remainder of the row as the new render area, so that we
don't miss any unrendered area, or re-render already-rendered area,
due to the change in chunk height.  However, we should previously
fail to verify that the fetched area is, in fact, the remainder of
the current row, which could cause us to render the wrong area,
missing parts of the update region.

Fix this, by breaking up some of the chunk-renderer fucntions into
smaller sub-functions, and using those in order to explicitly set
the new render area to the remainder of the current row when the
chunk height changes.  This also avoids erroneously merging the
unflushed update region of the projection into the renderer's
update region.

(cherry picked from commit c9c2397b0d)
2018-12-06 08:51:04 -05:00
Ell
09863478db Revert "app: save images with fractional grid coordinates as version-10 XCFs"
Actually, image grids are saved as parasites, so even though older
GIMP versions round their coordinates upon loading, they maintain
the fractional coordinates when re-saving the image, hence bumping
the XCF version is not really necessary.

This reverts commit 13119efda33a7aba323dc13e6a56207a15a9f000.

(cherry picked from commit 411ddb7e48)
2018-12-05 13:52:56 -05:00
Ell
6ca294abe0 app: save images with fractional grid coordinates as version-10 XCFs
Fractional-coordinate support for image grids was added in commit
1572bccc9f, right before the
introduction of XCF version 10.  While images with fractional grid
coordinates can be loaded with earilier versions of GIMP, the grid
coordinates are rounded to the nearest integer.

Bump the minimal XCF version when saving images with fractional
grid coordinates to 10, which should have been the case all along.

(cherry picked from commit a90322278d)
2018-12-05 13:33:42 -05:00
Michael Natterer
0a2aac7ce1 libgimp: actually use the path expanded in the previous commit
(cherry picked from commit 799f6b14bb)
2018-12-05 00:35:15 +01:00
Michael Natterer
f6350e1b5a libgimp: need to expand config->swap_path in gimp_config()
or the file system will be polluted with folders called
"${gimp_cache_path}".

(cherry picked from commit cc835e877d)
2018-12-04 19:45:21 +01:00
Ell
b06ffe4334 Issue #2604 - XCF saving bug in xcf_save_buffer()
The NULL terminator of the tile-offset array of dummy buffer-levels
is erroneously written as an int32, instead of an offset, even in
version-11+ XCFs, in which offsets are 64-bit.

Since the dummy levels aren't actually used by GIMP, we're going to
keep these fields as int32 as an exception, in order to remain
consistent with existing XCFs, and just add a comment in the code,
and update the docs.  If we ever make use of the higher buffer
levels, we should change these fields to offsets, and bump the XCF
version.

(cherry picked from commit 2168d91cf7)
2018-12-04 12:09:55 -05:00
Michael Natterer
9baae75c5c Integrate the logic of profile saving with metadata saving
Add flag GIMP_METADATA_SAVE_COLOR_PROFILE to GimpMetadataSaveFlags and
initialize it from gimp_export_color_profile() in
gimp_image_metadata_save_prepare().

Adapt all plug-ins to use the bit from the suggested export flags and
pass the actually used value back to
gimp_image_metadata_save_finish().

This changes no behavior at all but creates hooks on the libgimp side
that are called with the context of an image before and after the
actual export, which might become useful later. Also, consistency
is good even though the color profile is not strictly "metadata".

(cherry picked from commit c667fdc5c0)
2018-12-04 17:40:12 +01:00
Alexandre Prokoudine
4cdfbee64e Update Russian translation 2018-12-04 01:32:54 +03:00
Alexandre Prokoudine
86fd5e3b67 Update Russian translation 2018-12-04 01:01:31 +03:00
Michael Natterer
a865f5e83e Issue #701 - Add the ability to embed the GIMP built-in sRGB profile...
...upon exporting an image

Add a "Save color profile" toggle and always honor it.

(partially cherry picked from commit 7f9379cb32)
2018-12-03 19:47:24 +01:00
Michael Natterer
b25117376b plug-ins: always save the color profile in file-psd
by using gimp_image_get_effective_color_profile() instead of just
_get_color_profile(). Don't look at the preference setting because PSD
should behave more like "save" than "export" and save everything.

(cherry picked from commit a35b243f9b)
2018-12-03 19:28:10 +01:00
Ell
fa74fe78f9 app: don't use direct-buffer fill when some components are masked
(cherry picked from commit 83250eb57c)
2018-12-03 09:54:18 -05:00
Ell
03a4fafe30 app: mark REPLACE and PASS_THROUGH modes as trivial
(cherry picked from commit f508ec8b89)
2018-12-03 09:54:18 -05:00
Michael Natterer
2f5bbe9416 Issue #701 - Add the ability to embed the GIMP built-in sRGB profile...
...upon exporting an image

Add a "Save color profile" toggle to the PNG dialog and always honor it.

(cherry picked from commit 7ed93452e8)
2018-12-03 13:03:14 +01:00
Michael Natterer
8a90d8b8b2 Issue #1297 - Unhide the items hidden in the Advanced drop-down file...
...export dialogs

Move most stuff out of the "Advanced" expander, only nerdish encoding
options are left there.

Issue #701: Add a "Save color profile" toggle which honors the default
value configured in preferences and always saves the profile when
enabled.

(cherry picked from commit 540cfa9611)
2018-12-03 12:32:26 +01:00
Ell
5b857dbb4b libgimpcolor, app, modules, plug-ins: remove GEGL_ITERATOR2 define
... it's no longer needed, since GEGL commit
gegl@9dcd2cde63f95a080bf16a58c10e9ffbdd99aace.

Partially reverts commits:

6fca9959c7
cc10af72cc
49c53568d7
8edbc0d491
29f63616d2
3a2014984d
ee48ec6877
4165a315d5
764085278f
b7633c722e
6ab12061b7
754a3c5b18
22b4b647bd
55b3438328
c6d23add65
f03a84d607
822f9f0d2b
95358ca1fa
cdda37f4ee
41e8035635
6761da42b2
fb5d7832a8
97ed7817d8
46e9036578
ea9c5e6a49
24fbdfb591
beb4ecb238
4b77831e03
fcf113a39c
567ffe94ff

(cherry picked from commit 053e5edc93)
2018-12-02 11:21:36 -05:00
Ell
edbda43028 app: add "direct" parameter to gimp_projection_flush_now()
Add a boolean "direct" parameter to gimp_projection_flush_now(),
which specifies if the projection buffer should only be invalidated
(FALSE), or rendered directly (TRUE).

Pass TRUE when flushing the projection during painting, so that the
affected regions are rendered in a single step, instead of tile-by-
tile.  We previously only invalidated the projection buffer, but
since we synchronously flush the display right after that, the
invalidated regions would still get rendered, albeit less
efficiently.

Likewise, pass TRUE when benchmarking the projection through the
debug action, and avoid flushing the display, to more accurately
measure the render time.

(cherry picked from commit dac9bfe334)
2018-12-02 10:15:36 -05:00
Piotr Drąg
fb2db7fe29 Update Polish translation 2018-12-02 12:41:42 +01:00
Ell
33a015abef app: fix iterated-over area in gimp_gegl_clear()
Iterate over the per-thread area, not the full region.

(cherry picked from commit 06923d0f65)
2018-12-02 03:48:35 -05:00
Ell
98bf8319b6 app: another fix to drawable direct-fill criterion
Don't use a direct-buffer fill when filling using a pattern with
alpha, even when the mode is subtractive.

(cherry picked from commit 42b82419b1)
2018-12-02 03:43:28 -05:00
Ell
61b1e7a348 app: fix drawable direct-fill criterion
Don't use a direct-buffer fill if the mode is subtractive, and the
composite region includes the source.  Currently, this never
actually happens.

(cherry picked from commit 660f53d300)
2018-12-02 03:34:02 -05:00
Ell
8a131e97f1 app: optimize simple whole-drawable fill/clear
In gimp_drawable_edit_fill(), when filling/clearing the whole
drawable, without any special compositing (i.e., when there's no
selection, the opacity is 100%, and the layer mode is trivial),
fill/clear the drawable's buffer directly, without using an
applicator.  This makes such operations much faster, especially in
big images.

(cherry picked from commit dd8268c0a2)
2018-12-02 03:11:22 -05:00
Ell
5d536afded app: add gimp_fill_options_fill_buffer()
... which is similar to gimp_fill_options_create_buffer(), however,
it fills an existing buffer, instead of creating a new buffer.

Implement gimp_fill_options_create_buffer() in terms of the new
function.

(cherry picked from commit 45fc4cb4f9)
2018-12-02 03:11:21 -05:00
Ell
2dda622a20 app: add gimp_layer_mode_is_trivial()
Add a TRIVIAL layer-mode flag, and corresponding
gimp_layer_mode_is_trivial() function, which indicates if the blend
function of a given layer mode is trivial, i.e., either never
modifies the source pixels (for non-subtractive modes), or always
clears the destination pixels (for subtractive modes).

(cherry picked from commit 8adec5fb3a)
2018-12-02 03:11:21 -05:00