Commit Graph

39339 Commits

Author SHA1 Message Date
0611ca1d50 app: remember the modes of the color picker info window's GimpColorFrames
Keep them in GimpColorPickerOptions.
2017-11-12 20:33:42 +01:00
cbe6cd8ebd app: notify on "mode" when a GimpColorFrame mode is chosen from the menu 2017-11-12 20:32:57 +01:00
393336b76f configure.ac: require GEGL >= 0.3.22 2017-11-12 20:18:14 +01:00
aee1a1f430 Update Polish translation 2017-11-12 19:17:40 +01:00
d680c5453f app: fix typo in a translatable string 2017-11-12 19:14:36 +01:00
f12d0d8c29 Bug 789764 - Please add Paste In Place feature
Add "In Place" variants for all sorts of pasting:

- extend the GimpPasteType enum with IN_PLACE values
- add the needed actions and menu items
- merge the action callbacks into one, taking an enum value as parameter
- refactor the pasting code in gimp-edit.c into smaller functions

We probably have too menu items in the "Edit" menu now, needs to be
sorted out.
2017-11-12 18:41:05 +01:00
79836aea34 configure.ac: require babl >= 0.1.36 2017-11-12 18:36:24 +01:00
Ell
531eafe41d app: sort available display filters by name 2017-11-12 12:11:30 -05:00
Ell
d591bf51f0 app: clear display filter stack when emptying a display 2017-11-12 12:11:30 -05:00
b1c5725373 Update Russian translation 2017-11-12 17:53:05 +03:00
Ell
54ec9373fb Bug 789981 - Wrong layer structure in PSDs with deeply nested layer groups
Photoshop CS5 adds support for layer groups whose nesting depth is
above 5.  The end markers of these groups use an undocumented
"lsdk" key for their section dividers, rather than the usual
"lsct".  This caused the PSD plugin to treat them as regular
layers, resulting in wrong layer-tree structure.

Add support for "lsdk" section dividers upon loading, and also
generate "lsdk" section dividers upon saving sufficiently-deep
groups.
2017-11-11 17:51:02 -05:00
Ell
6708af3976 plug-ins: in file-psd, repalce tabs with spaces 2017-11-11 17:51:02 -05:00
Ell
4ded26c4f1 app: update group layer offset before calling gimp_pickable_flush()
In gimp_group_layer_update_size(), when the layer's bounds have
changed, update the group layer's offset before the call to
gimp_pickable_flush() when reallocating the projection.  Otherwise,
if the group layer's graph isn't constructed yet, it will get
constructed during the call to gimp_pickable_flush(), however,
gimp_group_layer_get_graph() will pick up the old coordinates for
the offset node.
2017-11-11 17:51:02 -05:00
Ell
fe3339e215 app: in GimpSearchPopup, activate selected action after closing popup
Otherwise, if the action displays a dialog, the dialog doesn't have
focus.
2017-11-10 09:54:47 -05:00
d87fb81f1f Update NEWS 2017-11-10 02:21:07 +03:00
7f232a87b3 data: new development splash image 2017-11-09 22:58:17 +01:00
Ell
c49a21d95c app: improve histogram bin calculation
A fix to last commit: map values greater than G_MAXINT to the top
bin, not the bottom bin.
2017-11-08 04:58:04 -05:00
Ell
b2b6552f1f Bug 788394 - Crash (segmentation fault) when calculating a histogram ...
... upon NaN values

Make the histogram bin calculation NaN-safe, by mapping NaNs to 0.
Ideally, NaNs should probably not be counted at all, but since we
already count negative values as 0, and > 1 values as 1, we might
as well not pessimize performance over it, at least until we add
support for unbounded histograms.

At the same time, improve rounding in the bin calculation, so that
the result is more accurate.
2017-11-07 18:21:31 -05:00
8793d6a3b2 Fixes to Catalan translation 2017-11-07 15:54:39 +01:00
Ell
e2fb7a41c6 modules: various changes in clip-warning
Replace "Show NaN" option with "Show bogus".  Bogus values include
infinities, in addition to NaN.

Don't blend the bogus warning color with other warning colors, when
a pixel has both a bogus component, and a shadow/highlight
component.  The bogus warning always takes precedence.

Rename "Include alpha" option to "Include alpha component".

Remove "Opaque" option.  Warnings are now always opaue, even for
non-opaque pixels.

Add "Include transparent pixels" option, which controls whether
fully-transparent pixels are included in the warning.  A fully
transparent pixel is a pixel whose alpha component is less-than or
equal-to zero (note that this doesn't include a NaN alpha
component.)
2017-11-07 09:28:33 -05:00
c97c2fe06d Update Polish translation 2017-11-05 16:20:39 +01:00
Ell
6ffa17bd33 app: avoid unnecessary work when all display filters are disabled
Return FALSE from gimp_display_shell_has_filter() when there are
filters, but they're all disabled, to avoid unnecessary extra
color conversions during rendering.
2017-11-05 09:03:04 -05:00
Ell
bf659a9979 modules: stylistic code and ui text cleanup in display filters
The labels used in the old display filters ui were more descriptive
than the corresponding property nicks; modify the nicks/blurbs with
similar text.

... Plus random cleanup in clip-warning.
2017-11-05 08:45:35 -05:00
Ell
bc9f179edf app: add gimp_data_is_{copyable,duplicatable}() to gimp_data.h
Forgot to add it to last commit :P
2017-11-04 22:13:31 -04:00
Ell
2fe6575d7e Bug 789901 - Gimp allows duplicating non-duplicatable data objects ...
... leading to a crash

Add gimp_data_is_copyable() and gimp_data_is_dulicatable().

Use gimp_data_is_duplicatable() when setting the sensitivity of the
various "foo-duplicate" actions, instead of inspecting the object's
GimpDataClass::duplicate pointer directly, since this is no longer
an indication of whether a GimpData object is duplicatable or not
(since commit 33de4d5530).
2017-11-04 22:00:29 -04:00
Ell
089bfe4e3d app: copy brush spacing when copying generated brushes
When copying a generated brush, copy its "spacing" property, in
addition to the other properties, which hasn't been previously
copied by ::duplicate().
2017-11-04 22:00:29 -04:00
Ell
880d3bd182 app: port GimpData subclasses from ::duplicate() to ::copy()
Finish up commit 17583ff04a, which
ported GimpGradient from ::duplicate() to ::copy(), by doing the
same for the rest of the GimpData subclasses that implement
::duplicate().

We still keep GimpData's ::duplicate() virtual function around,
even though it now points to the default implementation (which uses
::copy()) for all subclasses, since ::copy() is stronger than
::duplicate(), and we might want to have certain GimpData types
that are duplicatable, but not copyable.
2017-11-04 22:00:29 -04:00
Ell
9cd8e7f9c6 app: apply display filters in sRGB, not monitor profile
When we have display filters, break the color profile transform in
two: first, convert from the image profile to sRGB, then apply the
filters, then convert from sRGB to the monitor profile.
2017-11-03 04:24:49 -04:00
Ell
22a28a23cc libgimpcolor: add shortcut in gimp_color_profile_is_equal()
When the two pointers are equal, return TRUE immediately, instead
of comparing the profile to itself.
2017-11-03 04:24:15 -04:00
Ell
2520e0455c modules: remove custom display filter gui
Remove the configure() function from all our display filters, so
that they use a propgui.
2017-11-02 16:48:52 -04:00
Ell
7ec271bd0c modules: small cleanup in display-filter-clip-warning.c
Remove debug g_printerr(), and rearrange class_init() to match the
other display filters.
2017-11-02 16:48:52 -04:00
Ell
5b118a260b modules: add clip-warning display filter
The clip-warning display filter highlights pixels with at least one
componet whose value is outside the [0,1] range, or is NaN.
2017-11-02 16:12:33 -04:00
Ell
5a726a028e app: use a propgui for display filters that return a NULL config widget
When a display filter's configure() function returns NULL, use a
propgui for the filter, instead of not showing a widget at all, to
spare filters the need to manually construct a configuration gui.
2017-11-02 16:12:33 -04:00
Ell
bcb7545fe1 app: in propgui, use flat color buttons for rgb props with no alpha 2017-11-02 16:12:33 -04:00
Ell
a5a2b56850 app: use actual render area when processing display filters
When processing display filters, shift the filter buffer to the
top-left corner of the render area, and pass the actual render
area, instead of an area whose top-left coords are (0, 0), to the
display filter.  This allows for position-dependent display
filters.
2017-11-02 16:12:33 -04:00
Ell
e042393199 app: small cleanup in GimpSpinScale 2017-11-02 09:04:39 -04:00
da41269dcd Update Spanish translation 2017-11-02 11:24:45 +00:00
Ell
ae851c34b4 app: avoid spin scale pointer wrap when value is at upper/loewr limit
When applying a relative adjustment to a spin scale, don't wrap the
pointer around the corresponding screen edge if the spin scale's
value is already minimal/maximal.
2017-11-02 02:36:39 -04:00
Ell
2bdf5372ba app: wrap pointer around screen edges during relative spin scale adjustment
While applying a relative spin scale adjusment (i.e., when dragging
from the lower half of the spin scale), wrap the pointer around the
screen edges (of the current monitor), so that the maximal possible
adjustment amount isn't artifically limited by the screen geometry.
This is especially useful for spin scales in dockables, since
dockables are normally placed near the edge of the screen.

When the mouse is released, move the pointer back to its initial
position (at the beginning of the drag), to allow for subsequent
adjustments.

Unfortunately, moving the pointer programatically isn't supported
on all envrionments (Wayland, Xephyr, ...), and worse yet,
detecting that the pointer failed to move is tricky, so we have to
resort to an ungly hack to maintain the current behavior in this
case.  Gah :P
2017-11-01 15:59:48 -04:00
Ell
0323541d86 Bug 780375 - Color picker won't pick on Wayland
In GimpPickButton, try to pick from the local window under the
cursor, before falling back to picking from the root window, so
that we can at least pick from local windows on Wayland.
2017-10-31 11:21:44 -04:00
0f716b3357 Updated Italian translation 2017-10-31 00:55:43 +01:00
Ell
262f25b319 app: fix GimpDataEditor name entry set_editable() logic
Small fix to last commit: make the name entry editable when the
data is renamable, even if it's not otherwise writable (completely
hypothetical for now.)
2017-10-30 17:25:52 -04:00
Ell
bccef43049 app, pdb: prevent custom gradient from being renamed
Make internal data objects non-renamable, even if they're writable,
through gimp_data_is_name_editable().  Currently, the only such
object is the custom gradient.

Prevent changing the name of non-renamable data by making the name
entry of GimpDataEditor non-editable whenever
gimp_viewable_is_name_editable() is FALSE, even if the data is
otherwise editable.

Prevent the vairous PDB -rename() functions from renaming non-
renamable data, by adding a GimpPDBDataAccess flags type,
specifying the desired access mode for the data -- any combination
of READ, WRITE, and RENAME -- and replacing the 'writable'
parameter of the gimp_pdb_get_foo() functions with an 'access'
parameter.  Change the various .pdb files to use READ where they'd
used FALSE, and WRITE where they'd used TRUE; use RENAME, isntead
of WRITE, in the -rename() functions.
2017-10-30 17:22:29 -04:00
Ell
b7b263e97b app: update GimpContainerEntry when the selected item's name changes
Keep track of the selected viewable of a GimpContainerEntry, and
update the entry text when the viewable's name changes, if the text
hasn't changed since the viewable was selected.
2017-10-30 17:22:29 -04:00
Ell
9eb75cde00 app: use G_FILE_CREATE_NONE for saved internal data files
Use G_FILE_CREATE_NONE, instead of G_FILE_CREATE_REPLACE_DESTINATION,
when saving internal data files, for consistency with the other files
we save.
2017-10-30 07:40:53 -04:00
ab05320ce1 Updated Italian translation 2017-10-30 11:37:30 +01:00
Ell
fb5354c9e5 Bug 780979 - Fullscreen windows with WS_EX_NOACTIVATE | WS_EX_TRANSPARENT ...
... interfere with GIMP UI events

Add a GTK+ patch to ignore top-level transparent windows when
looking for the top-level GDK window at a certain pointer location,
in the Win32 GDK backend.
2017-10-29 15:15:34 -04:00
d14f6647ad libgimp, libgimpbase: rename gimp_base_compat_enum_init()
to gimp_base_compat_enums_init() and move its prototype from
gimputils.h to gimpbase-private.h; it's not supposed to be
public API even though it's callable from the outside.
2017-10-29 18:37:18 +01:00
61727c69e0 Update Polish translation 2017-10-29 17:41:35 +01:00
a5e1dd84fd app: implement GimpToolActiveModifiers in GimpTool
Change gimp_tool_set_active_modifier_state() to honor the new
GimpToolControlSetting. Explicitly set the mode to SEPARATE in
all tools that require modifier keys during a stroke.

And here comes the actual fix: change GimpTransformTool and
GimpToolTransformGrid to use SAME mode, and remove their
active_modifer_key() and hover_modifier() impls, so it makes no
difference whether a modifier is pressed before of after mouse button
press/release.
2017-10-29 16:42:53 +01:00