1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 01:12:40 +02:00

Compare commits

...

1206 Commits

Author SHA1 Message Date
Michael Natterer
3152b6e1d8 configure.ac: release 2.8.16 2015-11-21 16:44:58 +01:00
Michael Natterer
1598eb9cba etc, docs: regenerate the default gimprc and its manpage 2015-11-20 22:55:26 +01:00
Jasper Krijgsman
5cbc0e8173 Bug 732363 - wilber.ico doesn't contain 256x256 layer
Contributed by Jasper Krijgsman
2015-11-19 19:55:48 +01:00
Rafael Fernandez
50f25d1c39 Bug 707028 - Dutch translation for Windows installer
Contributed by Rafael Fernandez
2015-11-19 19:48:11 +01:00
Jehan
1b635d999f app: enable GimpCurvesTool on construction.
The Curves tool is to be considered "enabled" as soon as it is selected,
not when it is initialized (usually at the first click on the image).
One of the main consequence of not being "enabled" was that the tool
cursor was wrong at selection.

(cherry picked from commit 011c6db39e)
2015-11-15 17:53:11 +01:00
Pedro Albuquerque
f2323bc5b1 Updated Portuguese translation 2015-11-14 08:57:41 +00:00
Pedro Albuquerque
3aa98c3ef2 Updated Portuguese translation 2015-11-14 08:16:53 +00:00
Michael Natterer
f58b5288bb Bug 757739 - GIMP crashes closing undocked pointer dialog
Keep a reference to GimpCursorView's context around as long as the
widget is alive.

(cherry picked from commit 10085b118a)
2015-11-07 21:16:56 +01:00
Luis Menina
6afafa75b6 Bug 683196 - French translation for the Windows installer
Contributed by Luis Menina.
2015-11-02 01:58:57 +01:00
Jiri Grönroos
2e0deb0d78 Updated Finnish translation 2015-10-11 14:17:32 +00:00
Jonathan Tait
9b0b1347ec Bug 755317 - "Apply lens" doesn't work on big images (2366x2366)
Redefine sizes as glong.
2015-10-09 23:12:05 +02:00
Dimitris Spingos
8182ec4c3e Updated Greek translation 2015-09-30 10:06:19 +03:00
Милош Поповић
187411df9d Updated Serbian translation 2015-09-29 11:24:39 +00:00
Piotr Drąg
473d28729b Fix Chinese (Taiwan) translation of default:LTR 2015-09-26 17:28:13 +02:00
Piotr Drąg
a941f32747 Fix Ukrainian translation of default:LTR 2015-09-26 17:27:02 +02:00
Piotr Drąg
91ecdcd201 Fix Swedish translation of default:LTR 2015-09-26 17:26:21 +02:00
Piotr Drąg
9cdee54751 Fix Slovenian translation of default:LTR 2015-09-26 17:25:48 +02:00
Piotr Drąg
6186829a5a Fix Estonian translation of default:LTR 2015-09-26 17:22:05 +02:00
Piotr Drąg
00bbab5789 Fix Spanish translation of default:LTR 2015-09-26 17:21:42 +02:00
Piotr Drąg
b97a4e0538 Fix Greek translation of default:LTR 2015-09-26 17:20:24 +02:00
Piotr Drąg
d4ae812a93 Fix Catalan translation of default:LTR 2015-09-26 16:59:54 +02:00
Piotr Drąg
101b224f63 Fix Aragonese translation of default:LTR 2015-09-26 16:52:27 +02:00
Pedro Albuquerque
57050cfc7b Updated Portuguese translation 2015-09-21 05:19:29 +00:00
Piotr Drąg
368b80fa71 Updated po-tags/LINGUAS 2015-09-19 17:49:22 +02:00
Matt Giuca
32e8a4e116 plug-ins: Fix generation of the AND mask for 32-bit ICO images
Previously, the mask would be transparent if the alpha was <50%.
However, this causes pixels to become black in some places in Windows
(notably, the taskbar on Windows 10). Therefore, always set the mask
to opaque if a pixel is partially or fully opaque.

(cherry picked from commit 07dfe4a5eb)
2015-09-18 19:01:00 +02:00
Jonathan Tait
f55dd9a7f3 Bug 751584 - parasite_list() methods fail if no parasites found
Correct parasite_list() methods.
2015-09-15 09:37:18 +02:00
Michael Natterer
9d5fed6ea6 Bug 754927 - Non-void function should return a value
Fix return value glitch in last DND-related commit.

(cherry picked from commit 1833d292cc)
2015-09-12 20:28:37 +02:00
Julien Nabet
bfd482755b Bug 69496 - Paint tools, Text tool: Click and drag font/brush/pattern/gradient...
...from tool options crashes GIMP

Applied a modified patch that actually removes the target list if it
became empty. This may or may not fix the bug; I can't tell because I
couldn't reproduce it any longer.

(cherry picked from commit 456d535232)
2015-09-10 23:49:57 +02:00
Martin Srebotnjak
ff950e6a25 Updated Slovenian translation 2015-09-08 23:42:47 +02:00
Martin Srebotnjak
232361ab60 Updated Slovenian translation 2015-09-08 23:34:24 +02:00
Martin Srebotnjak
244a14d6b6 Updated Slovenian translation 2015-09-08 23:17:55 +02:00
Michael Henning
978a394efe libgimpwidgets: Disconnect ruler's idle handler in dispose
As discussed on irc, this is more appropriate than finalize because
we shouldn't be making any gtk calls after dispose.

(cherry picked from commit 8c02b360fb)
2015-09-06 17:53:34 -04:00
Michael Henning
a8b596b078 libgimpwidgets: Avoid updating the rulers too often.
Ever since 72617e42b, whenever the user generated a lot of mouse
input, we would constantly queue redraws to the rulers. These redraws
had a higher idle priority than updating the canvas, so we would
rarely get around to canvas updates, which made certain tools
(painting with dynamics, the blend tool) feel very unresponsive.

This fixes it by only redrawing the rulers if the mouse has moved
far from the last location, or if there are no idle handlers with
a priority above LOW.

(cherry picked from commit 3233a70bae)
2015-09-06 17:53:21 -04:00
Piotr Drąg
40fd556120 Updated Polish translation 2015-09-02 20:42:50 +02:00
Piotr Drąg
b50a416390 Updated Polish translation 2015-08-29 18:41:52 +02:00
Michael Henning
f12131744c NEWS: Updates 2015-08-25 21:46:06 -04:00
Michael Natterer
43f187f5c3 Bug 749123 - File->Open thumbnail information label misaligned...
...until dialog window is resized

Immediate eye cancer guaranteed when looking at this patch.

(cherry picked from commit b5f55ba0ce)
2015-08-25 23:07:55 +02:00
Michael Schumacher
cfcfaddd2a Adding ChangeLog.pre-git to EXTRA_DIST
This causes make distcheck to succeed again. I am not sure if this is the
right way to do it, though.
2015-08-21 19:54:10 +02:00
Michael Schumacher
659a75c686 Workaround for intltool vs. automake issue during distcheck
intltool and automake 1.15 currently cause a problem during make distcheck.
This is a no-op workaround for intltool-update to make that succeed again.
See https://github.com/systemd/systemd/commit/06528e8fdd and
https://bugs.launchpad.net/intltool/+bug/1117944 for more information.

Thanks to Daniel Mack for pointing this out during Chaos Communication Camp.
2015-08-21 00:42:10 +02:00
David Gowers
6bb8ec5bb3 Bug 753573 - Enter does not take a default action in Python-Fu dialogs
(cherry picked from commit 0b5c9c41fc)
2015-08-16 20:18:58 +02:00
Saul Goode
9b783de2e4 Bug 746467 - 'convert-decimal-to-base' produces erroneous results 2015-08-16 00:00:58 +02:00
su-v
daf10480d5 autogen.sh: also look for automake 1.15 2015-08-15 12:34:52 +02:00
Michael Henning
597fae39b4 Bug 736411 - Ruler updates cause slowdown when painting
We now avoid drawing rulers in the position property setter and use
gtk's region invalidation instead. Previously, we were basically
redrawing the ruler inside the mouse event handler, which is pure evil.

(cherry picked from commit 72617e42b4)
2015-08-13 11:46:16 -04:00
Pedro Albuquerque
3138ebde3a Updated Portuguese translation 2015-08-12 11:58:27 +00:00
Pedro Albuquerque
59c0f0a64d Updated Portuguese translation 2015-08-08 05:54:50 +00:00
Pedro Albuquerque
a50765821c Updated Portuguese translation 2015-07-24 18:52:20 +00:00
Daniel Martinez
c90fa08af1 Update Aragonese translation 2015-07-23 12:12:19 +02:00
Pedro Albuquerque
30e5d71ba9 Updated Portuguese translation 2015-07-23 07:53:30 +00:00
Pedro Albuquerque
f78556a442 Updated Portuguese translation 2015-07-23 07:49:48 +00:00
Pedro Albuquerque
9c5a66f929 Updated Portuguese translation 2015-07-23 07:45:50 +00:00
Michael Natterer
53e5084a36 Bug 752582 - Error message when refreshing resources without...
...a writable resource directory

gimp_data_factory_data_save(): don't warn about a missing writable
directory if there is nothing to save.

(cherry picked from commit 16fa1b722d)
2015-07-21 19:27:07 +02:00
Nils Philippsen
1fc061aa46 Ref/unref dialog->image around saving as well...
...to avoid warnings that happen if the image got closed before the
saving finishes.

(amends commit a0e48ad29e)

(cherry picked from commit 0b900239d5)
2015-07-17 17:13:27 +02:00
Nils Philippsen
f60570b312 tests: link against -lm
(see commit 4c7338c097)

(cherry picked from commit 9171de3b80)
2015-07-16 15:02:19 +02:00
Michael Natterer
670fb5602d app: link against -lm, whatever new linker version seems to need is
(cherry picked from commit 4c7338c097)
2015-07-15 17:47:39 +02:00
Michael Natterer
908f4e69d6 Bug 739003 - Crashes in file_save_dialog_response()
Ref/unref the dialog around saving the image insatead of connecting to
"destroy" and NULLifying the local dialog variable on destruction,
which has caused weird crashes on fedora.

(cherry picked from commit a0e48ad29e)
2015-07-14 13:24:21 +02:00
Michael Natterer
d7f1187e5b Bug 751645 - tagbox dialog not showing lower tags
gimp_tag_popup_constructed(): calculate the height of the scrollable
area correctly.

(cherry picked from commit df3f7b01e6)
2015-07-04 14:05:43 +02:00
Michael Natterer
76ad66cdf0 app: factor out a function in GimpEditSelectionTool, and move one around
(cherry picked from commit bc525f39ee)

Again, not a bugfix, but to make future merging of fixes easier.
2015-07-03 19:41:26 +02:00
Michael Natterer
6b2ebecfc7 app: free GimpEditSelectionTool's stuff in finalize()
(cherry picked from commit 7d220a56e0)
2015-07-03 12:35:14 +02:00
Massimo Valentini
1ca0f2ec98 Bug 751089: Part PNG files are not opened properly
(cherry picked from commit f72f8f20e5)
2015-06-30 19:49:53 +02:00
Michael Natterer
7395e05614 app: remove the "exclude" paameter from gimp_image_item_list_get_list()
and from gimp_image_item_list_filter(). After the fixes for bug 735906
it's no longer needed, and it was harmful.

(cherry picked from commit 3d7af8a184)

Merging this to 2.8 is not strictly neccessary, but it's not unlikely
that linked layers are still slightly broken, so better have this
cleanup picked too.
2015-06-29 00:00:41 +02:00
Michael Natterer
b3e0e83274 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix the move tool (GimpEditSelectionTool) using the same principle
as the other "linked item" features, just a bit more complicated...

Never translate the active item and its linked items separately,
always translate the entire list at once.

The linked logic was distributed across the entire file. Changed the
code to prepare lists of items that are translated live (layers and
vectors), and items that are translated at the end (channels, masks
and the selection). In the motion and button release functions, simply
use the prepared lists without any further duplicated checking.

Also clean up the stuff a bit, there is more cleanup needed but first
the fix...

(cherry picked from commit 358f13f5b8)
2015-06-28 22:31:30 +02:00
Michael Natterer
a03d8c42e5 app: don't push an undo group if an item list transform has only one item
The fixes for bug 735906 made it push too many undo groups.

(cherry picked from commit a13c63a3f1)
2015-06-26 13:38:42 +02:00
Michael Natterer
1a14fed7b5 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix for translating layers from the PDB, and with the cursor keys
for gimpeditselectiontool. Moving layers with the mouse is still broken.

The approach is exactly the same as in 25a696c7.

(cherry picked from commit 3c706d00c6)
2015-06-26 12:05:14 +02:00
Cédric Valmary
e37b28baae Added Occitan translation 2015-06-25 20:17:45 +00:00
Cédric Valmary
7144165eab Updated Occitan translation 2015-06-25 20:17:23 +00:00
Cédric Valmary
5b35276b6f Updated Occitan translation 2015-06-25 20:08:37 +00:00
Cédric Valmary
af6cc5feaa Updated Occitan translation 2015-06-25 19:58:20 +00:00
Piotr Drąg
5627787e85 Updated POTFILES.in 2015-06-25 18:11:26 +02:00
Michael Natterer
d744c37557 Bug 735906 - Transform tools give unexpected results when transforming...
...certain sets of linked layers

Fix this bug for flip, rotate and general transforms (not for move yet):

gimp_item_linked_flip,rotate,transform(): always transform the passed
item too (do not filter it out of the list of items), so these functions
do the entire job of transforming a linked group now. Transforming the
active item separately didn't work (and is not implementable) if both
a layer and its parent layer group were linked.

flip tool, transform tool, layer->transform callbacks: don't call
gimp_item_foo() *and* (if the item is linked) gimp_item_linked_foo().
Instead call gimp_item_linked_foo() if the item is linked, and
gimp_item_foo() otherwise.

This commit also kills the mis-feature of transforming the selected
pixels of the active layer, and then the linked items completely. We
now either only transform the selected area *or* the linked group.

(cherry picked from commit 25a696c7f8)
2015-06-25 12:45:20 +02:00
Michael Natterer
e44e53a84b app: small fix for the previous patch in gimp_group_layer_update_size()
(cherry picked from commit b12ecc7195)
2015-06-24 19:43:03 +02:00
Balázs Úr
d8edb0f214 Updated Hungarian translation 2015-06-23 11:56:50 +00:00
Michael Natterer
e645b922bf app: fix update of group layers when size changes only trigger an offset change
In gimp_group_layer_update_size(), when the new size happens to be the
same as the old size, we need to call gimp_pickable_flush() on the
group projection so it is ready to be used for rendering the image,
just like in gimp_group_layer_stack_update().

(cherry picked from commit 2f8476bd18)
2015-06-23 10:31:36 +02:00
Cédric Valmary
26653680b5 Updated Occitan translation 2015-06-23 05:50:22 +00:00
Massimo Valentini
9bb3da5ed5 Bug 751178: GIMP doesn't load fonts from folders...
which path contains Cyrillic characters

(cherry picked from commit f0028624df)

 Conflicts:
	app/text/gimp-fonts.c
2015-06-22 20:23:08 +02:00
Massimo Valentini
9b2c6eb8c2 Bug 749406 - Displace segfaults on launch
(cherry picked from commit 90273fb57b)
2015-06-21 18:10:40 +02:00
Michael Natterer
afd4602957 app: remove "remove_children" parameter from gimp_image_item_list_filter()
It was always TRUE. The function should be renamed now, but not until
the merging of linked item fixes to 2-8 is done.

(cherry picked from commit 6d6efbbf8b)
2015-06-20 22:04:03 +02:00
Michael Natterer
5f41d750ec app: remove "remove_locked" parameter from gimp_image_item_list_filter()
This is just removal of unused code before fixing bug 735906.

(cherry picked from commit 64b24d169d)
2015-06-20 16:09:54 +02:00
Cédric Valmary
753e60791a Updated Occitan translation 2015-06-18 05:23:41 +00:00
Michael Natterer
f240527782 Bug 750953 - The Curves dialog should present per channel lines...
...when opened by the "Edit these settings as Curves" button on the
Levels dialog

The code to configure the entire GUI correctly was not even called
when initially creating the curves dialog (the color bars probably
looked right just because of default values of their own).

Factor out gimp_curves_tool_update_channel() which properly updates
the GUI. Call it after the dialog has been created, and when the
active channel changes.

(cherry picked from commit 014cd08c5c)
2015-06-15 00:17:00 +02:00
Michael Natterer
8fdbb5b5a3 libgimpwidgets: fix registration of GimpRuler's "unit" property
Install it with the PROP_UNIT id not PROP_LOWER (probably a copy &
paste mess). Spotted by John Cuppit.

(cherry picked from commit affef350e7)
2015-06-14 23:02:02 +02:00
Cédric Valmary
8fc54e2d04 Updated Occitan translation 2015-06-14 12:30:58 +00:00
Jehan
fb34d738f6 Bug 750556 - validate a tree cell modification on focus out.
For instance, modifying a layer and going directly to draw in the canvas
should not cancel the layer name.
You can still cancel a layer renaming in progress with ESC.

(cherry picked from commit 0aae50cfe2)
2015-06-14 14:04:28 +02:00
Cédric Valmary
c0e10bfd69 Updated Occitan translation 2015-06-12 12:53:13 +00:00
Daniel Mustieles
6280cd04fa Updated Spanish translation 2015-06-08 16:13:12 +00:00
Cédric Valmary
5b2bdbdba3 Updated Occitan translation 2015-06-07 19:53:15 +00:00
Michael Natterer
bb9f0794d7 Bug 749777 - Deleting current gradient from script leads to...
GIMP_IS_TAGGED error and possible Gimp crash (core segfault)

Fix again by restoring code I accidentially deleted in
ae708d6419. I don't really understand
what it is doing but better not remove it without understanding.

(cherry picked from commit 31aa1269ec)
2015-06-06 23:08:07 +02:00
Dušan Kazik
2d03ff740f Updated Slovak translation 2015-06-06 14:17:10 +00:00
Dušan Kazik
d16010cd30 Updated Slovak translation 2015-06-06 14:14:03 +00:00
Dušan Kazik
7eca6c23c3 Updated Slovak translation 2015-06-06 14:10:04 +00:00
Michael Natterer
5c1889c4e5 Bug 749777 - Deleting current gradient from script leads to...
GIMP_IS_TAGGED error and possible Gimp crash (core segfault)

Remove the object from GimpTagEntry's selected_items when it is
removed from the GimpContainer.

(cherry picked from commit ae708d6419)
2015-05-31 00:33:11 +02:00
Cédric Valmary
74e9ea17d5 Added Occitan translation 2015-05-29 20:18:29 +00:00
Daniel Martinez
45a0901211 Updated Aragonese translation 2015-05-28 11:38:42 +02:00
Jordi Mas
9594734133 Update Cataln translation 2015-05-27 21:58:09 +02:00
Marco Ciampa
103adbc36a Updated Italian translation 2015-05-25 08:43:57 +02:00
Dimitris Spingos
33721145c8 Updated Greek translation 2015-05-25 11:10:59 +03:00
Jordi Mas
c31ff768ca Update Catalan translation 2015-05-24 17:15:05 +02:00
Jordi Mas
6f6ac15e50 Update Catalan translation 2015-05-24 17:11:51 +02:00
Cédric Valmary
24a1bfb71f Updated Occitan translation 2015-05-22 21:25:30 +00:00
Jordi Mas
d2b2e03f9b Add Catalan translation for the win32 installer 2015-05-22 06:01:12 +02:00
Jehan
318df747a1 app: update a comment for translators.
The current comment is technical and not meant for translators, but it
ends up in po file. Move it where it won't be extracted and add a real
comment for translators. Ideally this string should not be extracted by
xgettext, but it won't verify domains.

(cherry picked from commit 2707cff890)
2015-05-21 22:58:48 +02:00
Michael Natterer
a349f33d1f Bug 749675 - gimp-2.8-doc job fails for undefined reference...
...to symbol 'fmod@@GLIBC_2.2.5'

Add -lm to GTKDOC_LIBS.
2015-05-21 18:41:35 +02:00
Cédric Valmary
dbf654d66b Updated Occitan translation 2015-05-20 20:11:30 +00:00
Dušan Kazik
844d855c9d Updated Slovak translation 2015-05-12 07:48:00 +00:00
Thomas Manni
4f32c496cf Bug 749133 - Named buffer: "Paste selected buffer as a new image" does not work when there is no image
Enable pasting a named buffer when there is no image.
2015-05-08 20:25:55 +02:00
Adrian Likins
8f1a4e8b19 Bug 748472 - Velocity Parameter on .GIH Brushes don't works
The pipe index for velocity was being multiplied
by 3.0 and rounded, making it larger than the
available rank and always clamped to the last
brush image in velocity ranks.

(cherry picked from commit c3387fcf67)
2015-05-07 09:39:06 +02:00
Simon Budig
e9b4fb163b Bug 738952 - Invalid syntax for (cond) causes a segfault
Segfault in script-fu, spotted by Pedro Gimeno.
2015-05-04 20:08:12 +02:00
Piotr Drąg
d2814a6416 Updated Polish translation 2015-05-02 17:37:11 +02:00
Michael Natterer
bfd8def5c0 Bug 748762 - GIMP crashes when a selection is outside a layer boundary...
...and % is selected in rotate Tool

Refuse to start any transform tool (with an error message) if the
selection doesn't intersect with the layer.

(cherry picked from commit 93414342c3)
2015-05-02 00:09:18 -04:00
Michael Natterer
a4dfe7c055 NEWS: cosmetic fixes for the cosmetic fixes 2015-05-01 19:43:16 -04:00
Alexandre Prokoudine
3b0fd1dcd9 Cosmetic fixes to NEWS 2015-04-30 02:40:25 +03:00
Michael Natterer
36d6f724da Bug 748505 - Don't do nothing and report no error when trying to open a fifo
Remove the check for opening a regular file from
file_open_dialog_response() and call the functions in file-open
unconditionally. This is the actual fix because the check was simply
bailing out with no message or anything when trying to open a
non-regular file, whereas the checks in file-open return proper error
messsages.

In file_open_image(), do the checks for being a regular and readable
file first, so we don't run into reading from other files when trying
to figure the file format.

(cherry picked from commit 2480d69341)
2015-04-29 19:06:57 -04:00
Sveinn í Felli
d7108fbac5 Updated Icelandic translation 2015-04-29 14:27:15 +00:00
Sveinn í Felli
8e506cf946 Updated Icelandic translation 2015-04-29 12:01:51 +00:00
Michael Natterer
bb0da3b410 NEWS: fix style 2015-04-28 09:33:38 -04:00
Massimo Valentini
8754a060bd Revert "app: properly sample lanczos kernel luts"
This reverts commit 7172911bec.

see Bug 748536 for an explanation.
2015-04-28 07:18:41 +02:00
Michael Natterer
bcddc02b37 NEWS: updates 2015-04-27 23:10:05 -04:00
Daniel Martinez
51ffd4fe10 Added Aragonese translations for general UI and script-fu 2015-04-27 23:24:37 +02:00
Massimo Valentini
40512895d9 Bug 698859: PSD import filter: opening a PSD file causes...
...file-psd-load segfault.

Fix loading of PSDs where the number of "end group" markers doesn't
match the number of "start group" markers, which seems to be what is
saved by Photoshop in some cases/versions/whatever.
2015-04-25 23:41:50 -04:00
Daniel Martinez
654cf7f157 Added Aragonese translation for tags and tips 2015-04-22 13:36:06 +02:00
Sveinn í Felli
afab779aef Updated Icelandic translation 2015-04-20 13:46:18 +00:00
Michael Natterer
df7969c08d Bug 564697 - Recomposing 'YCbCrITU R470 256' and 'YCbCrITU R709 256'...
...causes 'Error scanning 'decompose-data' parasite: too few layers found'

Fix the identifier strings of the color models to have underscores
instead of spaces. Found by Jonathan Tait.
2015-04-14 20:12:24 +02:00
Mukund Sivaraman
6faa39a3b2 windows: Call SetDLLDirectory() in the app
With this patch, there should be no more need to set PATH on Windows
before running GIMP.

This patch was tested by me and drawoc, but there could be some
undetected issues lurking. Revert if any problems arise.

(cherry picked from commit 60197c227d)
2015-04-13 15:46:48 +05:30
Michael Natterer
7b7921a319 Bug 686862 - Seek less when saving XCF files
Get rid of most seeking by writing the tile offsets to a table in
memory, instead of directly to the file after each tile. Only seek
back after writing all tiles, in order to save the entire table at
once.

(cherry picked from commit 744eeb8e1a)
2015-04-10 12:52:15 +02:00
Sveinn í Felli
54a1b39a91 Updated Icelandic translation 2015-04-09 11:45:00 +00:00
Michael Natterer
009a7b10ce Bug 746649 - Duplicate auto-saved presets for color tools
Implement GimpConfigInterface::equal() for the brightness-contrast,
colorize, and threshold config objects, to prevent the parent class'
timestamp being compared by the generic default implementation.

(cherry picked from commit 81fa953ccb)
2015-04-09 01:22:09 +02:00
Mattias Põldaru
fe43d9976b [l10n] Updated Estonian translation 2015-04-08 20:40:20 +03:00
Mattias Põldaru
aa9ff01172 [l10n] Updated Estonian translation 2015-04-08 20:37:28 +03:00
Mattias Põldaru
dee9444360 [l10n] Updated Estonian translation 2015-04-08 20:36:49 +03:00
Mattias Põldaru
08f808a528 [l10n] Updated Estonian translation 2015-04-08 20:36:12 +03:00
Mattias Põldaru
8badfb90fe [l10n] Updated Estonian translation 2015-04-08 20:35:23 +03:00
Mattias Põldaru
26abee02b0 [l10n] Updated Estonian translation 2015-04-08 20:34:23 +03:00
Mattias Põldaru
15101a37a3 [l10n] Updated Estonian translation 2015-04-08 20:33:49 +03:00
Милош Поповић
357ae8ba2a Updated Serbian translation 2015-04-01 16:31:30 +00:00
Baurzhan Muftakhidinov
8f3373dba8 Updated Kazakh translation 2015-03-30 07:07:30 +00:00
Stas Solovey
3357fb5777 Updated Russian translation 2015-03-23 16:38:54 +00:00
Samir Ribic
a626d314ec Added Bosnian translation 2015-03-14 13:39:41 +00:00
Samir Ribic
430693eb73 Added Bosnian translation 2015-03-14 13:39:23 +00:00
Samir Ribic
b2e5a6fcfd Updated Bosnian translation 2015-03-14 13:35:57 +00:00
Samir Ribic
d5904dd5c4 Added Bosnian translation 2015-03-14 13:35:36 +00:00
Samir Ribic
6ad0a837e4 Added Bosnian translation 2015-03-14 13:35:18 +00:00
Samir Ribic
ec1bfb35dd Added Bosnian translation 2015-03-14 13:33:45 +00:00
Samir Ribic
760b9e9214 Added Bosnian translation 2015-03-13 23:02:39 +00:00
Samir Ribic
632060ceed Added Bosnian translation 2015-03-13 22:57:51 +00:00
Michael Natterer
39007dd2aa Bug 742821 - Grayscale-mode image malformed when exported as planar raw image data
Fix saving of planar data by taking the actual number of components of
the drawable into account, instead of always assuming 3 (RGB).

(cherry picked from commit e1baaa0677)
2015-03-04 22:37:58 +01:00
Joao S. O. Bueno
621f5e296d openraster: Implements exporting and loading group layers.
This preserves the layer structure and
brings it in pair to MyPaint development branch
(allowing interchange of .ora files with group layers).

Previous behavior on load was oppening all
sub-layers in a flat-space, with no groups,
and flatten layer groups on export.

The implemented behavior accords to the
openraster spec.

Conflicts:
	plug-ins/pygimp/plug-ins/file-openraster.py
2015-02-27 12:47:41 -03:00
Cheng-Chia Tseng
1ffac928c5 Updated Chinese (Taiwan) translation 2015-02-27 14:57:28 +00:00
Michael Natterer
677ccd4246 Bug 745126 - gimp_preview_area_blend() fails for RGBA image...
...if buf1 and buf2 have same alpha value

Fix a misplaced } that was causing the final write to the destination
buffer to be executed only for the case where the alphas are
different. Thanks to Jonathan Tait.

(cherry picked from commit 36548fd1ad)
2015-02-27 09:53:08 +01:00
John Ralls
6bbae6da7a Fix clang complaining about missing void in function prototypes. 2015-02-23 15:20:17 -08:00
João S. O. Bueno
1601c9123f openraster: filesystem encoding could return None - defaults to utf-8 2015-02-22 12:53:13 -03:00
João S. O. Bueno
0e1c51eca5 Bug 743612: Takes the filesystem encoding in consideration 2015-02-22 12:53:13 -03:00
Dušan Kazik
a90bae398f Updated Slovak translation 2015-02-22 07:45:40 +00:00
Michael Natterer
74352ca2ca Bug 744127 - Restore tab hover delay during drag-n-drops
Fix the return values of drag_motion() and drag_drop() callbacks.

Commit 7b85cf4de8 started mixing up
the two unrelated concepts

- the widgets has handled the event
- a drop here would do something / did something successfully

into one boolean value being both the function's return value and
a success indicator for the DND operation.

Untangle the concepts again by returning FALSE when
gimp_paned_box_will_handle_drag() returns TRUE (indicating that the
docking DND mechanism will kick in), and always returning TRUE
otherwise; and by using the state "drop was / would be successful"
only for calling gdk_drag_status() and gtk_drag_finish().

This way we make sure that:

- drag_leave() is called reliably again (because we return TRUE if no
  other widget will handle the event)
- drag data is freed reliably again (because we always call
  gtk_drag_finish())

(cherry picked from commit 29456b96f9)
2015-02-19 22:43:34 +01:00
Joao S. O. Bueno
ae3d1f9c2f Fix PF_LAYER always being passed as a Layer, even if object is a LayerGroup 2015-02-10 12:00:36 -02:00
Anders Jonsson
ad2b012795 Updated Swedish translation 2015-02-08 12:58:55 +00:00
Inaki Larranaga Murgoitio
ccb65c8a9c Updated Basque language 2015-02-07 15:59:39 +01:00
Inaki Larranaga Murgoitio
2cff478eaf Updated Basque language 2015-02-07 15:50:46 +01:00
Inaki Larranaga Murgoitio
3177443a67 Updated Basque language 2015-02-07 15:48:16 +01:00
Inaki Larranaga Murgoitio
58ac33ad24 Updated Basque language 2015-02-07 15:43:58 +01:00
Inaki Larranaga Murgoitio
38622454b6 Updated Basque language 2015-02-07 15:40:28 +01:00
Inaki Larranaga Murgoitio
2e02570d66 Updated Basque language 2015-02-07 15:36:45 +01:00
Inaki Larranaga Murgoitio
d05d315f8e Updated Basque language 2015-02-07 15:32:30 +01:00
Inaki Larranaga Murgoitio
a41a27fe53 Updated Basque language 2015-02-07 15:26:42 +01:00
Sveinn í Felli
5575b519ac Updated Icelandic translation 2015-02-05 13:13:34 +00:00
Sveinn í Felli
e4e016c9f1 Updated Icelandic translation 2015-02-04 18:26:09 +00:00
Massimo Valentini
9d6c4685a9 Bug 742775: Crash when editing text with certain fonts
(cherry picked from commit 09c5fcc32b)
2015-02-03 18:33:29 +01:00
GNOME Translation Robot
af5c9307d7 Updated Chinese (Taiwan) translation 2015-02-03 07:54:04 +00:00
Christian Kirbach
63382d8b1d Updated German translation 2015-01-29 18:03:38 +00:00
Sveinn í Felli
37921372cd Updated Icelandic translation 2015-01-29 16:18:20 +00:00
Massimo Valentini
cca7f6f8a3 Bug 681895: PDF export does not save fonts properly
Set the resolution of the PangoFontMap from which the
PangoContext is created, set cairo font options only
on the PangoContext, explicitely set wrap mode and
do not force a layout height.

(cherry picked from commit a215fbda56)

Conflicts:
	plug-ins/common/file-pdf-save.c
2015-01-28 19:33:49 +01:00
Marco Ciampa
40722eeaff Updated italian translation. 2015-01-28 14:51:00 +01:00
Sveinn í Felli
79e56a8b46 Updated Icelandic translation 2015-01-26 15:30:36 +00:00
Michael Natterer
00fb9fe50e Bug 742159 - Empty gradient in loaded tool preset
gimp_tool_preset_deserialize_property(): initialize all object
properties (brush, pattern, gradient, ...) of the preset's
GimpToolOptions with non-NULL values from the user context,
so loading a broken preset never results in NULL objects being
used.

(cherry picked from commit ba69862a44)
2015-01-25 16:22:29 +01:00
Inaki Larranaga Murgoitio
1e2ebd6699 Updated Basque language 2015-01-20 21:19:05 +01:00
Inaki Larranaga Murgoitio
d9d1f8f2b6 Updated Basque language 2015-01-20 21:14:38 +01:00
Inaki Larranaga Murgoitio
7d2634ab0d Updated Basque language 2015-01-20 21:13:58 +01:00
Inaki Larranaga Murgoitio
6c8250efdc Updated Basque language 2015-01-20 21:10:25 +01:00
Sveinn í Felli
d3002c8c80 Updated Icelandic translation 2015-01-15 17:11:49 +00:00
Sveinn í Felli
864c724cae Updated Icelandic translation 2015-01-15 13:20:01 +00:00
Sveinn í Felli
3f1f3429d7 Updated Icelandic translation 2015-01-15 13:01:14 +00:00
Sveinn í Felli
bfa620c119 Updated Icelandic translation 2015-01-15 12:39:32 +00:00
GNOME Translation Robot
3d2c4629fe Updated Icelandic translation 2015-01-15 12:24:54 +00:00
Massimo Valentini
8de8583064 Bug 736411 - Ruler updates cause slowdown when painting
Reuse the cairo_t from expose() in gimp_ruler_draw_pos() instead of
creating a new one.

(cherry picked from commit 20863440fb)
2015-01-10 23:40:00 +01:00
Sveinn í Felli
a4b4957599 Updated Icelandic translation 2015-01-10 14:23:57 +00:00
Sveinn í Felli
049a68bebd Added Icelandic translation 2015-01-10 14:14:14 +00:00
Sveinn í Felli
29400ec242 Updated Icelandic translation 2015-01-10 14:05:59 +00:00
Kristian Rietveld
ac9fdad83a Bug 736746 - Alt+Number only switches to lower-numbered windows
Add "action-group" signal to GimpActionGroup, such that we can
properly set the accel group and connect the accelerator on actions
that are created after the initial setup of the menus.

(cherry picked from commit dd7d332fb8)
2015-01-09 23:06:53 +01:00
Michael Natterer
440a045986 Bug 742202 - new layer/path dialog opens always in the upper left corner
gimp_dialog_set_property(): when setting a non-toplevel parent widget,
don't just set the dialog's screen, also set the window position to
GTK_WIN_POS_MOUSE, so the window opens at the mouse position.

(cherry picked from commit 1dd2752949)
2015-01-08 21:19:23 +01:00
Michael Natterer
04c26457e3 Bug 742229 - "pixels" entries get added to unit menus on each popup
_gimp_unit_store_sync_units(): don't trigger a sync of newly added
units if we encounter GIMP_UNIT_PERCENT, it has a special value that
is always larger than any other unit. All unit menus containing
"percent" were broken the same way.

(cherry picked from commit 9df726cbad)
2015-01-03 17:25:39 +01:00
Mukund Sivaraman
ffa998d487 file-tga: Use the colormap origin / first entry index field 2014-12-20 23:15:32 +05:30
Muhammet Kara
9741a811ec Updated Turkish translation 2014-12-12 14:08:59 +00:00
Muhammet Kara
0553cbc084 Updated Turkish translation 2014-12-12 14:04:49 +00:00
Muhammet Kara
cdeb117cc5 Updated Turkish translation 2014-12-12 13:52:49 +00:00
Muhammet Kara
774b8af405 Updated Turkish translation 2014-12-12 13:35:50 +00:00
Anders Jonsson
daa3ddce8a Updated Swedish translation 2014-12-11 20:07:12 +00:00
Muhammet Kara
a43119bbab Updated Turkish translation 2014-12-11 19:13:06 +00:00
Massimo Valentini
cd9e878554 Bug 741352: Cage tool crashes pressing Enter after Esc
(cherry picked from commit af64a104c3)

Conflicts:
	app/tools/gimpcagetool.c
2014-12-11 18:37:57 +01:00
Massimo Valentini
948e7a209d Bug 741179: Export does not remember compression of input...
for Deflated TIFF

similar to commit 91738c3b9

(cherry picked from commit 068745dc5c)
2014-12-09 18:15:24 +01:00
Massimo Valentini
350300c55a Bug 740193: Foreground selection causes segfault
Create leaves if max-min <= limits or pivot == max
otherwise it is possible to start an infinite recursion
or to access a buffer beyond its end.
2014-12-04 18:33:54 +01:00
André Schutten
cd73f98417 Updated Dutch translation gimp-2-8 2014-12-03 17:49:58 +01:00
André Schutten
7b62d0fe86 Updated Dutch translation gimp-2-8 2014-12-03 17:49:44 +01:00
André Schutten
d292d22bee Updated Dutch translation gimp-2-8 2014-12-03 17:49:06 +01:00
André Schutten
07023d6d2a Updated Dutch translation gimp-2-8 2014-12-03 17:48:34 +01:00
André Schutten
59ce8367ae Updated Dutch translation gimp-2-8 2014-12-03 17:48:16 +01:00
André Schutten
6ccb01eac3 Updated Dutch translation gimp-2-8 2014-12-03 17:47:44 +01:00
Michael Natterer
a01856d820 Bug 733839 - Crashes on scaling a layer with mask within a group
gimp_layer_scale(): scale the mask first, so group layer projection
updating doesn't run into wrong tile manager sizes at the wrong
time.
2014-11-30 23:45:46 +01:00
Saul Goode
dad54b67c1 Bug 739457 - Some errors not detected for GIMP_PDB_COLOR arguments
Check that all 3 array elements are numbers-

(cherry picked from commit d03b33f1d9)
2014-11-30 18:34:01 +01:00
Michael Natterer
d6c18b2a99 libgimpwidgets: make GimpColorSelection's main_hbox expand vertically
so the color dialogs become properly resizable again. This must have
been broken for ages.

(cherry picked from commit aafc2368cd)
2014-11-29 12:54:46 +01:00
Michael Natterer
069bb4b078 Bug 740059 - Text tool changes from "Dynamic" to "Fixed"...
after text box moved using Alt key

In gimp_text_tool_button_release(), handle the "moving" case
separately instead of running into the default else branch that
assumes the user clicked outside and made a new text layer.

(cherry picked from commit 293e5bde9e)
2014-11-29 00:00:00 +01:00
Michael Natterer
4bdfb6e27c Bug 739775 - Select->Distort activates topmost layer
Remeber the active layer in distress-selection.scm and set it again
when the script is done.

(cherry picked from commit 300b756e85)
2014-11-23 20:54:26 +01:00
Dimitris Spingos
2d79330b64 Updated Greek translation 2014-11-23 23:09:49 +02:00
Rūdolfs Mazurs
e84f5909e8 Updated Latvian translation 2014-11-23 19:08:05 +02:00
Téo Mazars
2b404b0cd0 Bug 681140 - Filter Render/Line Nova: renders in black instead...
Store the foreground color before setting the default context.

(cherry picked from commit 4de78f51b3)
2014-11-22 08:49:11 +01:00
Daniel Mustieles
3f03cd9366 Updated Spanish translation 2014-11-19 13:36:15 +01:00
Saul Goode
57603055c3 Bug 740203 - Textured Logo scripts inappropriately defines a global
Remove global proc def in textured-logo script.
2014-11-18 21:37:25 +01:00
Timo Jyrinki
42208d0a82 Single Finnish translation string update. 2014-11-16 20:03:19 +02:00
Lasse Liehu
6060c3a972 Finnish translation update 2014-11-15 13:16:23 +02:00
Андрій Бандура
7a500bbe25 Updated Ukrainian translation 2014-11-11 21:12:52 +00:00
Michael Natterer
e34a97a46b Bug 739486 - Enter doesn't confirm "export image as brush"
Set the "activates-default" property on the spinbutton and entry in
the file-gbr-save dialog.

(cherry picked from commit 51c35d4c78)
2014-11-01 15:03:43 +01:00
Mikael Magnusson
949e90e2a7 libgimpconfig: fix if condition
(cherry picked from commit d96096515e)
(cherry picked from commit cf3e7bc40b)
2014-10-31 04:09:18 +01:00
Mikael Magnusson
6189fa9848 gfig: close file on parse errors
(cherry picked from commit 3ce761e3b3)
2014-10-31 04:07:57 +01:00
Michael Natterer
ed7896a838 Bug 567333 - Using tab to toggle docked "utility windows" does not...
...bring focus back to GIMP image window

When showing docks in multi-window-mode, try to set the keyboard focus
back to the active display because it might have been stolen by a dock.

(cherry picked from commit 225a0ce27c)
2014-10-29 23:41:35 +01:00
Sven Claussner
13f02f1cb5 Jenkins tutorial: fix file permissions
Set to 644.
2014-10-26 12:54:41 +01:00
Sven Claussner
c1ffb054d8 Update Jenkins tutorial
Add missing information and screenshot.
Cleanup.
2014-10-26 12:49:55 +01:00
Jehan
7a09c0f449 Bug 675436 - Tabs always present when docks shown and absent when docks hidden
The main change is that even with only 1 image in single window mode,
there is now a tab.
Also whatever the number of images when you hide docks with Tab, no tabs
are shown.

(cherry picked from commit 816f651b82)
2014-10-23 00:39:14 +02:00
Mukund Sivaraman
21869f257d file-jpeg: Improve description of file-jpeg-save args (#738443)
(cherry picked from commit 5c0cdb8ca8)
2014-10-20 18:48:39 +05:30
Michael Natterer
29d1695911 Bug 738329 - xcf_seek_pos() can cause unexpected OS behavior
Change XCF saving to never seek past the end of the partially written
file. The only places where we still did this was when skipping the
offset tables for layers, channels, levels and tiles.

Now we write an all-zero offset table first, and then only seek around
in areas of the file that already exist. This also simplifies the code
a bit. Changed comments to make it clear what happens.

(cherry picked from commit 5a4d865358)
2014-10-18 18:59:28 +02:00
Michael Natterer
bc298871dc app: remove xcf_seek_end(), it's unused, and should not be used any longer
(cherry picked from commit b9ff01306e)
2014-10-18 18:38:16 +02:00
Alexandre Prokoudine
02c3b5e360 Updated Russian translation 2014-10-13 02:03:55 +04:00
Andika Triwidada
1b04c23a13 Updated Indonesian translation 2014-10-11 09:31:10 +00:00
Michael Natterer
b2ef624e26 app: revert xcf_write_int8() to work like in 2.8.10, and fix its return value
This reverts one line of commit 0657a68d2e
which is supposed to only add docs. Also, actually return the number of
byzes written, not always the number of bytes we intended to write.
2014-10-09 22:45:58 +02:00
Michael Natterer
8b6f2751f2 Revert "Use the online help by default"
This reverts commit 1d5d116aa3.

There is a dialog telling the user that there is no local manual,
and that dialog has a button to use the online version. There is
no reason whatsoever to default to the online version.

Also, don't change the defaults in the custom OSX gimprc.
2014-10-09 22:37:43 +02:00
Michael Natterer
f548021605 Bug 738037 - Wrong order of parameters in the Sobel plugin
Get the parameters from the right PDB arguments (parameter index was
off-by-one).

(cherry picked from commit fe8cb9788b)
2014-10-07 13:24:20 +02:00
Mukund Sivaraman
2c3b4a4ffb file-bmp: Use cleaner serialization (sign)
(cherry picked from commit bcf16161e6)
2014-10-03 18:04:45 +05:30
Mukund Sivaraman
ba410efe36 file-bmp: Fix final bfSize patched into BMP header (#737669)
(cherry picked from commit db18c1f172)
2014-10-03 11:16:43 +05:30
Michael Natterer
90b7f24190 Bug 737583 - Fix static placement of Chinese IME window
Call gtk_im_context_set_cursor_location() whenever we draw the text
tool cursor or start a preedit sequence.

(cherry picked from commit 7ee69c3053)
2014-10-03 00:09:08 +02:00
Michael Natterer
7e658a61db Bug 735505 - Weird Characters in Zoom Button
On windows, use a normal space instead of U+2009 THIN SPACE for
separating the scale percentage from the percent sign.

(cherry picked from commit c5ed3e56c9)
2014-09-28 00:13:02 +02:00
Mukund Sivaraman
bb3e3768d1 file-gif-load: Fix proto (Bug #737375)
(cherry picked from commit 2821d77e0c)
2014-09-26 09:02:05 +05:30
Mukund Sivaraman
2fd04aca78 file-gif-load: Try to use as much as possible of broken GIF file (Bug #737375)
(cherry picked from commit 68cb57d97e)

Conflicts:
	plug-ins/common/file-gif-load.c
2014-09-26 08:52:41 +05:30
Mukund Sivaraman
c9192d25c7 file-pdf-save: Fix param index (Bug #736281)
(cherry picked from commit 7d3aafe323)
2014-09-26 00:20:25 +05:30
Mukund Sivaraman
90f13f4f42 file-gif-load: Fail early in several other places if GetDataBlocks() fails (Bug #737375)
(cherry picked from commit 2377c8c2a9)
2014-09-25 23:52:22 +05:30
Mukund Sivaraman
eb8947d511 file-gif-load: Fail early if GetCode() fails (Bug #737375)
(cherry picked from commit 55150487ff)
2014-09-25 22:51:19 +05:30
Michael Natterer
e0e2b83005 Bug 601139 - Gifg no longer usable with the new brush behavior
Call gimp_context_set_brush_default_size() after each
gimp_context_set_brush() which restores the original
behavior of the plug-in.

(cherry picked from commit fa92203dd0)
2014-09-25 00:26:14 +02:00
Dušan Kazik
9d5a6d39fd Updated Slovak translation 2014-09-22 19:04:47 +00:00
Sven Claussner
563f334037 Update OS X build README
* Add Xcode path for Xcode versions before 4.3.
* Add Git download URL for OS X 10.6 Snow Leopard.
* Cosmetic fixes.
2014-09-21 19:52:12 +02:00
Balázs Úr
6dd42b4abe Updated Hungarian translation 2014-09-21 11:17:29 +00:00
Michael Natterer
7dda7a3ceb Bug 737008 - Curve color always black
Don't hardcode "black" for the "Value" curve in GimpCurvesTool.
Instead, pass a NULL color to GimpCurveView, which is then interpreted
as the theme's text color (the curve's background is the theme's text
background color). We still hardcode pure red, green and blue for the
other curves.

(cherry picked from commit 90c967a39f)
2014-09-21 12:33:10 +02:00
Andika Triwidada
0f3b97d7c0 Updated Indonesian translation 2014-09-21 07:47:46 +00:00
Balázs Úr
b50835704e Updated Hungarian translation 2014-09-20 21:43:55 +00:00
Andika Triwidada
06d4d7cea4 Updated Indonesian translation 2014-09-20 15:09:17 +00:00
Andika Triwidada
d45a1cfb71 Updated Indonesian translation 2014-09-20 09:13:07 +00:00
Andika Triwidada
f7e227ca73 Updated Indonesian translation 2014-09-19 16:17:33 +00:00
Michael Natterer
3a3e06e9ac app: revert destruction of formatting from commit 7a75d4df
but leave the actual change (OS X specific about menu label) there.
2014-09-17 12:21:10 +02:00
Jehan
79b98314ea app: do not crash when opening a file with unimplemented compression
Our code was planning zlib and fractal compressions for eons, but would
crash against a file which would be actually using these. It means that
if we implement one of these compressions for 2.10, anyone with GIMP 2.8
(and likely earlier too) would crash when opening a legit file using the
new compressions. That's very bad.
Never use g_error() in non-fatale, expected, situations!

(cherry picked from commit d4dba427ac)
2014-09-15 16:26:20 +02:00
Sven Claussner
4148594f82 Fix garbled file permissions
Revert permissions 755 to 644, introduced by commit
ef0ef921b8
2014-09-14 15:15:35 +02:00
Sven Claussner
ef0ef921b8 Bug 721482 - Make language codes relocatable
Although all translation files are in the OS X bundle GIMP didn't
recognize other languages than the system's language and English (en_US)
on OS X on other machines. It searched the language code file from the
iso-codes package (iso_639.xml) in the build prefix which is usually not
existing on other machines.
This commit puts that file into the OS X bundle and makes GIMP search
for it there.
2014-09-14 14:47:17 +02:00
Ville-Pekka Vainio
95c3afcab8 Finnish translation update by Jiri Grönroos 2014-09-11 23:37:54 +03:00
Balázs Úr
2123871bad Updated Hungarian translation 2014-09-11 18:01:41 +00:00
Michael Natterer
d217a0bb2a Bug 735904 - Zealous crop of an image with a selection duplicates image data
Clear the selection before calling gimp_drawable_merge_shadow(), because
the selection affects the merge, which is unwanted here.

(cherry picked from commit aa0912fcd6)
2014-09-10 00:11:33 +02:00
Sven Claussner
b9c94f4215 Fix typo 2014-09-09 23:30:17 +02:00
Sven Claussner
d947baed9a OS X build README fixes
* use cp to backup user's .profile file instead of mv
* replace references to osx-build branch by gimp-2-8 branch references
* download patches
* describe patch subdirectory
2014-09-09 23:26:30 +02:00
Sven Claussner
3d79144c49 Bug 733525 - Make poppler-data a dependency of poppler
Make poppler-data a dependency of poppler, otherwise it won't become
included.
2014-09-09 23:26:29 +02:00
Jehan
b1c0b8b2e0 Bug 735828 - configure fails for python < 2.7.
sys.version_info named components only available since 2.7, though GIMP
is supposed to support 2.5.0 and over. Used numerical tuple index
instead.

(cherry picked from commit d249ec348b)
2014-09-07 16:36:31 +02:00
su-v
9ff7837b5a Bug 731446 - Files opened twice via command line
Prevent Cocoa command line argument parsing for files, using
same fix as in Gedit commit 86e7dd7b72fc35c6d9b19a75bbc715aee19304b4

(cherry picked from commit 97d6629d66)
2014-09-06 01:08:24 +02:00
Hartmut Kuhse
ed42899041 app: erroneously dereferencing paint_options
fixing commit 4d6640ff79

(cherry picked from commit 50463d8d5a)
2014-08-31 15:30:06 +02:00
Philippe Teuwen
c7c4475eaf file-bmp: Use masks when BI_BITFIELDS method is found
(cherry picked from commit 6e73a6278f)

Conflicts:
	plug-ins/file-bmp/bmp-read.c
2014-08-28 19:42:18 +05:30
Mukund Sivaraman
121b4d1fa8 file-bmp: Print compression method in debug build
(cherry picked from commit 24cf89aa68)
2014-08-28 19:41:43 +05:30
Mukund Sivaraman
8cb079bab7 file-bmp: Fix format specifiers
(cherry picked from commit 1d10c4d88f)
2014-08-28 19:41:25 +05:30
Michael Natterer
f6e7781c23 configure.ac: post release version bump to 2.8.15 2014-08-26 19:45:28 +02:00
Michael Natterer
e62e6fe354 configure.ac, NEWS: release 2.8.14
The last release broke libtool versioning (gimp_interface_age), so
we roll out 2.8.14 before any distro picks up 2.8.12.
2014-08-26 19:02:28 +02:00
Michael Natterer
e99399e45b configure.ac: post release version bump to 2.8.13 2014-08-25 22:38:43 +02:00
Michael Natterer
c5fbf02a31 configure.ac: bump version to 2.8.12
And commit gimprc files that are regenerated by make dist.
2014-08-25 21:49:53 +02:00
Yuri Myasoedov
d1d7643016 Updated Russian translation:
* Fixed https://bugzilla.gnome.org/show_bug.cgi?id=674076
2014-08-25 13:30:52 +04:00
Christian Kirbach
5fff2b21d9 Updated German translation 2014-08-25 09:15:54 +00:00
Michael Natterer
1a13a714ab Revert "app: add gimpmarshal.[ch] to DISTCLEANFILES"
This reverts commit 2772c2d64e.

Apparently this was some local build fnord that doesn't need to be
fixed after all. Not needed in a clean build, but needs further
investigation.
2014-08-25 09:37:06 +02:00
Michael Natterer
2772c2d64e app: add gimpmarshal.[ch] to DISTCLEANFILES 2014-08-24 23:07:52 +02:00
Michael Natterer
fc0a0b828b Bug 731384 - Truncated abr files causing Gimp to not load/crash
Add some feof() checks in the ABR brush loaders and error out on
truncated files. This is by far not as good as in master, but at least
should prevent the crashes on lots of truncated files.
2014-08-24 16:37:29 +02:00
Massimo Valentini
d723ae6b34 Bug 732072: Image windows created by script-fu plug-ins...
are opened behind the previously focused Image Window

libgimp/gimpui.c bypasses gtk in setting the transient_for
property and so it is not possible to call
gtk_set_transient_for (dialog, NULL), but it is necessary
to go directly to the gdk level.

(cherry picked from commit 51d3498cd4)
2014-08-21 12:43:56 +02:00
Michael Natterer
d5939fb263 Makefile.am: Add gtk-doc.make to EXTRA_DIST
(cherry picked from commit dfd2998e60)
2014-08-20 17:28:10 +02:00
Michael Natterer
7fc822786f Bug 706275 - "View/Snap to active path" doesn't snap to layer center...
...with the Move tool

Add the missing code to snap to the rectangle's center in
gimp_image_snap_rectangle().

(cherry picked from commit a0a7e713b4)
2014-08-17 22:17:36 +02:00
Mikael Magnusson
c828cfe8c6 NEWS: fix typo 2014-08-16 23:52:06 +02:00
Sven Claussner
6a1a40dc3e Jenkins tutorial: review and fix flaws 2014-08-16 17:34:59 +02:00
Michael Natterer
3644191055 NEWS: updates for 2.8.12 2014-08-15 22:32:58 +02:00
André Schutten
48d093cf4c Updated Dutch translation 2-8 2014-08-11 13:02:36 +02:00
Marco Ciampa
ce79e65bad Added doap description translation in Italian.
(cherry picked from commit 1c3a5d3481)
2014-08-08 17:30:47 +02:00
Piotr Drąg
6ab4c23bc6 Updated Polish translation 2014-08-07 22:02:30 +02:00
Sven Claussner
165c01c8b1 Make gimp.doap compliant to the new DOAP file style (GUADEC 2014):
* Add new mandatory fields 'description' and 'programming-language'.

Add download page URL.
Add bug-tracker URL.
Add programming language.

Unify description in gimp.doap and gimp.appdata.xml.in.
2014-08-07 21:05:54 +02:00
Sven Claussner
6fa627d47d Bug 733525 - Add poppler-data package to the OS X build
Add poppler-data package to the OS X build.

****

Bugfix: show Cyrillic and Asian (CJK) characters in PDF files.
2014-08-05 21:15:02 +02:00
Sven Claussner
2629e7f052 Fix German translation issue
Translate untranslated 'tag' to 'Stichwort' which is the most usual
translation in this domain.
(cherry picked from commit 11fabc84bcb3b4bd2a0524a84e8a97cabc76c9ec)
2014-08-02 10:11:28 +02:00
Jehan
71bf6c46f1 plug-ins: use standard error on failed file descriptor in file-pdf-save.
The standard message used all over our code is:
"Could not open '%s' for writing: %s".
(cherry picked from commit 4ae597c586)
2014-07-29 17:01:34 +00:00
Jehan
8bbe2485e2 Bug 733824 - PDF export fails without warning if open in other application.
This happens on the Windows platforms in particular where applications
can lock files, preventing GIMP to obtain a file descriptor for writing.
(cherry picked from commit eaa4bf2270)
2014-07-29 16:18:44 +00:00
Jehan
027fc53bc3 INSTALL - add poppler-data as recommended data package.
See also commit 9c2dbf46c5 on master.
2014-07-29 16:15:22 +00:00
Jehan
6fa0bc3018 configure: warning when compiling with old fontconfig on Win32.
Fontconfig had a few bugs in the default configuration when compiled for
Windows. These issues are fixed from version 2.11.1. Display a warning
when compiling on win32 platform with older versions.
See in particular bugs 708110 and 703331.
(cherry picked from commit 6b2963928e)
2014-07-29 16:10:19 +00:00
Jehan
46726f5e2d configure: search only Python 2 interpreter and headers.
Do not accept Python 3 interpreter/headers, even when this is the
default installed Python. Search only for Python 2.
(cherry picked from commit 6714a414a7)
2014-07-29 16:04:39 +00:00
Jehan
d3f94bee96 configure: clean out forgotten debug print.
(cherry picked from commit f1fe8b9c24)
2014-07-29 16:03:02 +00:00
Marco Ciampa
9afa9a4c9e Updated italian translation 2014-07-25 18:37:10 +02:00
Sven Claussner
f4562d96e4 OSX build: update GIMP 2.8 module
Rename temporary gimp-osx module to gimp-2.8 module for production use.
2014-07-25 10:21:21 +02:00
Piotr Drąg
cf451e7a1a Updated Polish translation 2014-07-23 17:47:11 +02:00
Sven Claussner
aab16f7b62 Fix file permissions
Replace 755 by 644 for text files.
2014-07-22 19:04:19 +02:00
Sven Claussner
15b3fb4b12 Cleanup JHBuild configuration for OS X build
Use the latest stable dependency versions for the GIMP 2.8 build.
Unify patch file name pattern.
Remove obsolete patches.
Remove trailing whitespaces.
2014-07-22 17:27:55 +02:00
Sven Claussner
7329ae0257 Apply menu separator bugfix 2014-07-21 20:19:51 +02:00
Sven Claussner
c126cc0d68 Update OS X build dependencies
Update atk, curl, dbus, gvfs, harfbuzz, iso-codes, libpng, pango,
pixman, poppler, python
2014-07-20 21:38:36 +02:00
Massimo Valentini
e1e8e19237 Bug 730211-Load XCF files with shifted layer offset table
Load xcf files that have extra NULL characters between image properties
and the layer offset table.

Improvements to Massimo's patch:
- Replace goto by while loop.
- Add comments.
2014-07-20 21:02:17 +02:00
Sven Claussner
1b2bdd458f Comment XCF saving code and test driver 2014-07-20 21:02:15 +02:00
Sven Claussner
0c2f431ec2 Initialize constant zero=0 properly
to avoid undefined values that make it impossible to write proper
zero terminators.
2014-07-20 21:02:13 +02:00
Sven Claussner
0657a68d2e Add API-documentation, fixes
Document XCF functions and a macro.
Minor fixes
2014-07-20 21:02:11 +02:00
Sven Claussner
89c9c671c5 Minor cleanups in xcf.txt 2014-07-20 21:02:10 +02:00
Sven Claussner
2e0d0bc24d XCF loader/saver: fix wrong 'locked' attribute in PROP_PATHS
Replace the ancient and wrong 'locked' attribute by the correct
'linked' attribute.
2014-07-20 21:02:08 +02:00
Sven Claussner
a83791be19 Review, amend and update the XCF file format spec and parasites.txt
XCF spec:
- Update to GIMP 2.8.10
- Clarify role of file formats in the save-vs.-export-context
- Rearrange outline
- Collect infos on basic concepts in one chapter
- Add table of contents
- Add File format version history
- Add note on image size
- Add open questions and TODOs
- Sort properties alphabetically
- Unify tiles and hierarchy examples
- Wording
- Cosmetic cleanups

Update parasites.txt:
- Replace SVN->Git
- Update contact e-mail address
- Add table of contents
2014-07-20 21:02:06 +02:00
Sven Claussner
ca0dc0ac99 Proofread XCF format specification.
Add outline, correct headlines.
Chapter 1: rearrange, add URL to Cinepaint XCF format spec, wording.
Replace 'Gimp' by 'GIMP', 'the GIMP' by 'GIMP'.
Fix typo RIB->RGB, GIMP 3.3+, rearrange headline.
Clarify: 'XCF' files from other software.
Correct spelling.
Remove trailing whitespaces.
2014-07-20 21:02:02 +02:00
Sven Claussner
208ffcee75 Update to GTK+ 2.24.24, po translation patch
Update to GTK 2.24.24.
Update po translation file (rebase on GTK+ 2.24.24, fixes after review).
Fix ca@valencia language code to ca-XV.
2014-07-20 21:01:58 +02:00
Sven Claussner
d86456d10a Fix file permissions
Set file permissions of text files to 644.
2014-07-20 21:01:54 +02:00
Massimo Valentini
a57e49b1bb Bug 730211 - Extra zeroes appear in XCF files (draft)
Patch to solve bug 730211. GIMP can be built with it and a simple
test to save and load "layers recovered.xcf" passes.
Needs further review and extensive testing as proposed by Massimo 
in comment 14 of the bug report.
2014-07-20 21:01:49 +02:00
Sven Claussner
44655f9eff Copy better FontConfig defaults into OS X build.
Add fonts directories. Cache in user's home cache. Etc.
2014-07-20 21:01:47 +02:00
Sven Claussner
fcbcb67a7e Fix malformed GIMP JHbuild module on OS X.
Add missing slashes to angle brackets in gimp.modules.
2014-07-20 21:01:41 +02:00
Sven Claussner
97053fa146 OS X build: fetch latest stable GTK 2.24 version
Fetch version 2.24.23, remove obsolete patch.
2014-07-20 21:01:39 +02:00
Sven Claussner
0cb54af3cd OS X build: add missing step to README
Add step to create directory in preparations.
2014-07-20 21:01:37 +02:00
Sven Claussner
65442153a9 Add missing information to po translation files in GIMP and GTK.
Gettext 0.19 complaints and fails because of missing information in
translation file headers.
This commit adds missing "Language:", "Language-Team",
"Project-Id-Version" information.
2014-07-20 21:01:34 +02:00
Simone Karin Lehmann
3bb80a9223 OS X build: use the help locale from the system's preferences
Adaptions by Sven Claussner:
- Only use this language if the user chose language="System Language" in 
Preferences/Interface.
- Add some code comments.
2014-07-20 21:01:17 +02:00
Simone Karin Lehmann
e572f1a856 OS X build: Remove GVFS and D-Bus dependencies of GIMP 2.8.
Cache the help index file locally.
Fetch help and open location with libcurl instead.
Partially fixes bug 683177 (Help not working, File/Open location not
working) 

Adaptions by Sven Claussner: 
- Adapt gimp.modules and GIMP launcher.
- Add code comments.
2014-07-20 21:01:15 +02:00
Sven Claussner
450b6befd5 OS X build: update README
Add instruction to install gtk-mac-bundler in a JHBuild shell.
Remove obsolete OpenSSL instructions.
2014-07-20 21:01:13 +02:00
Sven Claussner
b93c5d63e8 Remove OpenSSL dependency
Compiling OpenSSL on OS X (64 bit) is an error-prone and fragile
process.
Thus removing it for now and let GIMP rely on the system's OpenSSL
implementation (on OS X Mavericks (10.9) currently version 0.9.8y,
without the Heartbleed bug).
2014-07-20 21:01:10 +02:00
Sven Claussner
f133e2f93a OS X build: fix zlib dependency
Correct source download URL.
2014-07-20 21:01:08 +02:00
Sven Claussner
a62368234b OS X build: fix libsecret 0.18 code generation issue
The sed command on OS X is too old to handle sed '1i\' properly. Thus
replace it by 'echo'.
2014-07-20 21:01:06 +02:00
Sven Claussner
ca5b0cf55e OS X build: fix libffi misconfiguration
Fix libffi's configure to return the real library path instead of an 
unresolved '$(libdir)' which also caused the glib build step to fail.
2014-07-20 21:01:05 +02:00
Sven Claussner
8896c1e892 OS X build: update dependency versions
Update dependency versions for module 'gimp-osx'.
2014-07-20 21:01:02 +02:00
Sven Claussner
1d5d116aa3 Use the online help by default
Because the user manual is not shipped with GIMP by default, it's
pointless to expect it installed. Thus setting the online help as
default in gimprc.
2014-07-20 21:01:00 +02:00
Sven Claussner
863bd791ae Hide the help browser selection listbox if no help browser is installed
If we have the internal help browser not installed (e.g. because of 
missing WebKit) it makes no sense to offer it as an ever-failing option
to the user. Thus hide it and use the external web browser by default
then. 

Based on a patch by Simone Karin Lehmann.
2014-07-20 21:00:59 +02:00
Michael Natterer
e7d4bb5f5b Use external web browser for the manual if WebKit is unavailable
Cherry-picked from commit 4dc16825b2cad223c2856886a086bc908556ecb.
Sets the help-browser to the system's web browser in gimpguiconfig.c, so
we don't need to set it separately in the gimprc file.

WebKit support on OS X needs more investigation, thus we stick with the
system's web browser for now.
2014-07-20 21:00:57 +02:00
Sven Claussner
8c78088e37 Update themes and include them into master 2014-07-20 21:00:54 +02:00
Sven Claussner
1d8abe573d Update GTK+2 to version 2.24.23 2014-07-20 21:00:52 +02:00
Sven Claussner
d4831766ae Run GIMP in a D-Bus session
For instance see bug 683177: when trying to access the online help
users got an error message, that GIO backends were missing and they
needed to install GVFS. 
Actually the GIO backend GVFS is there, but had no D-Bus connection
(GVFS relies on D-Bus behind the scenes). 
This fix updates some packages and ensures that GIMP always runs in a 
D-Bus session and thus the online help is accessible.
2014-07-20 21:00:50 +02:00
Sven Claussner
7eacad6544 Keep separators between menu placeholders
Bugfix for missing separators in some menus, for instance in the File
menu between 'Send E-Mail' and 'Properties' etc.
2014-07-20 21:00:47 +02:00
Sven Claussner
75a84295d7 Rework GIMP's OS X theme for improved OS X integration
Combine the strengths of Zukitwo and GNOME-Cupertino,
adapt overall color appearance to OS X 10.9,
integrate Mac key bindings from GTK+ 2.24,
force consistent implementation,
fix flaws,
update bundler configuration and README,
cleanups.
2014-07-20 21:00:45 +02:00
Sven Claussner
7a75d4df3b OS X: translate 'About' in app menu
Cherry-pick and fix commit 513ef7fd5d:
Ensure that the app name 'GIMP' is shown only once after 'About' and its 
translation.
2014-07-20 21:00:41 +02:00
Sven Claussner
d98a0c22e9 Translate OS X app menu properly. 2014-07-20 21:00:36 +02:00
Sven Claussner
0e1306e4e0 OS X build: smaller fixes and cleanups
README: Fix missing information. Formatting
gimp.modules: Add Github. Switch qtk-quartz-engine repo type. Disable
gtk-doc generation for glib.
2014-07-20 21:00:30 +02:00
Sven Claussner
7e905885fd Add missing language files to OS X bundler
Fix typo (filename.mo). Add missing language files for GIMP and its
dependencies. Prepare translation of OS X application menu strings.
2014-07-20 21:00:26 +02:00
Sven Claussner
ce28ce4ccf Split OS X launcher into 2.8 and master versions
GIMP launcher for GIMP 2.8 and master differ in the GEGL path. Otherwise
GIMP master on OS X will not start due to unfound GEGL.
2014-07-20 21:00:21 +02:00
Sven Claussner
d417e3a12b OS X build: update build instructions in README
Update gtk-mac-bundler preparations. Add line to run gtk-mac-bundler in
a JHBuild shell. Add gtk-mac-bundler instructions for building
gimp-master.
2014-07-20 21:00:14 +02:00
Daniel Sabo
0a3c78239c configure: Also search for the -gtk2 version of mac integration
If a suffixed version is not found it will still fall back to
searching for the old version.

Cherry-picked and adapted to gimp-2-8 from
f6533db8b7

Resolved conflicts:
	configure.ac
2014-07-20 21:00:12 +02:00
Michael Natterer
0f68489a7c app: add some CPPFLAGS in core/Makefile.am to fix the build on OSX
cherry-picked and adapted to gimp-2-8 from
00cd9b4e47

Resolved conflicts:
	app/core/Makefile.am
2014-07-20 21:00:11 +02:00
Sven Claussner
cfcafedeaf OS X build: replace 2.8.8 target by gimp-osx target
Remove the outdated gimp-2.8.8 target, add target 'gimp-osx' for testing
the changes together.
2014-07-20 21:00:10 +02:00
Sven Claussner
fede2c9460 OS X build: fix GVFS dependency
Update glib, glib-networking, shared-mime-info, libsoup to latest
versions. Re-enable building GIMP with GVFS. Fix formatting.
2014-07-20 21:00:09 +02:00
Sven Claussner
e3f77abd5b OS X build: update and fix libgcrypt and libgpg-error dependencies
Update dependency versions. Fix build errors. Exclude libgcrypt's doc 
directory from build, because it introduces new dependencies and we 
don't need it.
2014-07-20 21:00:07 +02:00
Sven Claussner
86f3b0759b OS X build: format JHBuild module file
Improve formatting of gimp.modules for better maintainability.
2014-07-20 21:00:06 +02:00
Sven Claussner
1e73ee7bde OSX build readme: fix typo 2014-07-20 21:00:02 +02:00
Sven Claussner
5b4dbe1b48 OS X build: fix poppler issues
The dependency 'Poppler' fails to build on OS X 10.9 with Clang
(Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn))
because it contains the GCC compiler flag '-fno-check-new',
which is unsupported in Clang. Thus silencing all warnings from
this dependency.
2014-07-20 21:00:01 +02:00
Sven Claussner
ca27d6dc21 OS X build: update OpenSSL dependency
Update the OpenSSL dependency to version 1.0.1g,
which fixes the SSL Heartbleed bug.
2014-07-20 20:59:59 +02:00
Sven Claussner
0276ea07dc OSX build: use autogen-template for different configure syntax
Gexiv2 and OpenSSL require an extra syntax to set prefix and libdir.
Use JHBuilds autogen-template parameter to set them properly.
2014-07-20 20:59:55 +02:00
Sven Claussner
7570539c83 Add OS X build configuration for GIMP master
Add configuration for gtk-mac-bundler,
add OS X application metadata file.
2014-07-20 20:59:49 +02:00
Sven Claussner
aca529e601 OS X build: fix wrong XCode-Path
Fixes a problem that occured on OS X 10.9: JHBuild was not able to find
the existing $HOME/.jhbuildrc-gimp anymore. It turned out that
_xcodepath (now) needs to be platform independent.
Thanks to Daniel Sabo!
2014-07-20 20:59:46 +02:00
Sven Claussner
66e9e6cf17 OSX JHBuild: fix some issues
Fix broken links,
use stable glib version,
GEGL: check out from repository instead of using tarball,
fix libgexiv2 issue,
use su-v's patch for OS X builds,
use newer iso-codes version.
2014-07-20 20:59:45 +02:00
Sven Claussner
707e08fe35 OSX bundler: make launcher more generic
Rename the launcher to launcher-python.sh to make it also usable for
GIMP-master.
2014-07-20 20:59:43 +02:00
Sven Claussner
e5d2231397 OSX bundler: fix link to .plist file
Refer to info-2.8-python.plist instead of info-2.8.8-python.plist.
2014-07-20 20:59:42 +02:00
Sven Claussner
3906cb65e8 Improve OSX build instructions
Add note about XCode,
add file descriptions,
fix broken links,
fix curl parameters,
add structure,
improve wording,
improve layout.
2014-07-20 20:59:41 +02:00
Sven Claussner
0e951ee35f Minor cosmetic cleanup: fix C style comments
Replace C++ and Java style comments by C style comments.
2014-07-20 20:56:44 +02:00
Massimo Valentini
8bea95cae7 Bug 732163 - Flipped pixel columns in TGA
do not flip the central columns twice

(cherry picked from commit 35466d6dd0)
2014-07-20 16:24:50 +02:00
Michael Natterer
4594388060 app: fix handling of guides and sample points in gimpimage-resize.c
Don't iterate the lists with for() because the loops can remove items,
which makes us say g_list_next() on a removed list item. Instead, use
while() and get the next item before possibly removing the current
one.

(cherry picked from commit 99ccf7223b)
2014-07-10 00:11:46 +02:00
André Schutten
385e0bc54b Updated Dutch translation 2-8 2014-07-07 13:00:40 +02:00
Michael Natterer
fd85286291 Bug 727854 - Export file type should not be based on filename extension
Keep the export proc acound in the image (just as we keep around
the save proc), and use it when exporting again.

(cherry picked from commit 3dbae5e4d9)
2014-07-02 14:27:47 +02:00
Dimitris Spingos
916fad5feb Updated Greek translation 2014-06-30 08:33:52 +03:00
Dimitris Spingos
e422b169f9 Updated Greek translation 2014-06-30 08:28:52 +03:00
Dimitris Spingos
fb2f63f099 Updated Greek translation 2014-06-30 08:24:06 +03:00
Michael Natterer
cd114a162e Bug 731362 - Merging layers (outside layer folders)...
...causes layer folders to expand

In gimp_image_remove_layer(), don't use the top element of
image->layer_stack as the new active layer, because it is simply some
arbitrary layer that was previously selected. That stack is only good
for finding the last active layer when returning from the channels
dialog. Instead, let the proper logic run and use the new active item
returned by gimp_item_tree_remove_item(), which is the layer below the
removed one, if any, or the one above it otherwise.

(cherry picked from commit 0e2b8f236d)
2014-06-29 21:03:44 +02:00
Michael Natterer
9b7827482f Bug 731765 - "Value Propagate" dialog's "Propagating rate" spinbuttons...
...are much too quick

In gimp_scale_entry_new(), set the spinbutton's climb_rate to the same
value as step_increment instead of hardcoding 1.0. This should make
many spinbuttons behave better.

(cherry picked from commit b9265ebfb9)
2014-06-21 16:54:25 +02:00
Daniel Mustieles
3913245805 Updated Spanish Translation 2014-06-20 14:31:27 +02:00
João S. O. Bueno
eebe6c2116 pygimp: Layers retrieved using "parent" have to be GroupLayers
Thanks Seldom Needy for spotting this.

(cherry picked from commit f7e1dd2501)
2014-06-19 22:34:46 -03:00
Michael Natterer
565e725429 Bug 729789 - Exporting to .xjt file creates multi GB file
Disable saving of XJT files for the same reasons the plug-in
got removed entirely in master.
2014-06-10 02:15:27 +02:00
Michael Natterer
60db2dc41c Bug 731389 - gimp-edit-copy causes assertion failure on exit
Shutdown the clipboard earlier at exit, it runs quite some code on
storing the copied buffer.

(cherry picked from commit 8aa6ff9608)
2014-06-10 01:40:25 +02:00
Massimo Valentini
84043c2ed0 app: xcf-load fix app/tests/test-xcf
though it crashes loading corrupt files
2014-06-07 17:53:55 +02:00
Massimo Valentini
07e90e2141 Bug 730396: GIMP crashes loading a XCF it saved
add few validity checks loading a xcf file.

(cherry picked from commit a64a319d78)

Conflicts:
	app/xcf/xcf-load.c
2014-06-07 16:35:07 +02:00
Massimo Valentini
ca0b2877d9 Bug 730980: GIMP enters an infinite loop loading a truncated xcf
(cherry picked from commit fe4502fe04)

Conflicts:
	app/xcf/xcf-load.c
2014-06-06 18:40:27 +02:00
PavelNicklasson
4486e80104 Updated Swedish translation 2014-05-31 17:40:16 +00:00
Lasse Liehu
311f52a774 Finnish translation update 2014-05-30 15:46:10 +03:00
Lasse Liehu
120bb726ba Finnish translation update 2014-05-30 15:43:18 +03:00
Ed J
b812f513d4 Doc that gimp-display-new gives execution error if no GIMP GUI. 2014-05-27 00:58:00 +01:00
Michael Natterer
c4dc16825b app: default to GIMP_HELP_BROWSER_WEB_BROWSER if there is no webkit
(cherry picked from commit f1573c42d2)
2014-05-25 15:25:11 +02:00
Michael Natterer
0229edd72b app: gimp_image_rotate(): fix rotation of sample points
and also notify the image of guide and sample point movements after
rotation. This was probably broken since the introduction of canvas
items.

(cherry picked from commit 21ea6216f7)
2014-05-24 22:43:13 +02:00
Ed J
bba4343641 Doc NULL return for gimp_display_name() when no GUI. 2014-05-24 18:00:15 +01:00
Michael Natterer
d2536c1f8a app: add gimp_grid_get_spacing() and gimp_grid_get_offset()
and do the rounding to integer there instead of in several places.

(cherry picked from commit 5e2ded5020)
2014-05-21 21:27:26 +02:00
Michael Natterer
247267031e Bug 588512 - Grid Spacing errors depending on unit
Always round grid spacings and offsets to integer precision when
using them for snapping and grid drawing. While we might *want* to
have subpixel precision grids, all the UI is pretending it to be
on pixel boundaries. Make that pretense an fact.

(cherry picked from commit 08c6aefa23)
2014-05-21 20:49:27 +02:00
Michael Natterer
2ca91e7271 Bug 729068 - Gimp windows state is lost when closed from the window manager
Set gtk_window_set_skip_taskbar_hint() to FALSE for all dock windows.

(cherry picked from commit 35f8355af4)
2014-05-19 03:29:56 +02:00
PavelNicklasson
8b22460153 Updated Swedish translation 2014-05-14 21:47:39 +00:00
Michael Natterer
2886f92bbd Bug 730071 - Selection bounds miscalculated for multiples of 128
gimp_channel_real_bounds(): when we succeed avoiding iterating a tile
by checking its upper-left and bottom-right, use the function's
internal meaning of x2, y2, which is the rightmost/bottommost selected
pixel, while the external meaning is the pixel right/below it.
Short: use "foo - 1" not "foo".
2014-05-13 21:48:40 +02:00
Marco Ciampa
e6d314c9fc Updated italian translation. 2014-05-13 09:55:34 +02:00
Massimo Valentini
6f6a51274f Bug 728226: Blending mode of layers in ORA changed upon opening
(cherry picked from commit 07ff7c7d6d)
2014-05-10 18:49:05 +02:00
Piotr Drąg
f6527993f7 Updated Polish translation 2014-05-08 00:09:29 +02:00
Piotr Drąg
b482f819e1 Updated Polish translation
Fixes a bug reported by Wojciech Kapusta.

http://bugs.aviary.pl/show_bug.cgi?id=4901
2014-05-07 18:47:18 +02:00
Massimo Valentini
d053a75150 Bug 707239 - Gimp destroys image file when exporting...
as .tif with jpeg compression

make unsensitive the JPEG radio button when the image
is indexed, similarly to Fax Group 3/4 compression
enabled only for monochrome images

move the file creation/truncation after checking for
invalid requests and return a GError in case of error

(cherry picked from commit 7e80e2e3bc)

Conflicts:
	plug-ins/common/file-tiff-save.c
2014-05-07 18:42:44 +02:00
Piotr Drąg
fda740f80b Updated Polish translation 2014-05-05 21:03:46 +02:00
Massimo Valentini
9dc2d2f0c0 Bug 722487: Something in the attached .gimp-2.8 directory makes...
GIMP fail on start

Make gimp_tool_preset_load() robust against completely failed
deserializing.

(cherry picked from commit 26738b9ff3)
2014-05-05 10:36:31 +02:00
Sven Claussner
1225fe3d1f Bug 721482 - Add missing language files
Add the missing language files for GEGL and GIMP to the gtk-mac-bundler
configuration.

(cherry picked from commit fb743b5a095d1523f281011a600a2ff2465182e9)
2014-05-04 14:42:05 +02:00
Sven Claussner
83c0e41b10 Bug 721449 - Remove language black magic in OS X build
The language on OS X is properly set in GIMP also without the black
magic code. To improve maintainability we remove it and also improve
comments.

(cherry picked from commit 556e9ac83e6208c00ae69e5302efe440dc63d86b)
2014-05-04 14:39:58 +02:00
Michael Henning
7136352aec app, libgimp: commit files generated by PDB docs change 2014-05-03 11:02:04 -04:00
Jehan
f76cf06e94 Bug 720052 - Make GIMP recommend a recent gettext.
Script-fu gettext strings were mostly not extracted by xgettext. This
will be fixed in upcoming gettext 0.19. Add a test to warn packagers
using older gettext.
(cherry picked from commit feb1bf2797)
2014-05-04 01:42:23 +12:00
Jehan
7059425133 po-script-fu: update all script-fu's po with recent xgettext.
Current dev version of gettext has a fix for GIMP's script-fu syntax.
See Bug 720052.
2014-05-04 00:48:43 +12:00
Michael Natterer
96fb9ab650 plug-ins: file-pdf-save needs two return values now for the error message
(cherry picked from commit d0c67f84c8)
2014-05-03 11:46:56 +02:00
Ed J
57180cd3cc There only *might* be an error string. 2014-05-03 08:38:31 +01:00
Ed J
bcb03ad82f Document other layer_group-relevant procedures in gimp_layer_group_new. 2014-05-03 03:37:05 +01:00
Ed J
ef8603bde8 Document other layer_group-relevant procedures in gimp_layer_group_new. 2014-05-03 00:47:15 +01:00
Ed J
1f52773120 Document that gimp_run_procedure* on error return a string. 2014-05-03 00:12:58 +01:00
Piotr Drąg
0d9951f5cc Fix typo 2014-05-01 14:58:09 +02:00
Michael Natterer
e0a5ba46eb app: the FG/BG hardedge gradient didn't have a unique identifier
(cherry picked from commit 2ed1c59687)
2014-04-30 02:03:55 +02:00
Hartmut Kuhse
d03203973e Bug 725577 - file-pdf-save fails to export images larger than 32768 pixels
Due to a restriction in libcairo, creating surfaces larger than 32768 pixels
fails, so saving a larger file in gimp  as PDF, is rejected.

related to commit: f6328244a2
2014-04-29 17:46:05 +02:00
Michael Natterer
ebdd761cae Bug 729158 - Internal inconsistent state with gimp_image_get_selection...
+ gimp_channel_copy

Make gimp-channel-copy always return a GimpChannel, and fail the
prodecure if the input channel is not of image size.

(cherry picked from commit bcce8c95ec)
2014-04-29 09:18:19 +02:00
Sven Claussner
49b85d33c4 Update Jenkins tutorial
Review, correct, update text and images
2014-04-27 21:21:14 +02:00
Marco Ciampa
f27dca2883 Updated italian translation. 2014-04-27 00:48:36 +02:00
Piotr Drąg
d65efc7927 Updated Polish translation
intltool/gettext support for .scm files is broken.
2014-04-24 04:02:00 +02:00
Christian Lehmann
d6e7557001 Bug 708098 - Further mitigation for CVE-2012-4245 (script-fu-server)
Reorder server_start()'s arguments so they match the PDB signature.

(cherry picked from commit 3b72ad8939)
2014-04-23 21:32:05 +02:00
Christian Lehmann
401d21b124 Bug 708098 - Further mitigation for CVE-2012-4245 (script-fu-server)
Add an "ip" parameter as *first* argument to the
plug-in-script-fu-server procedure. This is an incompatible change
with the intent to make any old-style calls to the procedure
fail. Also reorder the GUI to have the IP in the first line.

(cherry picked from commit 83741044fc)
2014-04-23 11:05:58 +02:00
Christian Lehmann
4f83fd3f13 Bug 708098 - Further mitigation for CVE-2012-4245 (script-fu-server)
Added a warning message informing about the danger of running a
script-fu server on any PI but 127.0.0.1.

(cherry picked from commit 3705f54300)
2014-04-23 11:05:50 +02:00
Christian Lehmann
95269e922b Bug 708098 - Further mitigation for CVE-2012-4245 (script-fu-server)
added listen-to-ip field to the script-fu start server dialog

(cherry picked from commit f98592afa3)
2014-04-23 11:05:41 +02:00
Piotr Drąg
accd76b462 Updated Polish translation 2014-04-23 02:24:46 +02:00
Michael Natterer
8153b94a2b plug-ins: fix the build in file-raw.c 2014-04-22 23:02:17 +02:00
Björn Kautler
8b62ab865b Bug 728633 - Improvements to the file-raw plugin
Export the image before saving as raw image data.
2014-04-22 22:08:11 +02:00
Björn Kautler
6c1b88d912 Bug 728633 - Improvements to the file-raw plugin
Register 'data' as save extension.
2014-04-22 22:06:15 +02:00
Hartmut Kuhse
a6dbdf14be Bug 727832 - file-psd-load infinite loop
If a layer mask is completely outside the layer boundaries,
the layer mask is omitted
2014-04-21 19:20:57 +02:00
Inaki Larranaga Murgoitio
a2449f1b46 Updated Basque language 2014-04-21 11:11:14 +02:00
Inaki Larranaga Murgoitio
2c44cb5985 Updated Basque language 2014-04-21 11:07:21 +02:00
Michael Natterer
3589661191 Bug 724444 - Printing ignores dpi ratio / image proportions, always prints 1:1
Enable the resolution chain button only if xres == yres.

(cherry picked from commit 1093a82e79)
2014-04-18 19:47:47 +02:00
Michael Natterer
1f7df343dc app: enable scale image's resolution chain button only if xres == yres
(the edit_resolution feature of GimpSizeBox is currently used
only by the scale image dialog)

(cherry picked from commit be8f43ff06)
2014-04-18 19:19:16 +02:00
Michael Natterer
990b35309f app: enable image new's resolution chain button only if xres == yres
(cherry picked from commit 3abb84022a)
2014-04-18 18:44:43 +02:00
Michael Natterer
0defae9024 app: only enable the resolution chain button if xres and yres are the same
(cherry picked from commit a8592e7352)
2014-04-18 17:58:46 +02:00
Dimitris Spingos
878d77d838 Updated Greek translation 2014-04-18 18:05:21 +03:00
Piotr Drąg
8a8c6eaa57 Updated Polish translation 2014-04-17 01:06:54 +02:00
Piotr Drąg
a3cbf8b543 Fix typo 2014-04-17 01:03:39 +02:00
Hartmut Kuhse
bf78d6a293 Bug 725576 - GIMP crashes on printing large TIFF files
Cairo surface creating is limited to 32768.
Printing is refused for images bigger than 32768
either width, height or both.
2014-04-16 11:31:29 +02:00
Michael Natterer
bdde26ec39 Bug 726181 - Heal tool mode is ignored - always in "Normal" mode
Make the paint mode menu insensitive for the heal tool.

(cherry picked from commit b1a0b4555e)
2014-04-15 17:16:45 +02:00
Daniel Mustieles
c32b008511 Updated Spanish translation 2014-04-15 14:21:37 +02:00
Michael Natterer
e7af7939a0 Bug 726495 - "Text to path" delivers a path offset from the text
In gimp_text_layout_render() do a cairo_save/restore() around drawing
the (possibly offset and transformed) text, so we can later get the
rendered path from cairo_copy_path() relative to the original coords
and not relative to the offset and transformed coords.

(cherry picked from commit 7257574b93)
2014-04-11 17:02:05 +02:00
Michael Natterer
f13559a360 Bug 726761 - Alias PIX image encoding broken
save_image(): remove bogus "- 1" from the calculation of the height of
the row of tiles to save. Fixes garbage saved to the last line of all
PIX files.

(cherry picked from commit a5b92424b3)
2014-04-11 15:29:13 +02:00
Michael Natterer
fb2ecd9f50 app: don't create a fallback crosshair in gimp_brush_tool_create_outline()
Instead, draw the crosshair in gimp_brush_tool_draw() if create_outline()
didn't return an item *and* if there is no brush tool cursor.

In gimp_source_tool_draw(), don't add an additional crosshair if
create_outline() returned an item.

This fixes both "no cursor at all" and "both outline and crosshair
shown" for certain prefs settings conbinations (bug #623734).

(cherry picked from commit e8459beb24)
2014-04-09 14:55:34 +02:00
Sven Claussner
ae1a67d326 Add Jenkins tutorial (wip)
Add Jenkins tutorial (first draft). Currently in OpenDocument format for
convenient, platform independent editing, but finally to be replaced
with DocBook version.
2014-04-06 09:35:24 +02:00
Мирослав Николић
bbf9484f3c Updated Serbian translation 2014-04-05 11:51:59 +02:00
Мирослав Николић
29b0cebbac Updated Serbian translation 2014-04-05 11:50:53 +02:00
Мирослав Николић
5a4081c46f Updated Serbian translation 2014-04-05 11:49:59 +02:00
Мирослав Николић
8a6cd6443d Updated Serbian translation 2014-04-05 11:48:50 +02:00
Мирослав Николић
7f98c96ec7 Updated Serbian translation 2014-04-05 11:47:55 +02:00
Мирослав Николић
3a384c2e73 Updated Serbian translation 2014-04-05 11:46:56 +02:00
Мирослав Николић
e16fee9631 Updated Serbian translation 2014-04-05 11:45:45 +02:00
Balázs Úr
4ba0c19f54 Updated Hungarian translation 2014-03-20 16:31:30 +01:00
Balázs Úr
50418b6253 Updated Hungarian translation 2014-03-20 16:15:26 +01:00
Michael Natterer
86385cfa28 Bug 706361 - Printer queue dosn't show the filename of the printing image
Change the gimp-image-get-name procedure to return the same string
as shown in the image title, and mention in its API docs that this
string is meant for annotating UI elements only.

(cherry picked from commit fea22c345c)
2014-03-15 17:54:17 +01:00
Michael Natterer
a833a30c2c app: gimp_procedure_execute(): don't use a NULL plug-ins error message
return_vals[1] being present and being a string doesn't neccessarily
mean it comes from the plug-in, it might just as well be its first
return value, which gets generated and NULL-initialized by the plug-in
execution code even if the plug-in didn't actually return anything.

(cherry picked from commit 60014630fa)
2014-03-14 20:29:10 +01:00
Michael Natterer
1aa573c3d4 app: set the idle_id to 0 in gimp_image_profile_view_query()
fixes warnings from dispose() about removing a source that doesn't
exist.

(cherry picked from commit 4267ea5d12)
2014-03-10 01:25:50 +01:00
Michael Natterer
71e90afd96 Bug 605872 - Units dropdown list is not updated
Add private API _gimp_unit_store_sync_units() which emits
"row-inserted" on each unit that didn't exist when the GimpUnitStore
was created, or when sync_units() was called the last time.

In GimpUnitComboBox, call sync_units() each time the combo is popped
up, or a unit is set on the combo.

(cherry picked from commit 66298ba869)
2014-03-10 00:18:21 +01:00
Christian Kirbach
7c36b30541 Updated German translation 2014-03-09 21:53:03 +00:00
Michael Natterer
410ea91e22 Bug 691169 - Gimp fails to open files with UTF8 characters as filenames...
...when started via Windows Explorer (e.g. the file context menu)

When built against GLib >= 2.39.90, use g_win32_get_command_line()
and g_option_context_parse_strv() which handle all sorts of windows
filename encodings properly.

(cherry picked from commit 774e064fbf)
2014-03-08 19:52:44 -05:00
Rūdolfs Mazurs
4d4586ae96 Fixed Latvian 2014-03-06 15:37:16 +02:00
Rūdolfs Mazurs
3fb9db7446 Updated Latvian translation 2014-03-06 15:27:53 +02:00
Michael Natterer
8a9841850f Bug 725734 - Themes not alphabetized
qsort() the array returned by themes_list_themes().

(cherry picked from commit 2303ce910d)
2014-03-06 11:58:16 +01:00
João S. O. Bueno
83d169f5bf pygimp: fixes creation of GroupLayer objects
Calling gimp.GrouLayer(...) directly was broken -
(one could retrieve a layer group from the image
or use the pdb call to get it working)

Spotted by Markus Orreilly at
http://stackoverflow.com/questions/12608210/
2014-03-05 12:54:57 -03:00
Tiagosdot
2aa520f05e Updated Portuguese translation 2014-03-02 23:46:50 +00:00
Tiagosdot
ed40c144bc Updated Portuguese translation 2014-03-02 23:45:49 +00:00
Tiagosdot
99bc765817 Updated Portuguese translation 2014-03-02 23:42:45 +00:00
saul
c6f5c24c36 Bug 725325 - Drag and drop fails for patterns and brushes
The "drag-data-received" signal was connected wrongly

(cherry picked from commit cbce05f92c)
2014-02-27 18:47:51 +01:00
Michael Natterer
c086e98029 Bug 694340 - EPS resolution capped @ 1440 on import
Increase to 8192 which is just as arbitrary but more reasonable.

(cherry picked from commit ee772d398f)
2014-02-22 09:42:37 +01:00
Jehan
6c9a04e103 Bug 724338: free the GimpImageFile's icon when its contents is updated.
The main consequence was that file icons were stuck to the first
filetype's icon selected in file dialogs.
(cherry picked from commit 6af7f47238)
2014-02-17 13:17:01 +13:00
Michael Henning
694e3313c8 plug-ins: Fix build with libpng versions < 1.4.
This was broken in 640f11f9c1

(cherry picked from commit d296a2c08a)
2014-02-16 11:18:07 -05:00
Michael Henning
640f11f9c1 Bug 721135 - Unable to export to .png - error: known incorrect sRGB profile
Some libpng errors can safely be marked as nonfatal, which is much
better than simply failing in those cases.

Thanks to John Bowler for pointing out this solution.

(cherry picked from commit 7c493f76f8)
2014-02-15 23:09:47 -05:00
Michael Natterer
174175f206 Bug 676522 - Make DND work between images in *one* dockable...
...after in-DND image switching

This was actually two issues:

First, DND data is normally transferred on drop. In this situation the
contents of the source widget change in the middle of DND, so when the
drop happens there is nothing to transfer. Fixed this by attaching the
thing to transfer (image, item, color etc) to the GdkDragContext when
the DND operation starts, and trying to retrieve it on drop. Only when
nothing is attached we fall back to the traditional way of asking the
source widget. This is expected and an obvious fix.

Second, and not so obvious, the source part of the GTK+-internal state
of the DND operation (GtkDragSourceInfo) contains a *reference* (not a
copy) of the source widget's target list. When we change images in the
middle of DND, the source layer view's target list gets modified, and
because GtkDragSourceInfo only references it, the state of the ongoing
DND operation gets destroyed with it. Fixed this by changing
gimp_dnd_data_source_remove() to never change a source widget's target
list but instead create a new list without the removed target and
replace the source widget's list, keeping the ongoing drag's list
unaffected.

Also kept all the GIMP_LOG() stuff I added during debugging there, it
turned out to be quite useful.

(cherry picked from commit 16938bb667)
2014-02-15 21:41:51 +01:00
Jehan
c767b0ff66 Bug 622758 - Fix error display for thumbnail creation
Do not stay forever in "Creating Preview..." state during
auto-thumbnailing, and fix error showing when creation fails.
(cherry picked from commit 6208d21979)
2014-02-14 15:39:18 +13:00
Michael Natterer
c649efc2b8 Bug 724295 - multiple svg gradients in a single file not listed correctly
Clear the parsed lis of stops after each gradient, or they will all
look the same.

(cherry picked from commit 3e618320d3)
2014-02-13 22:07:49 +01:00
Daniel Sabo
405e50c759 app: Fix on canvas widgets ignoring clicks from tablets - bug 614441
Disable extended input events when the cursor moves to a child of
the canvas widget. Otherwise GTK will try and fail to deliver an
extended event to the child widget, and end up sending it to the
canvas instead.

(cherry picked from commit a059c0e7eb)
2014-02-10 22:29:07 +01:00
Martin Srebotnjak
8fe2d638ce Updated Slovenian translation 2014-02-10 22:11:07 +01:00
Martin Srebotnjak
bdb7d701ae Updated Slovenian translation 2014-02-10 22:09:03 +01:00
Massimo Valentini
dbea8d7ba1 Bug 701189: Opening fuzzed .gif-file leads to crash of...
graphic interface of Linux
(cherry picked from commit bfd8d00282)
2014-02-08 17:14:18 +01:00
Michael Natterer
073d70fa8c Bug 722400 - GIMP segfaults when trying to save a modified, newly created image
If for whatever reason making an uri from the documents folder fails,
return the uri of the home directory.

(cherry picked from commit aabd64e070)
2014-02-08 10:21:06 +01:00
Piotr Drąg
1cdd310320 Updated LINGUAS 2014-02-08 03:03:52 +01:00
Michael Natterer
e8e9daa40b Bug 723649 - Increase/Decrease brush size relative actions don't work
The actions have accidentially been added to the group that changes
the brush's angle not its size.

(cherry picked from commit 0cc292693d)
2014-02-07 21:21:17 +01:00
akerbeltz
50aa48f975 Added Scottish Gaelic translation 2014-02-07 16:05:38 +00:00
akerbeltz
95e20f0bda Added Scottish Gaelic translation 2014-02-07 15:59:50 +00:00
akerbeltz
f12dab6581 Updated Scottish Gaelic translation 2014-02-07 00:35:43 +00:00
Michael Natterer
c15d7bcc80 Bug 721249 - pdb.gimp_context_set_brush_size() dont't work
Port selection/path stroking to using the PDB-controllable
paint options that live in GimpPDBContext.

Change gimp_item_stroke()'s "use_default_values" boolean which was
introduced at a time where we had no better way by a GimpPaintOptions
parameter. If a non-NULL paint_options is passed (when called from the
PDB), use it for stroking; if NULL is passed, use the actual paint
tool options from the GUI (when called from the menus or the stroke
dialog). In the PDB wrappers, get the right paint options object from
the PDB context associated with the calling plug-in.

(cherry picked from commit 4d6640ff79)
2014-02-06 23:37:07 +01:00
akerbeltz
ba0b365ef5 Updated Scottish Gaelic translation 2014-02-06 16:34:40 +00:00
Michael Natterer
d94f38c18d Bug 701159 - Wrong name in transform tool dialogs...
...when acting on a path or selection

Factor out the code that checks if an active item exists and if it's
transformable (not locked etc.) and use that function in more places.
This fixes both the wrong dialog labels and the tool running into
broken states when the selection or a path are being transformed.

(cherry picked from commit b13c68fda6)
2014-02-05 01:11:43 +01:00
Michael Natterer
72942f4e6b app: halt the transform tool when switching layer|selection|path transform
(cherry picked from commit 1335bc42c8)
2014-02-04 23:29:45 +01:00
Khaled Hosny
c91f5bd258 Update Arabic translation 2014-02-04 13:15:08 +02:00
Kevin Cozens
6c2cd97b86 Removed extraneous 'x' when writing character constants. Fixes bug #721775. 2014-02-03 19:12:52 -05:00
Michael Natterer
6cb5fcafb0 Bug 721249 - pdb.gimp_context_set_brush_size() dont't work
Don't reset the brush size before each PDB paint stroke.

(cherry picked from commit 9fe869236b)
2014-02-03 23:07:26 +01:00
Rafael Ferreira
eff6833737 Updated Brazilian Portuguese translation 2014-02-03 21:12:14 +00:00
Téo Mazars
76ee47eff9 plug-ins: don't check biClrUsed if bpp > 8 (in bug 697431)
(cherry picked from commit 54f83a5ba2)
2014-01-30 20:37:27 +01:00
Michael Natterer
aed3e3c741 Bug 722034 - Incorrect snapping behaviour for scale tool
Always snap to the center of transform tool handles.

(cherry picked from commit 5054241ca6)
2014-01-29 23:44:44 +01:00
Michael Natterer
523f807d75 app: set GIMP_CONFIG_PARAM_IGNORE on "confirm-on-close"
(cherry picked from commit bfb8757559)
2014-01-28 22:31:55 +01:00
Michael Natterer
b101f38f0a app: remove the "confirm-on-close" preference
the warning dialog cannot be disabled any longer now.

(cherry picked from commit e2c8a60665)
2014-01-28 22:30:44 +01:00
Michael Natterer
8b6b6add69 Bug 723177 - After opening an ICC profile with a long description...
...dialogs are too wide

Ellipsize GimpColorProfileComboBox' label.

(cherry picked from commit 219bf35299)
2014-01-28 18:56:08 +01:00
Michael Natterer
2ec7e24d80 Bug 722975 - crash when removing tag from palette while filtering by same tag
Each of the following cleans up tag refcounting, fixes access to
released memory, or other small glitches. Not sure which change
actually fixed the bug:

gimp_data_remove_tag(): remove the found tag, not the passed in tag
(which is to be treated only as a value for comparison).

gimp_tagged_remove_tag(): don't continue the loop after the tag to
remove has been found, there can only be one matching tag, and the
list element has become invalid.

gimptagentry.c: keep references around for the members of
entry->common_tags, and make sure the references are always dropped
properly. In assign_tags(), reference the "add" and "remove" lists for
paranoia and safety reasons.

(cherry picked from commit 7fca15c27d)
2014-01-26 21:10:28 +01:00
Christian Kirbach
bcec277211 Updated German translation 2014-01-26 18:19:41 +01:00
Aurimas Černius
bfe77b91a5 Updated Lithuanian plug-ins translation 2014-01-11 23:51:18 +02:00
Aurimas Černius
0383e84d47 Updated Lithuanian translation 2014-01-11 23:48:18 +02:00
João S. O. Bueno
20523c61ac Creates a FileChooserbutton that can pick new filenames. Fixes #699978 2014-01-09 00:51:26 -02:00
João S. O. Bueno
bb3b126fb9 Fixes pt_BR translation for 'clear document history' button 2014-01-09 00:51:08 -02:00
Dimitris Spingos
166291d719 Updated Greek translations 2014-01-08 09:09:27 +02:00
João S. O. Bueno
e3a65f2ff5 Remove accelerator markers from tooltips for python-fu dialogs 2014-01-05 04:40:04 -02:00
Konfrare Albert
d09db6c286 [l10n] Update Catalan translation 2014-01-04 23:46:49 +01:00
Michael Natterer
b4477d8e01 app: add gimp_paint_options_set_default_brush_size()
and use it globally instead of two different methods, one of which was
forgotten to be ported to the new aspect ratio range where 0.0 means
1:1. Add a FIXME comment in paint_tools.pdb where I think setting the
default size is a bug, see #721249.

(cherry picked from commit ef85845372)
2014-01-04 15:56:01 +01:00
Konfrare Albert
00a49318fd [l10n] Update Catalan translation 2014-01-04 01:21:20 +01:00
Mark Schmitz
efe9900c94 Bug 720711 - gimpressionist: Background paper is not aligned...
...with the painted image

gimpressionist: fix alignment of image and background paper.
Additionally the resize function is now skipped for a scale of 100%.

(cherry picked from commit 3afc53d866)
2014-01-01 18:55:02 +01:00
saul
cab66eb377 Bug 721058 - Shadow layer for Drop Shadow filter in wrong stack position
Fix layer stack positioning for Drop Shadow.

(cherry picked from commit 598673bc83)
2014-01-01 15:02:42 +01:00
Téo Mazars
117e9f73a8 plug-ins: fix segfault in apply-canvas
(cherry picked from commit 1a8848be87)
2013-12-21 15:57:13 +01:00
Michael Natterer
db602b3b33 Bug 720492 - Letter spacing in Text Tool not reset to default
Also reset the "letter-spacing" property in gimp_text_options_reset().

(cherry picked from commit 81c02e7db1)
2013-12-20 13:13:15 +01:00
Marco Ciampa
1f3ab73d35 Reverted an erroneous translated string 2013-12-18 17:49:35 +01:00
Marco Ciampa
7819a4ce6f Updated italian translation 2013-12-18 16:39:57 +01:00
SimaMoto,RyōTa
96da39c28e Bug 720598 - Mistaken description for 'New Guides from Selection
Use original desc. for 'New Guides from Selection', it was
accidentially changed in commit 6239dddda3.

(cherry picked from commit bebccb4a28)
2013-12-18 01:21:13 +01:00
Rafael Ferreira
36d15343c2 Updated Brazilian Portuguese translation for plug-ins 2013-12-16 05:02:10 -02:00
Seong-ho Cho
d253086bfa Updated Korean translation 2013-12-14 04:08:23 +09:00
Piotr Drąg
59ed3ba827 Updated Polish translation 2013-12-13 18:48:02 +01:00
Daniel Mustieles
d326158c61 Revert "Updated Spanish translation"
This reverts commit b45d6dff17.
2013-12-13 17:31:33 +01:00
Daniel Mustieles
b45d6dff17 Updated Spanish translation 2013-12-12 18:24:22 +01:00
Daniel Mustieles
841b682957 Updated Spanish translation 2013-12-12 11:42:43 +01:00
Jehan
c1314499ff Bug 679214 - widget direction set to system locale, not user-set lang
In particular a RTL-localized OS, where the user sets GIMP to a LTR lang
would still have a RTL UI (menus, etc.). And vice versa.
(cherry picked from commit 735f00b886)
2013-12-12 18:17:05 +13:00
Joao S. O. Bueno
373cee2414 Updated Brazilian Portuguese translation 2013-12-12 00:03:07 -02:00
Rodolfo Ribeiro Gomes
c58491c4e8 Updated Brazilian Portuguese translation 2013-12-11 23:55:15 -02:00
Rafael Ferreira
35a5d5ac34 Revert "2 small, but important fixes to pt_BR translation"
This reverts commit 16b0443840.

Created inconsistence with one translation from Damned Lies. Going to commit it again later.
2013-12-11 23:43:52 -02:00
João S. O. Bueno
16b0443840 2 small, but important fixes to pt_BR translation 2013-12-11 01:58:19 -02:00
Daniel Mustieles
cf94bb3003 Updated Spanish translation 2013-12-10 12:55:44 +01:00
SimaMoto,RyōTa
217660a72c l10n: Update Japanese translation 2013-12-06 00:36:19 +09:00
Jehan
cfe5c483f7 app: handle migration on OSX of GIMP 2.8.2's config folder.
GIMP 2.8.2's config was "~/Library/Gimp/x.y", before it got moved to
"~/Library/Application Support/x.y" and after being saved in the home
like other UNIXes. The migration code will now check all 3 places in the
right order on OSX.
Thanks to Simone Karin Lehmann for the original proposition.
(cherry picked from commit 7ef45be890)
2013-12-05 12:01:28 +13:00
Piotr Drąg
d781f516b7 Updated Polish translation 2013-12-04 19:31:01 +01:00
Nils Philippsen
0ffb3b6753 file-xwd: sanity check # of colors and map entries (CVE-2013-1978)
The number of colors in an image shouldn't be higher than the number of
colormap entries. Additionally, consolidate post error cleanup in
load_image().

(cherry picked from commit 23f685931e)
2013-12-04 11:01:12 +01:00
Nils Philippsen
7f2322e4ce file-xwd: sanity check colormap size (CVE-2013-1913)
(cherry picked from commit 32ae0f83e5)
2013-12-04 11:01:12 +01:00
Kevin Cozens
f1677dea03 Fixed an error in the close-port function. Closes bug #719396. 2013-12-02 20:17:55 -05:00
Michael Natterer
7fab702e9b Bug 719662 - plug-in-borderaverage returns a garbage alpha value
Return a fully opaque color instead of a random-memory alpha value.

(cherry picked from commit 56cdf642fc)
2013-12-01 23:03:24 +01:00
Michael Natterer
5847d56f36 Bug 719634 - Palette editor not working for New Palettes (cannot drop colors)
Allow to drop colors also on the palette view's parent viewport, so
colors can be dropped everywhere inside the scrolled window, also when
the palette view is invisible because it has zero colors. Also allow
dropping of palettes on the viewport to change the editor's active
palette.

(cherry picked from commit 0e1978d273)
2013-12-01 18:07:05 +01:00
Michael Henning
ecefaead96 Bug 719593 - On clang, brush outline is not displayed
Don't access path_data->len after path_data has been freed.

(cherry picked from commit 95becc7615)
2013-11-30 16:38:02 -05:00
Jernej Simončič
0677117242 Installer: make it possible to override source directories from command line
using defines
2013-11-30 18:50:14 +01:00
SimaMoto,RyōTa
dfd62a6659 l10n: Update Japanese translation 2013-11-30 08:58:35 +09:00
Michael Natterer
71c144c972 Bug 719560 - Build failure with freetype 2.5.1
Apply patch from su-v that fixes the freetype include to
the madness devised and recommended by freetype.

(cherry picked from commit 6c73f28b6d)
2013-11-29 22:00:19 +01:00
Dimitris Spingos
4506f777b1 Updated Greek translation 2013-11-29 13:07:09 +02:00
Michael Natterer
b09f2b4dc8 devel-docs: clarify where to announce a release in release-howto.txt
(cherry picked from commit e0edc568aa)
2013-11-29 00:05:03 +01:00
Michael Natterer
a178f35225 configure.ac: post release version bump to 2.8.11 2013-11-28 20:54:30 +01:00
Michael Natterer
9bb7eb0545 configure.ac: bump version to 2.8.10 2013-11-28 19:33:16 +01:00
Michael Natterer
19025ea508 Add test-driver to the toplevel .gitignore 2013-11-28 19:21:37 +01:00
Michael Natterer
e8755c60a9 NEWS: some updates 2013-11-28 19:09:29 +01:00
Michael Natterer
50bfbd94a3 desktop: add gimp.appdata.xml to .gitignore 2013-11-28 19:09:29 +01:00
Nils Philippsen
fc7fce4bc9 initialize length to appease cppcheck
The code was technically correct previously: It wrote the uninitialized
length only as a placeholder to overwrite it later on. Yet it's better
to not confuse tools (or people) analysing the code. Besides that having
0 for the length in the file while the payload is being written may aid
debugging e.g. crashes in that code later on.

(cherry picked from commit 2e6af22686)
2013-11-28 18:03:32 +01:00
Michael Natterer
779264f237 Bug 676270 - cppcheck report
Fix a couple of harmless stuff pointed out in the report, and one
real bug: gimp_plug_in_close() was killing each process 10 times
on windows.

(cherry picked from commit 47c987b09e)

Conflicts:
	app/actions/image-actions.c
2013-11-28 18:03:13 +01:00
SimaMoto,RyōTa
a8bc5b3418 l10n: Update Japanese translation 2013-11-28 23:50:51 +09:00
Daniel Sabo
39b841ccb1 NEWS: update for 2.8.10 2013-11-28 04:37:15 -08:00
Christian Kirbach
dd68c83032 Updated German translation 2013-11-23 17:23:53 +01:00
Michael Natterer
b6f7826f30 Bug 715018 - Developer documentation on VBRs incorrect
Fix the order of fields, and improve some other parts.

(cherry picked from commit a7e9016f11)
2013-11-22 20:48:53 +01:00
Michael Natterer
34cef1f372 Bug 678043 - Single Window Mode does not remember hide docks option
If docks are hidden and single-window-mode is active, emit
"notify::hide-docks" manually on gimp->config in session_restore() so
GimpImageWindow syncs its state at the right time.

(cherry picked from commit 07e6dc1270)
2013-11-21 23:03:22 +01:00
Piotr Drąg
a1e2439a1e Updated Polish translation 2013-11-21 01:09:35 +01:00
Michael Natterer
5121a5f6aa Bug 704896 - pop ups are annoying when opening multiple files...
...from the command line on some platforms/window managers

file_open_from_command_line(): display the progress in the active
display if there is no empty display. This way the progress appears in
the display that was opened from the previous command line argument.

(cherry picked from commit 4fb7fc918a)
2013-11-20 23:19:53 +01:00
Daniel Mustieles
43238a343c Updated Spanish translation 2013-11-20 18:15:35 +01:00
Michael Natterer
97dcb9dc08 pdb: fix gimp_layer_new_from_drawable() PDB wrapper
We must always call gimp_item_convert() even if the source drawable is
in the same image, or we might end up with a layer of wrong pixel
format. This was probably broken for years.

(cherry picked from commit 29d95f4c39)
2013-11-19 21:42:03 +01:00
Marco Ciampa
b361d18d27 Updated italian translation. 2013-11-18 18:35:05 +01:00
Clayton Walker
43f7961c17 osx: Update build files, prep for 2.8.8 dmg 2013-11-17 17:37:17 -07:00
Jehan
3097b94e61 file-export* labels renamed.
Follows updated save+export specification.
Partial implementation of commit 4b14ed2. The full commit also renames
the actions for consistency.
2013-11-18 09:44:10 +13:00
Piotr Drąg
9546556391 Updated Polish translation 2013-11-17 19:14:39 +01:00
Michael Natterer
1fa53c4670 app: gimp_brush_load_brush(): add special error for possible old files
The obsolete .gbp format had a 3-byte pattern following a 1-byte
brush, when embedded in a brush pipe, the current code tries to load
that pattern as a brush, and encounters the '3' in the header. Detect
that and suggest to re-save the file because the plug-in still loads
the legacy format.

(cherry picked from commit 83bd1c86fa)
2013-11-17 01:30:01 +01:00
Jernej Simončič
ad29d7e740 Windows manifest: mark as Windows 8-compatible (only affects theme display in
high contrast)
2013-11-17 00:18:12 +01:00
Clayton Walker
86f3115149 configure.ac: Remove -Wformat-non-litearl (removed in master) 2013-11-16 15:33:56 -07:00
Michael Natterer
b191b2f83f app: add $(GTK_MAC_INTEGRATION_LIBS) to LDADD 2013-11-16 22:59:36 +01:00
Michael Natterer
abd16f9b1e libgimpwidets: don't pick transparent colors in gimp_pick_button_pick()
Full opacity in gimp_rgba_set_uchar() is 255, not 1.0.

(cherry picked from commit f489ef2c5a)
2013-11-16 22:54:46 +01:00
Michael Henning
b4fe880e58 desktop: Install the appdata file and also make it translatable.
(cherry picked from commit fe3b80d617)
2013-11-16 11:25:40 -05:00
SimaMoto,RyōTa
2958f48e62 l10n: Update Japanese translation 2013-11-16 18:09:31 +09:00
Michael Natterer
492f9be145 app: don't ignore the return value of gimp_rectangle_intersect()
In gimp_drawable_resize(), don't blindly copy the width and height
returned by gimp_rectangle_intersect(), we have to check if the
function actually returned TRUE.

(cherry picked from commit 2b7f38f473)
2013-11-16 09:42:46 +01:00
Michael Natterer
c7bb77c45d Bug 711476 - Problems using animated GIH brushes
Show the error message from gimp_brush_load_brush() instead of
a generic "File is corrupt". Doesn't fix anything.

(cherry picked from commit 3e711fec09)
2013-11-16 08:54:20 +01:00
Clayton Walker
fab68c6b9b build-osx: Update modules 2013-11-15 19:16:05 -07:00
Jernej Simončič
de4fceea6c Installer: set PYTHONPATH environment variable on 32-bit installs, too 2013-11-11 18:59:19 +01:00
Martin Husemann
03509683cb Bug 711795 - execinfo.h functions need -lexecinfo on NetBSD
Allow building on NetBSD -current where execinfo.h is present but
backtrace() and backtrace_symbols() are in -lexecinfo.

(cherry picked from commit 4ac3967a5d)
2013-11-10 22:22:01 +01:00
Michael Natterer
fef663774e configure: check for gtk-mac-intregration only if GTK+ is built for quartz
(cherry picked from commit cfa074628f)
2013-11-10 20:52:55 +01:00
Michael Natterer
c21e7b581c configure: run check for gtk-mac-integration only on OSX 2013-11-10 18:58:23 +01:00
Daniel Sabo
2d548c71df app: Port to gtk-mac-integration
Replace deprecated Carbon APIs with Cocoa.

Includes code by:
Simone Karin Lehmann
Michael Natterer
Daniel Sabo

(cherry picked from commit e56344294c)
2013-11-10 18:49:45 +01:00
Michael Natterer
cf988e7d76 plug-ins: pass the format's name again in calls to gimp_export_image()
and clean up the formatting of the call and the lines around it. Now
we can check the various (disabled) export options for regressions
again by changing a single line in gimp_export_image().

(cherry picked from commit 03df8c6af4)
2013-11-10 16:44:51 +01:00
Michael Natterer
cdb0b5816e Bug 705457 - Export doesn't handle a single top-level layer group
Add special export code for single top-level layers groups, other
cases should be mostly (not perfectly) handled by the export code
for layered images. Also, show the legacy export dialog when the
envorinment variable GIMP_INTERACTIVE_EXPORT is set, so export
changes can actually be tested and verified again.

(cherry picked from commit 8c79a070bb)
2013-11-10 02:05:49 +01:00
Michael Natterer
adacb2a2a8 app: add an "interactive" boolean inside gimp_export_image()
instead of using "format_name", which is confusing, and file plug-ins
will soon pass their format name again.

(cherry picked from commit 206df00266)
2013-11-10 02:05:36 +01:00
Piotr Drąg
4563dbcde7 Updated Polish translation 2013-11-09 20:04:28 +01:00
Michael Natterer
e0fa66f6e7 app: add the same <Primary>D shortcut in the image close dialog
and change the button label to "_Discard Changes" so it's the same as
in quit.

(cherry picked from commit 9057b63c1b)
2013-11-08 23:37:29 +01:00
Michael Natterer
627caeb620 app: always use <Primary>D for the shortcut in the quit dialog
(do not take it from the button's mnemonic)

(cherry picked from commit 25c4acbd15)
2013-11-08 23:36:49 +01:00
Michael Natterer
d8fe4a1649 app: make quitting by keyboard shortcuts easier
This mitigates the pain of having to confirm quitting when images have
only be exported but not saved: Introduce a <Primary>D shortcut in the
quit dialog and tell about it using a hint label at the bottom, so
quitting with dirty images is now a matter of pressing <Primary>Q
<Primary>D which is much easier to memorize than <Primary>Q
<Mnemonic>D.

(cherry picked from commit ca3440aa1e)
2013-11-08 23:36:25 +01:00
Piotr Drąg
f937dbe63a Updated Polish translation 2013-11-08 23:03:34 +01:00
Nils Philippsen
e803f1930f file-bmp: don't close foreign FD in ReadImage()
(cherry picked from commit 4664c1f479)
2013-11-08 14:04:02 +01:00
Michael Natterer
49b05ce3e7 app: show file:// uris as filename in the close and quit dialogs
and make the quit dialog's "Exported to foo" string easier to
translate by constructing the markup in a separate step.

(cherry picked from commit beb184e395)
2013-11-07 19:31:56 +01:00
Michael Natterer
4a7bf96e53 app: make the "exported to foo" string in the quit dialog nicer
(cherry picked from commit 936780676b)
2013-11-07 19:31:36 +01:00
Michael Natterer
a28fcb2392 app: in the quit dialog, mention if the image has been exported
Install a cell_data_func for the dirty image list's text renderer abd
construct the label manually, using the same string and logic as in
the close dialog.

(cherry picked from commit 9fe3da2bf2)
2013-11-07 19:31:15 +01:00
Michael Natterer
67eb730936 app: add new accessor gimp_container_tree_view_get_name_cell()
(cherry picked from commit 78ad0327da)
2013-11-07 19:31:00 +01:00
Nils Philippsen
dc8bb4eecf app: don't ignore return value
...of gtk_widget_translate_coordinates()

(cherry picked from commit 391de600f1)
2013-11-07 12:29:30 +01:00
Nils Philippsen
6abd0f2438 file-jpeg: fix operator precedence errors
(cf. commit a9376443d7)
2013-11-07 12:21:45 +01:00
Nils Philippsen
8082363e9c gimpcolorwheel: comment out ineffectual code
(cherry picked from commit 1bb379c3f5)
2013-11-07 12:21:36 +01:00
Nils Philippsen
5c2f97f9f2 file-bmp: don't leak file pointer when erroring out
(cherry picked from commit 6467fbf65d)
2013-11-07 12:21:27 +01:00
Nils Philippsen
d291de0949 color-selector-cmyk-lcms: avoid freeing uninitialized pointer
(cherry picked from commit c028580ae0)

Conflicts:
	modules/color-selector-cmyk.c
2013-11-07 12:21:12 +01:00
Nils Philippsen
92a0387adc lcms: avoid dereferencing null pointers
(cherry picked from commit d0f7e713bb)
2013-11-07 12:20:54 +01:00
Michael Natterer
dc6ccc1749 Bug 709857 - Lcms plugin crashes if RGB profile does not exist
Always check the return value of lcms_load_profile(config->rgb_profile)
and use the builtin sRGB profile if it returns NULL.

(cherry picked from commit 961d03d795)
2013-11-04 23:19:15 +01:00
Michael Natterer
6ee719557b configure: post-release version bump to 2.8.9 2013-11-03 19:21:36 +01:00
Michael Natterer
ae90381387 Bump version to 2.8.8 and commit regenerated files 2013-11-03 19:13:46 +01:00
Michael Natterer
76dd14f0a5 NEWS: update for 2.8.8 2013-11-03 17:58:47 +01:00
Michael Natterer
ec5a879001 Bug 705797 - Empty right panel cannot be completely closed
Reduce the minimum width of the "You can drop foo here" label to one
pixel, so it can be hidden as completely as possible while keeping the
label visible.

(cherry picked from commit fbfaa960e1)
2013-11-03 16:06:37 +01:00
Michael Natterer
be45e40218 Bug 711329 - Artifacts on crop tool's passepartout when set to "allow growing"
Calculate GimpCanvasPassepartout's extents using a cairo_region_xor()
of the crop rectangle and the image extents, instead of a
cairo_region_subtract(). This fixes the artifacts and has the nice
side effect that the passepartout now colors both the parts of the
image that will be removed *and* the parts of the image that will be
newly added.

(cherry picked from commit 61c2ef40f7)
2013-11-03 15:25:41 +01:00
Michael Natterer
0273d0d88a Bug 710974 - Convert to Color profile fails on images with layer groups
Handle layer groups recursively, and don't convert the group layer
itself.

(cherry picked from commit 424129cc60)
2013-10-29 19:38:43 +01:00
Martin Srebotnjak
7e0a8eaca7 Updated Slovenian translation 2013-10-29 19:19:14 +01:00
Enrico Nicoletto
e5356b5ca1 Revert "Updated Brazilian Portuguese translation"
This reverts commit 29814899c3.
2013-10-28 21:00:03 -02:00
Enrico Nicoletto
29814899c3 Updated Brazilian Portuguese translation 2013-10-28 20:59:23 -02:00
Marco Ciampa
5ed30dceb9 Updated italian translation. 2013-10-25 17:38:25 +02:00
Piotr Drąg
d22ab649ff Updated Polish translation 2013-10-24 18:44:52 +02:00
Jehan
373ef0b526 Bug 709878 - test-session-* skipped when xvfb-run is unavailable.
Also add a GIMP_EXIT_TEST_SKIPPED #define, to return the SKIP exit value
documented by automake.
(cherry picked from commit 6ee77e5635)
2013-10-25 00:55:09 +13:00
Jehan
7c0b46a2f4 po: add app/text/gimptextlayout.c to POTFILES.in
(cherry picked from commit 1ea2e7f588)
2013-10-25 00:49:41 +13:00
Jehan
c79e7f5e87 Bug 662787 - Segfaults when trying to set a large text size
If a font size is too big for cairo or pango to deal with, nicely back
up from rendering and alert the user via an error dialog.
(cherry picked from commit 2aabbbd9c7)
2013-10-24 20:29:13 +13:00
Michael Natterer
a06b36fb35 plug-ins: use image/jp2 for JPEG 2000, procedures can only have one mime-type
(cherry picked from commit 30a389866a)
2013-10-22 20:37:44 +02:00
Michael Natterer
d12eb70bae app: treat an empty ("" not NULL) plug-in proc_install->menu_path as NULL
gimp_plug_in_handle_proc_install(): don't set the new procedure's menu
path nor its menu label if proc_install->menu_path is "", so we don't
run into action and menu creating confusion later. Do it here and not
later so the "" string never enters the system.

(cherry picked from commit 6e3495ff69)
2013-10-20 18:30:12 +02:00
Jehan
1c44eae8c8 Bug 675554 - fix overriden language environment variables on Windows.
If any of the locale environment variables used for UI language is set
(LANGUAGE, LC_ALL, LC_MESSAGES and LANG), do not let Windows' default UI
language override these.
Language set in GIMP preferences still have higher priority.
(cherry picked from commit fe481275e2)
2013-10-16 00:38:19 +13:00
Daniel Sabo
4fbe228da9 Update authors.xml
Add myself, Michael Henning, Jehan, and Téo Mazars
2013-10-11 14:23:01 -07:00
Michael Natterer
b8f05cdb55 libgimpwidgets: return an opaque color from gimp_pick_button_pick()'s OSX code
and fiddle with whitespace a bit.

(cherry picked from commit 5466caa064)
2013-10-11 22:54:40 +02:00
Daniel Sabo
e2f93a7779 Use the Quartz core graphics API to implement gimp_pick_button_pick when building with GDK Quartz.
Signed-off-by: Clayton Walker <clayton.m.walker@gmail.com>
2013-10-11 13:53:19 -06:00
Clayton Walker
faa233666a Organize OSX build files 2013-10-11 12:38:16 -06:00
Clayton Walker
71ba846f8e Update osx build scripts.
Enable dbus, gvfs, and python for all 2.8.x series builds. Update libs.
2013-10-11 09:23:00 -06:00
Piotr Drąg
0bc0078dec Revert "Fix syntaxis in user-visible messages"
This reverts commit 48e4cb708e.

Please avoid changing strings on the stable branch unless it's *absolutely*
necessary. Fixing typos on master is enough.
2013-10-11 15:28:16 +02:00
Piotr Drąg
95b2375ce1 Revert "Fix syntaxis in a user-visible message"
This reverts commit eb3a62c43e.

Please avoid changing strings on the stable branch unless it's *absolutely*
necessary. Fixing typos on master is enough.
2013-10-11 15:25:32 +02:00
Alexandre Prokoudine
5fb359ae82 Updated Russian translation 2013-10-11 10:35:51 +04:00
Alexandre Prokoudine
48e4cb708e Fix syntaxis in user-visible messages
Phrases starting with "When enabled" should have a comma.
2013-10-11 06:33:44 +04:00
Alexandre Prokoudine
eb3a62c43e Fix syntaxis in a user-visible message
"When enabled GIMP is in a single-window mode" was missing a comma.
2013-10-11 06:22:35 +04:00
Michael Natterer
fe5623c757 Bug 703065 - Jpeg file size preview error is back
Use GIO to get the file size.

(cherry picked from commit 1f21a28770)
2013-10-05 00:15:22 +02:00
Jehan
a10b60e314 Bug 681709 - GimpContainer continuously scrolls on dnd failure on Windows.
The scroll timeout is looping forever if the drag ends by a failure
event. For instance when hitting the Esc button during scrolling.
(cherry picked from commit 3e082b356c)
2013-10-02 21:24:07 +13:00
Nils Philippsen
100ce42c1e configure: use test in a portable way
(based on commit c13e73271b)
2013-10-01 12:18:17 +02:00
Michael Natterer
e69d287be1 Bug 708594 - Alignment Tool Icon not visible on dark background
Add whiteish borders around the align icon arrows.

(cherry picked from commit c1095cb406)
2013-09-28 17:24:15 +02:00
Michael Natterer
f37db5bc34 desktop: indentation and formatting for gimp.appdata.xml
(cherry picked from commit 9fc03fb8ad)
2013-09-23 15:26:54 +02:00
Marco Ciampa
d2e00b8bd3 Updated italian translation. 2013-09-23 11:03:12 +02:00
Téo Mazars
372284094f Bug 677275 - Mosaic Filter produces ugly artifacts
Fix this by using a real point-segment distance.
Some artifacts remains though, they must come from somewhere else.

(cherry picked from commit 4caa5a113f)
2013-09-22 16:30:04 +02:00
Balázs Úr
1bc91326ce Updated Hungarian translation 2013-09-22 10:30:09 +02:00
Balázs Úr
23281bc3f0 Updated Hungarian translation 2013-09-22 10:30:09 +02:00
Jehan
9c0f515f28 Bug 708521 - Getting rid of cage_complete property on GimpCageTool, redundant with tool_state.
(cherry picked from commit ac0ac60ca9)
2013-09-22 02:40:15 +12:00
Jehan
42de6e065c Bug 708519 - Fix using Backspace to delete a closed cage tool's points.
(cherry picked from commit 2294b8da26)
2013-09-22 02:27:07 +12:00
Jehan
08c7d90823 Bug 708517: Assertion on cage tool commit with ENTER + fix cage completion with ENTER.
The key press handler must return TRUE on successfully processing the key,
otherwise the handler ends up being run several times.
(cherry picked from commit 5e331e1d25)
2013-09-21 22:54:45 +12:00
Michael Henning
91738c3b93 plug-ins: Use the standardized value for deflate compression in tiff-save.
Ironically, the standardized value is called COMPRESSION_ADOBE_DEFLATE,
while the vendor-specific value is called COMPRESSION_DEFLATE.

(cherry picked from commit 4bc51691e52e5813bb10b3e6e4b1e18cdeab5b6d)
2013-09-20 19:13:08 -04:00
Sven Claussner
ebef7983e8 Add licence comments to AppData file.
Explain the meaning of the licence tag and
the GPL compatibility of the used CC0 licence.
2013-09-20 20:56:19 +02:00
Timo Jyrinki
dc9fdc5528 Updated Finnish libgimp translation by Juhani Numminen 2013-09-20 21:35:56 +03:00
Enrico Nicoletto
09861b8501 Updated Brazilian Portuguese translation 2013-09-20 14:44:12 -03:00
Jehan
a90e9ec5e7 app: disallow a theoretical infinite loop if we run out of ids.
In practice, that's likely impossible to ever happen. This was just
itching my perfectionist self, who enjoys flawless design.
(cherry picked from commit 951393b34e)
2013-09-20 03:48:56 +12:00
Nils Philippsen
dfaa321027 lcms: pretty code even better if syntactically correct
Thanks to Jehan for spotting this.
2013-09-19 17:38:46 +02:00
Michael Natterer
edfba8edfd app: don't crash when a color profile has no information
(cherry picked from commit 9d42df5fa2)
2013-09-18 15:11:11 +02:00
Nils Philippsen
b2c6bd7614 Backport lcms 2.x support from master, making it optional.
In order to retain support for lcms 1.x, this merges the lcms2-specific
code as a configurable alternative.

The user can specify which version to use by specifying
"--with-lcms=lcms1" or "--with-lcms=lcms2" when running configure. If no
version is specified explicitly, version 1.x will be preferred if both
versions are available. This ensures that GIMP is built with the same
lcms version as an older version, if the same configure switches are
used and the same libraries are available.

This builds on the following commits from the master branch:

    commit c59ab4d817
    Author:     Massimo Valentini <mvalentini@src.gnome.org>
    AuthorDate: Tue Sep 4 17:53:06 2012 +0200

        lcms: oversight

    commit 8bbfc9e5cf
    Author:     Michael Natterer <mitch@gimp.org>
    AuthorDate: Mon Sep 3 20:03:53 2012 +0200

        Bug 675558 - switch from lcms-1 to lcms-2

        Applied modified patch from Hartmut Kuhse which ports to lcms-2.
2013-09-18 13:47:12 +02:00
Nils Philippsen
c9c927603b include missing header 2013-09-18 13:47:12 +02:00
Dimitris Spingos
803c2d2b32 Updated Greek translation 2013-09-18 07:22:05 +03:00
Aurimas Černius
cee54bd992 Updated Lithuanian plug-ins translation 2013-09-13 22:28:47 +03:00
Aurimas Černius
42b40d1e48 Updated Lithuanian translation 2013-09-13 22:26:53 +03:00
A S Alam
bf1b779b25 update Punjabi Translaiton 2013-09-13 11:06:05 -05:00
Matej Urbančič
a14ce157f3 Updated Slovenian translation 2013-09-10 21:19:37 +02:00
Michael Natterer
3c76d33019 tools: make sure clang is not considered to be visual studio
just because it starts with "cl". Spotted by Joerg Sonnenberger.

(cherry picked from commit ac808b8b6b)
2013-09-10 12:09:01 +02:00
Sven Claussner
c8a7be593b German UI translation: fix some inconsistencies
Fix typos in Vectors, Gradients, Dynamics, Buffers,
Document History, Error console dialogs. 
Use 'Zeichendynamik' consistently as translation of
'Dynamics'. Make plural forms clearer.
2013-09-06 19:56:28 +02:00
Richard Hughes
31601b3a6b Add an AppData file for GIMP
(cherry picked from commit 5e37536d77)
2013-09-06 01:13:24 +02:00
Jehan
0f8496d873 Bug 707255 - Open preferences when quitting causes assertion failure
When removing the container of a GimpContainerView,
gimp_container_view_remove_container() must be the last call. It was
causing a `GIMP_IS_CONTAINER (container)' failure in subsequent
gimp_container_get_children_type().
For good practice, unsetting a container works now the exact reversed
order as the setting of a container.
(cherry picked from commit 338e0ddf8d)
2013-09-05 23:53:45 +12:00
Jehan
175852a407 Bug 707255 - Open preferences when quitting causes assertion failure.
Wrong order of destruction functions were causing critical warnings on
g_signal_handlers_disconnect_by_func() calls.
Also g_object_ref/unref() the container because the tree handler might
hold the last ref to the container, once it's disconnected the container
could be gone.
(cherry picked from commit 04a3c65aa1)
2013-09-05 23:52:55 +12:00
Sven Claussner
742da269ee Remove dead item gimptoolpresets.xml in app-docs.sgml
This item caused builds with --enable-gtk-doc-app to
fail because of a typo and it was also misplaced in
app-core-containers.
2013-09-03 19:34:02 +02:00
Michael Natterer
aa5c186a3d Bug 707354 - Bump Map offsets only go to 1000 regardless of image size
Allow ranges from -10000 to 10000, still arbitrary but more
real-world. The scales still go -1000 to 1000, but the spinbuttons
allow for the full range.

(cherry picked from commit af0cfacfb3)
2013-09-03 16:04:31 +02:00
Sven Claussner
e1564c44a8 Remove dead item gimptoolpresets.xml in app-docs.sgml
This item caused builds with --enable-gtk-doc-app to 
fail because of a typo and it was also misplaced in 
app-core-containers.
2013-09-02 22:28:30 +02:00
Inaki Larranaga Murgoitio
3049999de9 Updated Basque language 2013-08-28 21:14:13 +02:00
Inaki Larranaga Murgoitio
356e8a3ff2 Updated Basque language 2013-08-28 21:13:15 +02:00
Inaki Larranaga Murgoitio
f6a59f2669 Updated Basque language 2013-08-28 21:12:16 +02:00
Inaki Larranaga Murgoitio
d7a7ae051c Updated Basque language 2013-08-28 21:10:55 +02:00
Inaki Larranaga Murgoitio
c7b81f1f8a Updated Basque language 2013-08-28 21:01:32 +02:00
Daniel Mustieles
94db7d46d0 Updated Spanish translation 2013-08-27 19:42:16 +02:00
Piotr Drąg
4d468af5cb Updated Polish translation 2013-08-24 02:19:54 +02:00
Michael Natterer
d93fd0a84e Bug 706221 - File/Save (As) dialog: add a link to the Export dialog...
...for Non-XCF files.

When the entered extension in save or export is on the other group,
add a link to the warning dialog which allows to jump directly to the
export or save dialog, with the same filename pre-entered.

(cherry picked from commit b56145626e)
2013-08-23 21:30:49 +02:00
Enrico Nicoletto
ded05240e2 Revert "Updated Brazilian Portuguese translation"
po-libgimp will be placed in the correct branch!

This reverts commit d6f50ab1df.
2013-08-23 16:02:22 -03:00
Enrico Nicoletto
d6f50ab1df Updated Brazilian Portuguese translation 2013-08-23 15:58:09 -03:00
Enrico Nicoletto
4758321f35 Updated Brazilian Portuguese translation 2013-08-14 12:34:21 -03:00
Daniel Mustieles
0d57efb47f Updated Spanish translation 2013-08-14 14:10:37 +02:00
Piotr Drąg
b7e676d5f7 Updated Polish translation 2013-08-11 01:06:40 +02:00
Michael Natterer
1ecc25a260 app: return a GError when flattening the image failed
(cherry picked from commit c32c1208b0)
2013-08-09 21:39:23 +02:00
Simon Budig
d3763fe8b2 app: fix crash when flattening an image with no visible layers
(cherry picked from commit 514f22f53d)
2013-08-09 21:38:15 +02:00
Marco Ciampa
ed6a87b3df Updated italian translation. 2013-08-08 16:00:15 +02:00
Enrico Nicoletto
89cea63de4 Updated partial Brazilian Portuguese translation 2013-08-06 09:45:08 -03:00
Michael Natterer
5874a6dbc7 app: port mtime code in gimp_data_save() to GIO
because it gets its stat() calls right.

(cherry picked from commit e72cf05ccb)
2013-08-04 17:59:22 +02:00
Téo Mazars
d59a31867a Bug 674391 - Indexed colours not exported when save a .bmp
It's about importing in fact.

Parse BITMAPV4HEADER / BITMAPV5HEADER and use GIMP's BMP
implementation instead of using gdk_pixbuf.

Also, remove an old hack about 32bits bmp v3 + alpha. The alpha
channel is already ignored in that case.

(cherry picked from commit 56f065321c)
2013-08-03 19:50:02 +02:00
Michael Natterer
4fb7a436bc Bug 704980 - uclibc - base-utils.c: execinfo.h: No such file or directory
Apply patch from Amadeusz Slawinski that checks for execinfo.h and
builds the code that needs it conditionally.
2013-08-02 16:50:00 +02:00
Michael Natterer
02a1e57442 Bug 704896 - pop ups are annoying when opening multiple files from...
the command line on some platforms/window managers

Don't let the progress windows steal the focus, and always center
them.

(cherry picked from commit 013c9d337b)
2013-07-28 02:52:53 +02:00
Martin Srebotnjak
58931c135d Updated Slovenian translation 2013-07-26 21:20:14 +02:00
Dimitris Spingos
5b995df2ea Updated Greek translation 2013-07-23 17:25:17 +03:00
Daniel Mustieles
c1d9d0c129 Updated Spanish translation 2013-07-22 13:45:43 +02:00
Piotr Drąg
ba7e75bd58 Bug 679083: proper docs for plug-in-autocrop-layer without string changes
Based on patch dedb025019 by Jehan <jehan@girinstud.io>.
2013-07-16 18:35:29 +02:00
Jehan
5069b788fb Revert "Bug 679083: proper documentation for plug-in-autocrop-layer"
This reverts commit dedb025019.
I did not know there was a policy not to change translatable strings in stable.
Sorry!
2013-07-16 09:24:09 +09:00
Piotr Drąg
2e991eb4e0 Updated Polish translation 2013-07-15 22:36:22 +02:00
Michael Natterer
653c4e98df Bug 679195 - Foreground Select Tool Mask Inverted
render_image_alpha(): invert the mask so it masks what is *not* the
foreground object.
2013-07-15 01:22:14 +02:00
Michael Natterer
60bf4e367d Bug 700193 - undoing paint tools doesn't update last_coords properly
paint_core->start_coords is in fact the last stroke's endpoint and
only used for storing it in GimpPaintCoreUndo, so the last endpoint
can be resotred for straight-line painting after an undo. Make the
code actually doing that.

(cherry picked from commit d1795ac204)
2013-07-15 00:45:12 +02:00
Seong-ho Cho
cb2b4b6751 Updated Korean translation 2013-07-15 06:50:11 +09:00
Michael Natterer
a1cd4144df Bug 704118 - crash on invalid number of PLTE entries
Make sure an indexed image always has a colormap. This was the case
before, except one could set a NULL colormap via the PDB.

Add gimp_image_unset_colormap(), and make gimp_image_set_colormap()
never set the colormap to NULL, even if NULL is passed. Change the
only places where actual unsetting makes sense to use unset().

Make some GUI places deal gracefully with palettes/colormaps with zero
entries.

(cherry picked from commit 37372555e5)
2013-07-14 22:33:52 +02:00
Michael Natterer
616e8f2d82 Bug 703692 - Unable to Resize Large Left Dock Area
Merge all color-selector-wheel changes from master, which turns the
thing into a properly reqizable widget and fixes the issues with left
dock resizability.
2013-07-14 13:46:00 +02:00
Michael Natterer
3632680049 Bug 703692 - Unable to Resize Large Left Dock Area
Small fix for the last commit: set a silly small initial size request
on the wrap_box so it doesn't initially request too much and breaks
dock layout deserialization.

(cherry picked from commit a2334b0b15)
2013-07-14 13:30:53 +02:00
Michael Natterer
38ab5f9d64 Bug 703692 - Unable to Resize Large Left Dock Area
gimp_container_grid_view_viewport_resized(): set the wrap_box'
required width to just one cell_width, not cell_width * columns. This
way it can shrink also when attached to a toolbox dock. It remains
unclear why it could nicely shrink in all other dock columns.

(cherry picked from commit 6a5e37b68d)
2013-07-13 18:53:59 +02:00
Jehan
b283facb89 Bug 703787 - Crash during switch from multi to single window mode
Shells can now travel from one window to another. Canvas position code
should therefore not keep track of the image window for a specific shell
but must use whatever is the current window for this shell (even though
it may be a different one before and after the size-allocate).
This also partly fixes some positioning issue during mode switch.
(cherry picked from commit 7e513faa50)
2013-07-13 09:16:01 +09:00
Michael Natterer
26fb257a19 Bug 703113 - Plug-ins are queried on every launch
Port gimp_datafiles_read_directories() to GIO which seems to get
its stat() calls right on all platforms.

(cherry picked from commit 767a5a3217)
2013-07-12 15:21:25 +02:00
Jehan
f7fe056e19 app - call to keep the active shell in single window mode switch out of loop.
Small fix from commit 2697b29. This previous commit was working well, but
implied calling this method as many time as there are opened shells,
whereas once is enough.
(cherry picked from commit 8ef5fca062)
2013-07-10 09:12:53 +09:00
Massimo Valentini
cc836e7c84 Bug 703806: GIMP crashes when scaling an image
during an image rescale, while spinning the main-loop,
layer-groups preview generation used to start before their
layers were fully rescaled, so it tried to access tiles that
were not yet there
(cherry picked from commit 3cc923d5a5)
2013-07-09 19:46:09 +02:00
Daniel Mustieles
588012f48c Updated Spanish translation 2013-07-08 14:03:43 +02:00
Jehan
0c4e7686e8 Bug 703736: when switching from multi to single window mode, tab order is lost.
(cherry picked from commit 112fa53730)
2013-07-08 09:35:45 +09:00
Jehan
893c73cea4 Bug 703738: when switching between multi and single window mode, keep the same active shell.
(cherry picked from commit 2697b29963)
2013-07-07 23:54:55 +09:00
Massimo Valentini
42e370e208 app: don't pass NULL to g_object_add_weak_pointer
opening many images from the command line used to print:

(gimp-2.9:): GLib-GObject-CRITICAL **: g_object_add_weak_pointer:
assertion 'G_IS_OBJECT (object)' failed

because only the first finds the empty display
(cherry picked from commit 8a7d5c9d16)
2013-07-05 18:19:20 +02:00
Jehan
80d11a46a8 Bug 672100: gimptool returns wrong system plugin dir if libdir has been customized.
On UNIX platforms, use the actual libdir value, which has been set at compile time.
(cherry picked from commit 97d14ebda3)
2013-07-06 00:00:16 +09:00
Jehan
dedb025019 Bug 679083: proper documentation for plug-in-autocrop-layer
The current documentation have users think the argument layer is going
to be cropped, whereas it actually only serves as a base for determining
cropping extents. The active layer is the one to be cropped.
Slightly more complete documentation explaining this.
2013-07-05 23:58:48 +09:00
Massimo Valentini
4e664a011d Bug 629941 - GIMP doesn't exit properly when quitting while loading images
GIMP's "exit" signal was emitted before the handler was connected.

Don't start loading command line images or batch processing before
app_exit_after_callback() is connected. Make sure we don't use
dangling main loop pointers or try to stop a non-running main loop.

(cherry picked from commit 09682d62ae)
2013-07-04 21:41:27 +02:00
Massimo Valentini
dea99e516b app: file_open_from_command_line(): don't access a dangling display pointer
Happens if GIMP is quit while the image is being loaded.

(cherry picked from commit 6c62eb2238)
2013-07-04 21:08:39 +02:00
Michael Natterer
92e9de96ae app: view_close_cmd_callback(): don't forbid to close images without layers
Also no need to check for shell != NULL.
2013-07-03 09:26:03 +02:00
Michael Natterer
16e548c12f libgimpthumb: add GIO_LIBS also to libgimpthumb_2_0_la_LIBADD 2013-07-01 19:05:14 +02:00
Michael Natterer
2654d0d499 libgimpthumb: use GIO_CFLAGS/LIBS not GLIB_CFLAGS/LIBS 2013-06-29 18:14:12 +02:00
Michael Natterer
4d2316cb3e Bug 683152 - Preview thumbnails in file open dialog causes error in 2.8.2
Port gimp_thumb_file_test() to GIO which seems to get its stat()
calls right on all platforms.

(cherry picked from commit bb75596062)
2013-06-28 22:46:27 +02:00
Alexandre Prokoudine
3a9f5a354b Updates and fixes to Russian translation 2013-06-28 12:29:38 +04:00
Sven Claussner
24223d6663 Bug 703218 - Typo in German translation
In Edit/Preferences/Tool Options, mouseover text
over 'Set layer or path as active': 
replace 'Eben' by 'Ebene'
2013-06-28 09:17:57 +02:00
Michael Henning
3ce15deed9 autogen.sh: also look for automake 1.14
(cherry picked from commit 9a6b42a4fd)
2013-06-27 09:57:50 -04:00
Michael Natterer
bd91caf778 app: port GimpImagePropView's file size querying to GIO 2013-06-25 19:18:25 +02:00
Jernej Simončič
16b1ff9a09 Installer: add libharfbuzz-0.dll to the list of required 32-bit libraries 2013-06-24 11:11:24 +02:00
Michael Natterer
8937d9eb28 configure: post-release version bump to 2.8.7 2013-06-22 00:12:59 +02:00
Michael Natterer
82888aaa4b Bump version to 2.8.6 and commit regenerated files 2013-06-21 23:22:49 +02:00
Téo Mazars
20e4a9c2c3 NEWS: add api introduction and fix typo 2013-06-21 22:28:48 +02:00
Téo Mazars
f7cbd9de65 Bug 701410 - Small artifacts appear when performing a selection
Do not allow negative radius.
(cherry picked from commit 7a0f8ad78e)
2013-06-21 20:20:21 +02:00
Michael Natterer
32c9903a58 NEWS: updates 2013-06-21 12:44:38 +02:00
Michael Natterer
dd9f57f8de Bug 701335 - Gimp crashing on creating huge clipboard brush
Change the maximum size of clipboard patterns and brushes to 1024x1024.
2013-06-21 12:43:29 +02:00
Michael Natterer
ef649f4827 Bug 701803 - Cage Transform raises segmentation fault...
...if layer bounds are changed.

Call gimp_tool_control_set_preserve (tool->control, FALSE) so it is
stopped when the drawable changes.

(cherry picked from commit 2e8ef97c13)
2013-06-18 19:08:08 +02:00
Marco Ciampa
731ee3218c Updated italian translation 2013-06-07 22:28:27 +02:00
Stanislav Petrek
bb5f7d6525 Updated slovak translation 2013-06-05 21:27:40 +02:00
Dimitris Spingos
8b7ad24892 Updated Greek translation 2013-06-05 15:15:39 +03:00
Michael Natterer
4b957cf404 Bug 701594 - gimp-image-select-item does not recognize path transformations
pdb: Need to gimp_vectors_freeze()/thaw() around stroke modifications
so the vector's preview and the cached GimpBezierDesc are invalidated.
(cherry picked from commit 64887fe06c)
2013-06-04 16:51:20 +02:00
Massimo Valentini
bc411d97c9 Bug 701120: Opening fuzzed .pnm-file causes stack buffer overflow
increase BUFLEN to avoid appending the nul terminator '\0'
past the end of 'buf'
(cherry picked from commit ac98dd4751)
2013-06-01 17:36:55 +02:00
Massimo Valentini
ba98aedcb1 Bug 680290: -90 degree rotation distortion of layer
The previous code did not consider that a transformation
described by a matrix with non integer values in the 3rd
column or by a non affine matrix requires interpolation

and make floating point arithmetic rounding errors
consistent with INTERPOLATION_NONE
2013-06-01 17:07:24 +02:00
Michael Natterer
dd8aeeec92 Bug 700215 - Gradient name changes do not persist across sessions...
if the gradient itself isn't changed.

GimpData: implement GimpObject::name_changed() and set the "dirty"
flag to TRUE. Don't set dirty in GimpData::dirty()'s default impl
because that calls gimp_object_name_changed() anyway.
(cherry picked from commit 5280a02ed8)
2013-05-29 22:30:40 +02:00
Daniel Mustieles
27dd1c167b Updated Spanish translation 2013-05-27 16:46:41 +02:00
Piotr Drąg
45644a44ba Updated Polish translation 2013-05-25 18:29:47 +02:00
Michael Natterer
aa16efe4c9 Bug 578695 - gimptool-2.0 does not respect $DESTDIR
Don't mention DESTDIR in the gimptool manual page.
(cherry picked from commit 1a107722ea)
2013-05-25 16:13:40 +02:00
Michael Natterer
a57ad1a997 Bug 700707 - Missing time data in tool-options/*.settings files
strftime() the time using %H:%M:%S which should work on
all platforms, unlike %T.
(cherry picked from commit 51181648f7)
2013-05-25 11:22:59 +02:00
Jehan
c947260d2d actions: dock-close had a default shortcut colliding with view-close.
When the accelerator is NULL, gtk_action_group_add_action_with_accel()
would use the default one for the stock icon used. And GTK_STOCK_CLOSE
default accelerator is "<Primary>w" which we already use for view-close.
We must use empty string when we want no default accelerator.
(cherry picked from commit 28669b07d1)
2013-05-25 07:19:09 +09:00
Michael Natterer
6cda75205a app: add the "view" action group to all docks
so all image and view related shortcuts work globally now.
(cherry picked from commit b234f5f879)
2013-05-25 07:09:47 +09:00
Michael Natterer
ae8749a9a7 app: can't call view_actions_setup() from file_actions_setup()
This breaks Ctrl+W from docks to close the active display, we'll
need another solution for this.
(cherry picked from commit 0ff07fa385)
2013-05-25 07:09:20 +09:00
Jehan
1380b0696c actions: forgot an include which was triggering an "implicit declaration" warning.
(cherry picked from commit 8a935f05a0)
2013-05-25 07:08:47 +09:00
Jehan
22d4cd02fc Bug 685559 - view-close action modified to close only an image view.
view-close was closing also toolbox docks if they had the focus. Now
this action will close only the current active image view (if any),
whatever the window which has actual focus.
Additionally all other view actions are available on dock focus.
(cherry picked from commit 2ad8634c06)
2013-05-25 07:08:37 +09:00
Michael Natterer
5207a4fcd8 Bug 700675 - Missing menu locations for registration and other menu...
Remove the legacy <Toolbox>, <Load> and <Save> from the error message
that states which plug-in menu paths are valid, and add the missing
<Fonts> and <ToolPresets>. Also actually handle <ToolPresets>, this
was apparently forgotten.
(cherry picked from commit 564e6010fd)
2013-05-24 09:30:52 +02:00
Dov Grobgeld
b47f4eb777 Updated dicom plugin to solve problems with import into external programs (e.g. OsiriX) 2013-05-20 19:52:45 +03:00
Michael Natterer
40726a341d Bug 700653 - Duplicate "(time ...)" values in gimp-curves-tool.settings
and gimp-levels-tool.settings

Serialize the channel properties manually (not using
gimp_config_serialize_properties()), so the parent class' "time"
property doesn't end up in the config file once per channel.
(cherry picked from commit 6781439fdc)
2013-05-19 21:45:37 +02:00
Michael Natterer
7ee3235bd0 Bug 688537 - Toolbox occasionally has spaces or tool names after the icons
Explicitly set the toolbox' style to GTK_TOOLBAR_ICONS to protect it
from user toolbar preferences.
(cherry picked from commit e1bfc0a362)
2013-05-17 14:43:56 +02:00
Michael Natterer
7b42013bae Bug 695687 - GimpSpinScale's label is unreadable on dark themes
Draw the label like GtkEntry draws its text: with different colors
inside and outside the progress bar.
(cherry picked from commit ce8ae69440)
2013-05-14 02:02:30 +02:00
Michael Henning
ecb06953ef tests: fix running make check with both parallel make and xvfb
Before, the xvfbs would all try to be on DISPLAY=:99, which
caused issues.
(cherry picked from commit 2df4fa2d6f)
2013-05-12 19:50:21 -04:00
Michael Natterer
eb28d90866 app: change serialization of the right docks width in SWM (again)
Use "right-docks-width" and always a positive value instead of
"right-docks-position" (as opponsed to "left-docks-width", that
distinction is a GtkPaned implementation detail and does not belong
into a config file). Parse all old values too. Also fix a glitch in
the deserialization code which might fix bug #700147.
(cherry picked from commit a078ca3f5f)
2013-05-13 00:08:24 +02:00
Jehan
a98b6581e6 Bug 699185 - when moving the pointer fast out of guide scope, do not keep it highlighted.
When a drawing timeout happens too close from the previous drawing, we don't want to cancel
the timeout function (FALSE), but simply retry later (TRUE).

In our case in particular, if you move your pointer very fast over a guide, the highlighting
drawing was happening less than MINIMUM_DRAW_INTERVAL before the un-highlighting drawing,
hence canceling the later, which caused the drawing bug.
(cherry picked from commit 3496e178ef)
2013-05-12 05:25:49 +09:00
Jehan
714c232eee Bug 664584: WM DELETE event in single window mode is synonym to file-quit.
In multi-window mode, closing an image window is only meant to close
the current image (unless this is the last empty window).
In single window mode though, you are meaning to close the whole program.

Thanks to Niels Martignène for the original patch.
(cherry picked from commit 6008c2019b)
2013-05-12 04:59:30 +09:00
Michael Natterer
7205a25112 app: fix include in test-core, re-closes bug 622054 2013-05-11 20:44:04 +02:00
Sven Claussner
9625dd92b4 Bug 699886 - Missing <Dynamics> menu location for script/plugin
Add the missing <Dynamics> menu location for script/plugin
registration.
	modified:   app/plug-in/gimppluginprocedure.c
2013-05-10 14:47:56 +02:00
Massimo Valentini
9937a0a99b app: don't crash when adjusting quality during an export to jpeg
with preview enabled
(cherry picked from commit 8940b25c6d)
2013-05-04 18:19:11 +02:00
Michael Natterer
a8aef360b9 app: fix saving/loading of .xcf.gz and other compressed XCFs
Make file_utils_uri_get_ext() public and use it instead of
strrchr(uri, '.'). Also add "xz" to the list of matched special cases,
and some cleanup.
(partial cherry pick from commit e99c0045a2)
2013-05-02 20:12:26 +02:00
Jehan
e083b6790d Revert "app: GimpContainerEntry's text is red when not a valid item."
Somehow breaks the completion popup.

This reverts commit 202c8ed762.
2013-04-29 22:17:18 +09:00
Jehan
202c8ed762 app: GimpContainerEntry's text is red when not a valid item.
If the selected item in a GimpContainerEntry is invalid, or else when the entry
is being updated, the text shows in red.
(cherry picked from commit 64fe3af1a9)
2013-04-29 08:48:29 +09:00
Michael Natterer
e1645fe427 Bug 699100 - Move tool: space-bar inhibits function of Move tool
Don't try to switch to the move tool if the move tool is already active.
Also never bail out early from gimp_display_shell_space_pressed() so we
don't end up in an inconsistent state.
(cherry picked from commit 87584d2f82)
2013-04-28 15:31:30 +02:00
Rafael Ferreira
4d56fbc16b Updated Brazilian Portuguese translation 2013-04-28 09:10:30 -03:00
Sven Claussner
54b28a5b60 Bug 692956 - Bring back 'Color from gradient' option to Paint tools
This patch adds a Dynamic for the 'Color From Gradient' option
and three Paint tool presets (Airbrush, Paintbrush, Pencil), which
use this preset.

	new file:   data/dynamics/Color-From-Gradient.gdyn
	new file:   data/tool-presets/Paint/Airbrush-Color-From-Gradient.gtp
	new file:   data/tool-presets/Paint/Paintbrush-Color-From-Gradient.gtp
	new file:   data/tool-presets/Paint/Pencil-Color-From-Gradient.gtp
	modified:   data/dynamics/Makefile.am
	modified:   data/tool-presets/Paint/Makefile.am
 	modified:   AUTHORS
 	modified:   authors.xml
2013-04-24 19:29:03 +02:00
Enrico Nicoletto
15c79a22ca Updated Brazilian Portuguese translation 2013-04-24 00:40:30 -03:00
Michael Natterer
9069bd8d79 Bug 688348 - Layer tab and Images tab: not updated on dropping...
...one image onto another

gimp_dock_window_display_changed(): make sure the "auto-follow-active"
logic works both ways: when the active image or display is changed in
a dockable, update the global context. Fixes multi-window mode.

gimp_context_real_set_display(): make sure a context's display and
image are always in a consistent state and never have a display that
is not display->image: when display is the same as context->display,
check that the context's image matches display->image, so that after a
gimp_context_set_display(), the context is consistent in all
cases. Fixes single-window mode.
(cherry picked from commit bacc9c9635)
2013-04-23 21:09:40 +02:00
Michael Natterer
4cd97c8cf7 app: make gimp_dock_window_constructed() more readable
by adding a local "factory_context" variable instead of calling
gimp_dialog_factory_get_context (dock_window->p->dialog_factory)
multiple times.
(cherry picked from commit 076f375e78)

This is not a bugfix, just to seamlessly pick the next commit...
2013-04-23 21:09:04 +02:00
Mikael Magnusson
900cc4108b app: forgot to invert the matrix in corrective mode when transforming the selection. 2013-04-23 17:17:08 +02:00
Michael Natterer
380437e65e app: make GimpContainerEntry robust against reordered parent class destruction
So it will not warn on GTK+ 3.x. One less patch to do in gtk3-port.
(cherry picked from commit e746fa51da)
2013-04-21 21:49:50 +02:00
Michael Natterer
019eb59111 Bug 697530 - zoom during mouse-pan focuses on wrong location
Block all key events while middle-mouse panning, to prevent
accelerators from being invoked.
(cherry picked from commit 3643551280)
2013-04-21 20:02:01 +02:00
Massimo Valentini
ca52016116 Bug 698426: ALL text disappears when changing font ...
of selected text in on-canvas editor

It is necessary to escape font names containing '&'
2013-04-21 17:59:53 +02:00
Michael Natterer
839734463a Bug 694417 - GIMP Segmentation Faults (Segfault, Crash) after Changing Color...
Don't pass a NULL pointer to gimp_text_buffer_get_font_tag() because
it is dereferenced in a call to strcmp().

gimp_context_get_font_name() returns NULL when the selected text
includes spans with different fonts. Add the same special handling for
spans with inconsistent sizes too, and add comments that we should
have the same for the color.

Original patch from Massimo Valentini.
(cherry picked from commit 804313bbec)
2013-04-21 17:54:32 +02:00
Michael Henning
4055ccbe9c app: fix broken build on windows due to not #including windows.h
This was broken after 7392679be9
The corresponding commit on master did not break the build because
windows.h is already included there.
2013-04-20 22:19:12 -04:00
Nils Philippsen
37757e4e8d app: let the tag popup own its tag objects
This should fix crashes in which tag objects got accessed after they
were disposed, because they still were stored with the popup object.
(cherry picked from commit b109e05806)
2013-04-16 11:36:57 +02:00
Mukund Sivaraman
e768d4fa8d imagemap: Rebuild parsers (after .y update) 2013-04-11 20:59:22 +05:30
Mukund Sivaraman
03dfb95f13 imagemap: Don't use strcpy() in unescape_text() (#649172)
strcpy() doesn't like overlapping strings and this causes other failures
in this unescaping code.

Also cleanup the code to follow our coding style.
(cherry picked from commit db95e20b0b)
2013-04-11 14:16:15 +05:30
Martin Husemann
95a9172bd5 imagemap: Unescape simple xml encodings when reading csim format image maps (GB#649172)
(cherry picked from commit bc8a6123c7)
2013-04-11 14:16:08 +05:30
Michael Natterer
3aaa69642e app: allow to pass NULL to gimp_window_set_primary_focus_widget()
(cherry picked from commit 754e4eb919)
2013-04-10 19:31:10 +02:00
Michael Natterer
53d083c844 Bug 675549 - image region does not have focus unless clicked on
We cannot simply randomy move the focus from e.g. a text entry back to
the canvas. Instead introduce global handling of "Escape" and a
"primary_focus_widget" that is always set the the image window's
active canvas. When Escape is pressed, move the focus to that primary
focus widget, or beep if it is already there. Text widgets still get
the key events before that logic and can consume the Escape.
(cherry picked from commit 5880685472)
2013-04-09 15:48:12 +02:00
Téo Mazars
38d8312fde Bug 695418 - Unsharp mask crashes for large radii
Make sure we are working on the image range
(cherry picked from commit 35cc644765)
2013-04-08 18:57:08 +02:00
Милош Поповић
5f4449e956 Updated Serbian Translation 2013-04-08 17:02:24 +02:00
Dimitris Spingos
6d4fd657ff Updated Greek translation 2013-04-08 10:32:33 +03:00
Martin Srebotnjak
0c060b3296 Updated Slovenian translation 2013-04-04 21:04:03 +02:00
Pedro Gimeno Fortea
fb38e0a5f9 Bug 696958 - In-image preview in Transform tools is off by one screen pixel
Simplify the loops without any significant loss in performance, separating
the positive and negative X directions to treat each correctly. Fixes this
bug. (cherry-picked from commit faf2217811)
2013-04-02 17:32:15 +02:00
Pedro Gimeno Fortea
e12243e94e app: Two mostly cosmetic changes
Use a temporary that is less expensive to refer to. Don't loop more
than necessary when comparing pairs. (Cherry-picked from master's
commit c83e7790bf)
2013-04-02 17:12:21 +02:00
Téo Mazars
bc1aad3c23 Bug 683713 - Align visible layers does not work when layers ...
This is a complete rework of the plug-in, the behaviour remains
unchanged.

The implementation spreads all visible layers into one contiguous
array, then applies a simplified rework of the legacy algorithm.
(cherry picked from commit 65d34b7b27)
2013-03-30 16:06:04 +01:00
Petr Kubiznak
7392679be9 Bug 593167 - Support Windows in gimp_get_default_unit()
Function gimp_get_default_unit ported for Windows using standard GetLocaleInfo() function (from windows.h).
(cherry picked from commit 194ef70d74)
2013-03-30 10:22:07 -04:00
Michael Natterer
234e269bc7 tools: increase buffer size in gimptool from 1000 to 4096
(cherry picked from commit fd34fee7f5)
2013-03-27 22:58:53 +01:00
Michael Natterer
e3a524e435 Bug 622054 - Levels Tool gray point picker causes lockup
Bail out in gimp_levels_config_adjust_by_colors() if pure
back or white was picked as gray (gamma).
(cherry picked from commit c865d8f141)
2013-03-27 22:30:25 +01:00
Téo Mazars
333b05be02 Bug 656522 - Scaled Image Rounds Up To Nearest Pixel
Prevent gimp_coordinates_callback () to be called recursively
when x and y are chained.

One call puts all values in a consistent state, a recusive call can
cause side effects (calculations with rounded values)
(cherry picked from commit 24a2113170)
2013-03-27 01:05:29 +01:00
Michael Natterer
c1502c6ff7 Bug 692668 - Browse For Patterns
Increase the max size of the clipboard brush and pattern to 2048x2048
pixels. Still arbitrary but much better.
(cherry picked from commit 8bc4f008e7)
2013-03-26 23:58:22 +01:00
Michael Natterer
9594668e86 Bug 692939 - Zealous crop does nothing
Treat completely transparent pixels as equal, ignoring the hidden
color information.
(cherry picked from commit 720d8fa77a)
2013-03-26 23:40:46 +01:00
Daniel Mustieles
b4ab8184b9 Updated Spanish translation 2013-03-25 12:33:59 +01:00
Christian Kirbach
829113a348 Updated German translation 2013-03-25 11:03:32 +01:00
Piotr Drąg
fc7bdc3dfc Updated Polish translation 2013-03-24 20:46:51 +01:00
Michael Natterer
1e9ef3ac4c Bug 694585 - Export directly to remote ftp completes but reports failed
Fix handling of save errors in file-uri in two ways:

- don't try to check if saving to a directly mounted file succeeded,
  the mount (e.g. via FUSE) might allow writing, but not stat()ing.
  Instead, rely on the return value of gimp_file_save().

- for non-mounted files, provide a separate error message for the case
  where the temporary file contains nothing, which is IMO useless
  paranoia, but the check was probably added for a reason, so keep
  it around.
(cherry picked from commit 7f31929bee)
2013-03-24 18:47:34 +01:00
Daniel Winzen
37feaa106e Updated German translation 2013-03-24 14:27:05 +01:00
Christian Kirbach
68e893c099 Updated German translation 2013-03-24 10:30:13 +01:00
Téo Mazars
c9299082e7 Bug 641951 - Weird spacing with flat brushes
Take brush orientation into account when computing distances in the
coordinate space of the brush.
(cherry picked from commit afa57a507c)
2013-03-23 18:24:34 +01:00
Michael Natterer
2893b1199c Bug 695980 - Dereferencing type-punned pointer compile warning
Use local variables to avoid type-punned pointer warning.
2013-03-23 00:04:51 +01:00
Nils Philippsen
061764f8b2 pagecurl: clean up generated header file again
(cherry picked from commit 82c3ef5f41)
2013-03-22 14:07:50 +01:00
Nils Philippsen
1b53d7cc61 pagecurl: fix build order for generated headers
don't distribute these headers either
(cherry picked from commit 968b3ffb43)
2013-03-22 14:07:50 +01:00
Michael Natterer
6dc727767b po: some perl magic to fix the license string in all translations 2013-03-22 00:05:11 +01:00
Michael Natterer
19176e0166 app: remove <> around the gnu.org URL in GIMP_LICENSE
because GtkAboutDialog interprets it as email address.
(cherry picked from commit 19d417a745)
2013-03-22 00:03:57 +01:00
Daniel Sabo
8e9c103f8a Set PYTHONHOME in the OSX launcher script 2013-03-21 03:40:26 -07:00
Michael Natterer
15c5a9db32 Bug 696240 - Changing Gradient From Script-Fu Drop Down Causes GIMP to Crash
gimp_gradient_select_run_callback(): Don't free the color values array
twice.
(cherry picked from commit ed2849cd52)
2013-03-21 01:52:24 +01:00
Javier Silva Ortiz
de56ec5e6e Updated Spanish translation 2013-03-19 17:00:12 +01:00
Dimitris Spingos
f3f2fd0b18 Updated Greek translation 2013-03-19 12:06:15 +02:00
Piotr Drąg
0c7f5a1ebb Updated Polish translation 2013-03-18 23:14:46 +01:00
Martin Srebotnjak
2c14dea9a9 Updated Slovenian translation 2013-03-18 17:31:43 +01:00
Nils Philippsen
15b88af4f1 app: set error in case of error in ICC profile plug-in
The function plug_in_icc_profile_apply_rgb() didn't set the error object
when bailing out due to being called on a grayscale image, this could
lead to crashes in callers which just checked the return value, but not
whether or not an error had been set.
(cherry picked from commit 096c636b67)

Conflicts:
	app/plug-in/plug-in-icc-profile.c
2013-03-18 13:44:38 +01:00
Aurimas Černius
ab600d5692 Updated Lithuanian translation 2013-03-17 20:10:16 +02:00
Aurimas Černius
4ac92f61da Updated Lithuanian python translation 2013-03-17 19:32:35 +02:00
Aurimas Černius
9c4d86b7ab Updated Lithuanian UI translation 2013-03-17 19:31:37 +02:00
Balázs Úr
75304dcc22 Updated Hungarian translation 2013-03-16 23:01:33 +01:00
Michael Natterer
1bc8d4eb9d app: GimpBrushEditor: fix display of spacing for normal brushes
it was doing *all* the UI settings only for generated brushes.
(cherry picked from commit b941986bbb)
2013-03-14 22:54:34 +01:00
Michael Natterer
32e80d3263 app: fixed paned packing in GimpDeviceEditor
so the widgets don't become smaller than their requisition.
(cherry picked from commit d837a6d7df)
2013-03-13 22:08:07 +01:00
Michael Natterer
de8830ed4b Bug 397359 - Can't access color management parameters
Create all display filters with "color-config" and "color-managed"
parameters set, not only the automatically added color management
display filter. This way we don't only support removing and adding the
filter again, but also support potential other color management
modules.
(cherry picked from commit bc190a6bab)
2013-03-13 10:40:57 +01:00
Mukund Sivaraman
af88c4a6c9 file-gif-load: Fix incorrect out-of-input-bits condition (#695513)
GetCode() erroneously assumes that it has run out of input bits, because
it's off by 1 in its size calculation. At the end of the block, if the
End-of-Information code is exactly at the block boundary, it calculates
that it needs to read an extra bit, and tries to read beyond the end of
the block. It fails then, and the End-of-Information code is not
processed, and other warnings/errors are generated.
(cherry picked from commit f86655bb1f)
2013-03-12 13:14:51 +05:30
Dimitris Spingos
2508fa6e82 Updated Greek translation 2013-03-11 23:47:23 +02:00
Gabor Kelemen
3058788666 Use Hungarian Windows installer translation 2013-03-11 16:44:49 +01:00
Gabor Kelemen
386a91041b Add Hungarian Windows installer translation 2013-03-11 16:44:21 +01:00
Michael Natterer
ae5f847a11 Bug 695416 - undefined reference when building devel-docs/tools/widgets.c
Add -lm to the linker flags for the doc-shooter binary. Actually add a
whole snippet of makefile boilerplate that also deals with -mwindows,
all other makefiles seem to have it. I have no clue what it does.
2013-03-08 23:40:18 +01:00
Kevin Cozens
0ed3b482a4 Fixed MIME_TYPES. Postscript and PDF are compiled conditionally. Fixes #690882.
(cherry picked from commit d17622dce6)
2013-03-06 15:16:00 +01:00
Nils Philippsen
bc610c8fbd fix bogus overflow warning
tile-swap.c: In function ‘tile_swap_command’:
tile-swap.c:721:6: warning: assuming signed overflow does not occur when
assuming that (X + c) < X is always false [-Wstrict-overflow]
2013-03-06 12:16:43 +01:00
Michael Natterer
4e45dd3c4e app: fix expected single-window sessionrc so tests pass again
(cherry picked from commit e6d1234456)
2013-02-28 01:31:41 +01:00
Michael Natterer
26d40c10c6 Bug 694665 - SWM should distribute remaining space to main frame
Save the "right-docks-position" as negative value in pixels from the
right window border. Change the image window restoring code to
interpret negative values like that, but keep the meaning of positive
values for compatibility with existing sessionrc files.
(cherry picked from commit 9da0f489e1)
2013-02-27 23:50:18 +01:00
Michael Natterer
0d47f71d13 Bug 686544 - Opening new image window doesn't restore docks
Call gimp_dialog_factory_show_with_display() in gimp_display_new(), we
otherwise do this only when the ICONIFIED state of an image window
changes.
(cherry picked from commit 97af52c465)
2013-02-27 23:29:29 +01:00
Michael Natterer
62515d555d libgimp: make GIMP_PLUGIN_DEBUG messages always visible again
by adding "LibGimp" to G_MESSAGES_DEBUG so it doesn't get filtered
away by newer GLib.
(cherry picked from commit e4f24a539e)
2013-02-23 16:12:25 +01:00
Michael Natterer
cad5827b37 Bug 694477 - GimpSizeEntry input validation doesn't snap to min/max values
gimp_size_entry_eevl_input_callback(): CLAMP() the input value before
passing it back to GtkSpinButton, or it will revert too large/small
inputs back to the old value, instead of using the field's max/min
values.
(cherry picked from commit d1503ead83)
2013-02-22 21:23:33 +01:00
Mikael Magnusson
e48f61cf01 Makefile.am: Move tools down in SUBDIRS since it now depends on libgimpbase 2013-02-22 12:45:50 +01:00
Jehan
2b56b89376 Bug 694201 - gimptool: update to follow new user directory scheme. 2013-02-20 04:10:59 +09:00
Michael Natterer
55e4f529f9 tests: update expected sessionrc files for the show-button-bar change
(cherry picked from commit 8e19da16ab)
2013-02-18 01:33:48 +01:00
Michael Natterer
872c9c1680 Bug 694026 - "Button Bar" state not retained on brushes and dynamics editor
gimp_docked_iface_get_aux_info(): always save the button bar state,
not only if it is "false" because we cannot know the default value any
longer (the button bar visibility used to always default to "true", so
saving only a non-default "false" was fine).
(cherry picked from commit 6f5b4ad1f4)
2013-02-17 16:50:18 +01:00
Michael Natterer
76452a01aa Bug 693797 - Sample colorize fails when you choose current gradient as target
Fix my last commit and don't delete items in the foreach() callback,
because it's impossible to delete items in foreach(). Instead, collect
them in a list and remove them after foreach().
(cherry picked from commit c91fbd54ad)
2013-02-17 01:48:18 +01:00
Téo Mazars
d53d729134 Bug 683153 - Lighting effects - bump mapping: top two rows of pixels are...
Init and interpolate the topmost row to avoid the use of a zero array.
(cherry picked from commit b4b85cf853)
2013-02-16 21:41:14 +01:00
Michael Natterer
c110220793 Bug 693978 - GIMP crashes after changing text preset
Applying a preset overwrites all the tool option's properties, also
temporarily its name. This name change gets auto-synced with the
option's text proxy object which also inherits from GimpObject and has
a name. Make sure we don't queue that name change for being applied to
the text layer's text object, because that code only handles
properties of GimpText itself.
(cherry picked from commit 931ea102f8)
2013-02-16 20:43:49 +01:00
Michael Natterer
36cf018f8b Bug 693797 - Sample colorize fails when you choose current gradient as target
Based on a patch from Hartmut Kuhse, make sure we don't remove
custom-added items from GimpItemComboBoxes when repopulating it.
(cherry picked from commit 73cb32c36e)
2013-02-15 18:54:36 +01:00
Michael Natterer
1de589a791 Bug 676927 - Shortcuts with backspace not working if image is focused
Move local variable out of the switch() block, it was never initialized.
(cherry picked from commit 169d32532a)
2013-02-15 01:12:57 +01:00
Michael Natterer
517dd7d142 Make it harder to "save" to foo.png.gz or "export" to foo.xcf.gz
Remove plain .gz .bz2 .xz from the extensions the file-compressor
plug-in registers, and make sure is only ends up in "save_procs", so
at least "exporting" to foo.xcf.gz is not possible any longer. With
some effort, one can still "save" to foo.png.gz tho, but it's much
harder now.
(cherry picked from commit 086793d040)
2013-02-15 00:08:41 +01:00
Michael Natterer
835933efd7 Bug 680132 - Unable to 'Save As' over smb share
file_procedure_in_group(): consider "file-uri-save" to be in both the
SAVE and the EXPORT groups.

gimp_plug_in_manager_register_save_handler(): allow a procedure to be
in both "save_procs" and "export_procs".

The logic in the file save/export dialog checks uri prefixes and
extensions just fine, so nothing bad seems to happen from this change,
I hope...
(cherry picked from commit 1ba0cfbf38)
2013-02-13 23:52:06 +01:00
Téo Mazars
1ecf12950b Bug 674622 - Misalignment in scaling layers of different sizes
Again bad use of ROUND() on signed values...
(cherry picked from commit d1cd90c170)
2013-02-13 20:02:52 +01:00
Téo Mazars
de883b25a6 Bug 688068 - Rect selection: "Fixed: Aspect Ratio" doesn't work when...
Use current aspect when creating rectangle tool from a selection.
(cherry picked from commit f6e64b9ed9)
2013-02-13 00:39:15 +01:00
Téo Mazars
606532f5a8 Bug 684330 - Rectangle tool's "fixed size" option is off-by-one
ROUND() is consistent only on positive values, and bad rounding
creates an offset when negative values are involved. Introduce
SIGNED_ROUND() and use it in gimprectangletool.c. It should probably
be used in much more places.
(cherry picked from commit 4a5a6ef914)
2013-02-13 00:27:36 +01:00
Michael Natterer
6f1b26ddf7 Bug 692900 - Dragging left canvas border doesn't respect dock borders
Don't allow the single window's docks to shrink smaller than their
requisition, because that's horribly broken.
(cherry picked from commit a907741d8a)
2013-02-06 23:29:04 +01:00
Michael Natterer
258a61d70a libgimpwidgets: set a min size of 8 chars on GimpColorHexEntry
because GtkEntry's default min size is way too large for this use
case.
(cherry picked from commit 0bbc2b6231)
2013-02-06 23:25:04 +01:00
Michael Natterer
1e53ac0ef2 Post-release version bump to 2.8.5 2013-02-05 21:50:45 +01:00
Michael Natterer
88ecd59c34 Commit files regenerated by distcheck 2013-02-05 20:43:53 +01:00
Michael Natterer
8a9af4cdd7 configure: bump version to 2.8.4 2013-02-05 20:05:46 +01:00
Nils Philippsen
bd6c3468aa app: fix re-initializing fontconfig in gimp_fonts_reset()
Calling FcConfigSetCurrent() with NULL is just broken, it almost
immediately dereferences the passed pointer. Apparently this line
is executed seldom, otherwise we'd see way more crashes in this place.
Just use FcInitReinitialize() which exists for the very purpose of
reinitializing the fontconfig library.
(cherry picked from commit 1c00c2e4f8)
2013-02-05 14:03:57 +01:00
Timo Jyrinki
6852d01288 Bug 692646 - Finnish spelling fixes (by Ville Skyttä) 2013-01-29 10:35:21 +02:00
Alexandre Prokoudine
60c382ff70 Updated Russian translations 2013-01-28 09:48:35 +04:00
Massimo Valentini
de5267f185 Bug 639920: Gaussian blur can't work on specified selection
In presence of a selection extend the area processed
2013-01-27 17:04:02 +01:00
Ville Skyttä
549b3284d8 Bug 692625 - Use image/x-pcx for PCX in desktop entry
Desktop entry: Use image/x-pcx as PCX MIME type to sync with
shared-mime-info.
(cherry picked from commit 79be7de82e)
2013-01-27 14:29:00 +01:00
Clayton Walker
d2d8563e5e build: Update osx build files and README. 2013-01-25 22:26:30 -07:00
Sven Claussner
60f0feb65c Amend NEWS file
Add items for Brazilian Portuguese Windows installer and Language
Selector in Preferences dialog on OS X.
2013-01-25 23:06:13 +01:00
Michael Natterer
d99881ab41 NEWS: updates for 2.8.4 2013-01-25 21:16:20 +01:00
Clayton Walker
d824943b58 build: update OSX build files 2013-01-24 14:06:41 -07:00
Jernej Simončič
4b9af78336 Windows: #588015 - Make sure that GIMP is Terminal-Server-aware 2013-01-21 21:17:45 +01:00
Jehan
6ee8d39b8c Bug 690728: file-gif-save plug-in crops the actual image the user is working on.
Destructive behavior fixed by duplicating the image first, then deleting
the duplicate at the end.
2013-01-20 17:06:08 +09:00
Martin Srebotnjak
1122488403 Updated Slovenian translation 2013-01-19 21:45:38 +01:00
Massimo Valentini
f8c86702e9 Bug 670226 - pbm image non-interactive different from interactive
Properly set the "pbm" flag in non-interactive mode, also add a
missing "break" so non-interactive actually behaves like
non-interactive.
(cherry picked from commit d93d2e71c3)
2013-01-19 18:49:44 +01:00
Ludovic Rousseau
b31fcbc0f1 Bug 675510 - tw_func.h contains windows-specific types
Put the stuff in #ifdef G_OS_WIN32
(cherry picked from commit 5379a2377e)
2013-01-19 18:42:02 +01:00
Michael Natterer
6a39d21494 Bug 689523 - GIMP crashes (segfault) when loading a context with a font...
Make gimp_context_get|set_font_name() actually deal with
context->font_name, so the context can do its job of keeping the name
of an unavailable object around.
(cherry picked from commit c262fee244)
2013-01-18 01:05:01 +01:00
Michael Natterer
6dcd7c425e Bug 686929 - Newly created toolbox is too tall and too narrow
Set the dock window's geometry hints after the tool palette's style is
known, not after the toolbox' style is known, so we get the right tool
button dimensions for minimum size and size increments.
(cherry picked from commit 7e273bc6d0)
2013-01-17 19:39:47 +01:00
Mukund Sivaraman
c87b59b95f imagemap: Don't use fixed size buffer to print statusbar messages (#691386) 2013-01-16 17:24:24 +05:30
Michael Henning
adc8b21b0f plug-ins: fix memory leak in edge-neon
Found using clang's scan-build.
(cherry picked from commit e87971e850)
2013-01-11 21:05:51 -05:00
Michael Henning
5bd861330f app: fix memory leak in widgets/gimpgradientselect.c
Found using clang's scan-build.
(cherry picked from commit 42c74722e1f610579e53711706b8fbefc439a058)
2013-01-10 17:21:25 -05:00
Michael Henning
db4c8239f3 plug-ins: don't free a pointer allocated with g_newa in file-pdf-save
Found using clang's scan-build.
(cherry picked from commit c59e569e50)
2013-01-09 17:04:28 -05:00
Nils Philippsen
67753516b7 fix copy-paste error
(cherry picked from commit fc625feb40)
2013-01-09 15:38:56 +01:00
Michael Natterer
67cb43963e Bug 689087 - Drag-and-drop foo.jpg behaves different from 'gimp foo.jpg'...
Prefer text/uri-list over image/* to make dropping from file managers
always behave like opening the image directly.
(cherry picked from commit 454639f9d9)
2013-01-09 00:33:32 +01:00
Michael Henning
121308ee7a plug-ins: fix memory leak in flame/rect.c
Found using clang's scan-build.
2013-01-08 16:36:23 -05:00
Michael Natterer
8432800bdf app: don't map several windows language codes to one language string
So e.g. "english" is not always just "en", but "en_UK", "en_US" etc.
This should fix issues similar to bug #690535. Used
http://en.wikipedia.org/wiki/ISO_3166-1 as reference.
(cherry picked from commit 22a5c173ba)
2013-01-07 01:38:51 +01:00
Michael Henning
6b017f97d4 autogen.sh: also look for automake 1.13
(cherry picked from commit 495b41416b)
2013-01-06 22:06:37 +01:00
Daniel Mustieles
fd5676230c Updated Spanish translation 2012-12-31 12:20:03 +01:00
Rafael Ferreira
29ca295089 Updated Brazilian Portuguese Translation 2012-12-27 23:14:04 -02:00
Piotr Drąg
2226e10b5e Updated Polish translation 2012-12-27 21:01:49 +01:00
João S. O. Bueno
acebb4ad20 Addresses bug #690535 - fix brazilian portuguese on Windows 2012-12-21 18:14:21 -02:00
Daniel Mustieles
d90069f029 Updated Spanish translation 2012-12-16 13:10:37 +01:00
Michael Natterer
205c64d1b8 Bug 688746 - Select tool Alt+Shift and Alt+Ctrl dragging modifies...
Check for layer groups and locked layers in gimp_selection_tool_start_edit()
and show the usual warning instead of allowing the forbidden operation.
(cherry picked from commit 593ddb741f)
2012-12-14 23:04:31 +01:00
Michael Natterer
5818b9eac1 plug-ins: fix indexed palette handling in lcms.c
gimp_image_get/set_colormap() returns/takes the number of bytes in the
colormap, not the number of colors.
(cherry picked from commit b47107123a)
2012-12-14 21:15:23 +01:00
Jehan
a2772a721f Bug 689523: data bootstrap initial values in the text style editor at construction.
This was causing first a visual issue where the style editor UI would
show no default font/size/style at instanciation, but even a crash
when the user would change the font size or style (bold, italic...)
from this UI before selecting a font or writing a text.
2012-12-12 12:37:22 +09:00
Marco Ciampa
85fcef0c5c Updated italian translation. 2012-12-10 23:07:31 +01:00
Marco Ciampa
772c717216 Updated italian translation. 2012-12-10 22:49:44 +01:00
Liam Quin
e5cee5c56f Bug 689712 - Change default units of rotate colors plugin (rcm) from...
Degrees makes much more sense as default unit than radians.
(cherry picked from commit a268b7e03f)
2012-12-06 00:42:03 +01:00
Mukund Sivaraman
b717e155d9 file-tga: Simplify has_alpha expression 2012-12-05 00:45:36 +05:30
Mukund Sivaraman
050fcb4b37 file-tga: Handle 16-bit palettes with transparency (#687802)
Primarily, this fixes a buffer overflow in the colormap buffer.

* We promote such images to GIMP_RGBA_IMAGE now.
* The alpha handling for the colormap to RGBA conversion has been
  fixed.
* Inverted transparency in upsampling has been fixed.
2012-12-05 00:39:51 +05:30
Mukund Sivaraman
0d35348718 file-tiff-load: Fix loading of TIFFs containing old-style JPEG images (#688761)
This commit also moves the updated section of code, so that based on
worst_case, the image type and layer type are updated.
2012-12-04 13:38:11 +05:30
Jehan
c6b81f2f4e Bug 685557 - fix closing and saving a new image.
Current implementation had 2 issues, fixed by this commit:
1/ after the file save dialog is closed, the image would not close.
2/ if you switched the visible tab before saving the new image, it
would save and close the visible tab, instead of the expected one.
2012-11-28 00:01:25 +09:00
Marek Černocký
95e400d597 Updated Czech translation 2012-11-26 10:59:09 +01:00
Marek Černocký
4e428d923b Updated Czech translation 2012-11-25 20:06:50 +01:00
Michael Natterer
34f70ad192 libgimpwidgets: remove all item width logic from GimpPageSelector
It seems GtkIconView got fixed, and now the pile of code I added to
make the layout nice has exactly the opposite effect. Get rid of the
pile.
(cherry picked from commit f1c785fb37)
2012-11-23 23:31:45 +01:00
Michael Natterer
67a1f9e40c Bug 688715 - Unconfigured eraser should be set to eraser tool
I don't know what I tested before, but it didn't work. This patch does
the magic in two places, one of which I missed.
(cherry picked from commit 4e340b613b)
2012-11-23 01:23:25 +01:00
Michael Natterer
54ae57f290 Bug 688715 - Unconfigured eraser should be set to eraser tool
If a device has no saved settings, and it is a GDK_SOURCE_ERASER, set
it to the eraser tool.
(cherry picked from commit 512fbcbbb2)
2012-11-22 23:45:52 +01:00
Michael Natterer
6d10655c94 app: disable maximize_state_in_aux_data because it needs a WM 2012-11-19 23:24:40 +01:00
Michael Natterer
43a1daa5e1 Bug 688305 - drag and drop for guides broken if 'gtk-enable-tooltips = 0' is set
Fix GimpSpinScale too: add the needed events ourselves, and handle
motion hints (which the parent classes add) in motion().
(cherry picked from commit 85a099f988)
2012-11-18 20:05:48 +01:00
Massimo Valentini
9c36859511 Bug 688305: drag and drop for guides broken 2012-11-15 19:02:43 +01:00
Nils Philippsen
d0bb5aea25 app: remove check which hides conditions that should not happen
Remove a GTK_IS_WINDOW() check where this would hide parent widgets
being passed in that don't have a gtk toplevel. This should not happen
and if it does we want to know about it.
(cherry picked from commit f6f8079013)
2012-11-14 17:01:04 +01:00
Nils Philippsen
0e7d59af50 app: fix marking file dialogs as transient if opened from context menu
GimpDisplayShell isn't a GtkWindow (anymore), therefore use
gtk_widget_get_toplevel() to find the actual toplevel window.
(cherry picked from commit 1a4087bd5f)
2012-11-14 17:01:04 +01:00
Nils Philippsen
7fa86da96d app: limit physical memory size by GIMP_MAX_MEMSIZE as well
(cherry picked from commit c4365d4c14)

Conflicts:
	app/config/gimpbaseconfig.c
2012-11-13 16:15:49 +01:00
Michael Natterer
7bbd29b182 app: limit the pyhsical memory size by G_MAXSIZE
because one process can't handle more.
(cherry picked from commit 2b714fcb1a)
2012-11-13 16:12:26 +01:00
Michael Natterer
a766aa9730 Bug 677776 - filter popup windows get hidden behind main image window
Apply modified patch from Simone Karin Lehmann which makes sure
script-fu gets properly hidden after the dialog is done.
(cherry picked from commit 83de53ee4d)
2012-11-13 00:49:52 +01:00
Michael Natterer
3291348ac6 Bug 677776 - filter popup windows get hidden behind main image window
Simone found a better way than setting plug-in windows to UTILITY: simply
call the proper API, [NSApp arrangeInFront: nil].
(cherry picked from commit ab801970ca)
2012-11-13 00:48:09 +01:00
Christian Kirbach
606dad32b1 Update German translation 2012-11-12 23:57:33 +01:00
Michael Natterer
f63e5671ae Bug 676940 - Group children prevent droping layer at bottom of stack
...and don't forget to return the drop_path from
gimp_container_tree_view_drop_status().
(cherry picked from commit 3ef2baea67)
2012-11-12 01:31:28 +01:00
Michael Natterer
982d08492f Bug 676940 - Group children prevent droping layer at bottom of stack
Treat dropping on the empty space at the bottom like dropping after
the last toplevel item.
(cherry picked from commit 05e12b88bc)
2012-11-12 01:26:39 +01:00
Michael Natterer
5db271cc52 Bug 680621 - View menu options are discarded after closing an image
Sync GimpDisplayShell's properties with the default values when it's
emptied and turns into the empty display, so the default values used
when filling it with an image are displayed while it's empty.
(cherry picked from commit 54cf6c6e9f)
2012-11-12 01:00:04 +01:00
Michael Natterer
d29f273566 Bug 677776 - filter popup windows get hidden behind main image window
On OSX, set all transient plug-in windows to UTILITY, so they appear
on top of the image window, which is a bad hack. See the comment in
gimp_window_set_transient_for_display().
(cherry picked from commit 018fc32727)
2012-11-11 21:21:35 +01:00
Michael Natterer
908a71c4cf Bug 684003 - When using the main window in secondary monitor...
If gimp_window_set_transient_for() fails (due to platform
restrictions), at least set GTK_WIN_POS_CENTER on the window, so it
gets centered on the monitor where the mouse is. This also removes the
need for OSX specific centering code in GimpDialog (bug 677776).
(cherry picked from commit 9e5ed1e70a)
2012-11-11 21:13:54 +01:00
Piotr Drąg
5860b2e844 Updated Polish translation 2012-11-10 00:14:58 +01:00
Michael Natterer
acc610ec8a app: remove redundant code from the last commit
(cherry picked from commit f71afd245f)
2012-11-10 00:09:37 +01:00
Peter Mráz
4bbdbb102f Updated slovak translation 2012-11-09 23:40:37 +01:00
Michael Natterer
50c1e2d872 Bug 683011 - Text tool discards text attributes in the on-canvas dialog...
When font, size or color were changed, set the text buffer's current
insert_tags just as we already do for the bold, italic etc. toggle
buttons.  Changed gimp_text_style_editor_list_tags() to also return
the tags for font, size or color.
(cherry picked from commit abd2e78bdf)
2012-11-09 23:29:59 +01:00
Michael Natterer
2a77d536aa app: make Tab, Shift+Tab and Escape move the focus back to text editing
when it was in the floating text style editor. While this doesn't fix
anything by itself, it enables fixing text style setting to behave
reasonably when there is no selection.
(cherry picked from commit 76b05c2afc)
2012-11-09 22:15:25 +01:00
Daniel Mustieles
e66252cc8a Updated Spanish translation 2012-11-08 12:38:55 +01:00
Michael Natterer
2873262fcc Bug 687392 - Memory corruption vulnerability when reading XWD files
Applied and enhanced patch from andres which makes file-xwd detect
this kind of file corruption and abort loading with an error message.
(cherry picked from commit 0b35f6a082)
2012-11-08 00:19:17 +01:00
Michael Natterer
f3de4b4a24 Bug 677776 - filter popup windows get hidden behind main image window
On OSX, call [NSApp activateIgnoringOtherApps] when a plug-in dialog
is shown, so the plug-in process becomes the active app, and the
dialog gets focussed.

In order to avoid doing this in GimpDialog (which is also used in
the core), do it in gimp_ui_init() which all interactive plug-ins
call, and when gimp_temp_proc_run() is called interactively, to
catch repeated activation of an already running plug-in.

Also, set GimpDialog's initial position to GTK_WIN_POS_CENTER,
or they will pop up in the top left corner.

Inspired by patches from Simone Karin Lehmann and Daniel Sabo.
(cherry picked from commit 0b56aa0d13)
2012-11-07 23:54:30 +01:00
Michael Natterer
901f396a5e Bug 687851 - Gimp crashes on Colors > Desaturate
Don't install the frame rate limiting draw timeout when resuming a
draw tool that is not active, so accidential timeout installation from
whatever tool dispose code can't happen.
(cherry picked from commit 6a33951aa6)
2012-11-07 23:24:00 +01:00
Michael Natterer
28d42d3dd7 Bug 686521 - Zoom Tool Displays Wrong Cursor When Zooming In/Out
When updating the tool cursor on BUTTON_PRESS, pass a state *without*
the newly pressed button's mask to gimp_display_shell_update_cursor(),
or it will simply never call the cursor update function. Tool cursors
don't normally change when a mouse button is down.
(cherry picked from commit 5de48ef8b5)
2012-11-06 22:49:00 +01:00
Michael Natterer
cfacd4f5a6 Bug 687375 - Text tool: unnecessarily insists on having a layer before working
There is no reason to disallow the text tool from working on a
previously empty image, so allow it.
(cherry picked from commit eba022f01b)
2012-11-06 22:23:36 +01:00
Michael Natterer
9d6e8e23df Bug 687673 - The image has been exported to '(null)' when export...
Show the imported URI if the exported URI is NULL, they are equivalent
for this dialog.
(cherry picked from commit 55f025e469)
2012-11-06 22:15:21 +01:00
Marco Ciampa
0029694f3c Small fix in italian translation. 2012-11-06 10:39:11 +01:00
Marco Ciampa
7e06c48a94 Small fix in italian translation. 2012-11-06 10:28:56 +01:00
Rafael Ferreira
9cf76553bd Updated Brazilian Portuguese Translation 2012-11-05 12:09:10 -02:00
Michael Natterer
b447b8e85f Bug 676667 - Splash image display in splash screen is delayed
Throw away the code that sets the splash image as window background
and always use GtkImage. Due to internal GDK changes since this code
was written, this is now the way to avoid any delay when showing the
image, for whatever reason.
(cherry picked from commit 568aa7a5b0)
2012-11-05 01:49:06 +01:00
Michael Natterer
4f2d0c9ed1 Bug 686850 - Help system: GIMP crashes and closes without saving changes
When gimp_plug_in_close()ing a plug-in (such as when cancel is
clicked), make sure we don't leak the proc_frames of all temporary
procedures the plug-in is currently running. By properly disposing the
GimpPlugInProcFrame, the progress window and its cancel button in
above bug get destroed on first click, and the user has no chance of
trying to kill an already finalized plug-in again.
(cherry picked from commit eac70cc513)
2012-11-05 01:17:01 +01:00
Michael Natterer
3e72a9215e Bug 687561 - Edit/Modules crashes immediately
Don't pass GTK_STOCK_CLOSE as response_id to
gtk_dialog_set_alternative_button_order(), it's GTK_RESPONSE_CLOSE.
(cherry picked from commit d4f85b24b1)
2012-11-04 15:48:41 +01:00
Marco Ciampa
84461fd759 Small fix in italian translation. 2012-11-03 00:12:36 +01:00
Marco Ciampa
8c0fd99d89 Small typo fixes in italian translation. 2012-11-02 20:30:42 +01:00
Michael Natterer
855246391f Bug 677733 - Export image: duplicate list item for TIFF export
Don't mark a procedure as file procedure just because a mime-type or
thumbnail loader is registered for it. Only registering as load or
save handler should set the file_proc flag. This prevents plug-ins
from doing wrong things and would also fix the behavior fixed in the
commits below.
(cherry picked from commit dcaba4f1d1)
2012-11-01 19:26:37 +01:00
Michael Natterer
fde801cb89 Bug 677733 - Export image: duplicate list item for TIFF export
Don't register a mime-type for the alternative file-tiff-save2
procedure, it's not supposed to be registered as file procedure, and
only usable from scripts anyway.
(cherry picked from commit 9615f233ba)
2012-11-01 19:23:10 +01:00
Michael Natterer
551679f7c4 Bug 677733 - Export image: duplicate list item for TIFF export
Don't register a second file procedure for extension-less exporting as
XMC, this approach is totally bogus. Fixes the duplicate XMC entry in
File->Export.
(cherry picked from commit f3f72b720c)
2012-11-01 19:20:00 +01:00
Marco Ciampa
edf5af1073 Updated italian translation. 2012-10-31 22:38:18 +01:00
Michael Natterer
6ed49d3997 Bug 687256 - Please explain the terms wheel, curve, axis
Add translator comments to GimpDeviceInfoEditor.
(cherry picked from commit 90608d3a22)
2012-10-31 21:15:59 +01:00
Michael Natterer
a8f96a5e3a app: add a translator comment for _("%s Message")
(cherry picked from commit 9efda84818)
2012-10-31 16:08:43 +01:00
Massimo Valentini
7831da547a Bug 676413: Text to Path cuts off without covering the whole layer
Use an unbounded cairo_recording_surface to extract a
cairo_path_t from a pango_layout.
2012-10-30 18:07:06 +01:00
Marco Ciampa
edb7125227 Updated italian translation. 2012-10-29 22:54:37 +01:00
Marco Ciampa
d9e83effd4 Update italian translation. 2012-10-29 01:23:10 +01:00
Marco Ciampa
88a13a874a Updated italian translation. 2012-10-29 01:05:23 +01:00
Michael Natterer
4187c415fb Bug 687070 - Modifier+Space doesn't work as shortcut
Don't allow to assign Modifier+Space shortcuts, there is so much code
dealing with Space in canvas event handling, we can't have it invoke
arbitrary actions at the same time.
(cherry picked from commit 99dfc5930f)
2012-10-28 23:36:31 +01:00
Dimitris Spingos
c465603540 Updated Greek translation 2012-10-26 18:11:17 +03:00
Marco Ciampa
9821dea3ca Small fix in italian translation. 2012-10-25 11:02:08 +02:00
Michael Natterer
19b9ae79da Bug 685445 - color-to-alpha plugin crashes (use-after-free)
gimp_tile_put(): make sure we don't free libgimp's tile data twice in
the non-SHM case. I could never reproduce the bug, but I'm pretty sure
this fixes it. The change in gimpprotocol.c is just cleanup.
(cherry picked from commit 0a5059da51)
2012-10-22 19:05:16 +02:00
Massimo Valentini
b1a6ac7060 Bug 686379: In the JPEG save dialog, checking/unchecking XMP...
saving, don't update JPEG size
2012-10-22 18:26:13 +02:00
Massimo Valentini
66b4aa2d34 Bug 684483 - Text tool: crash after double clicking text
It seems that when the undo action reverts a text -> mark-up change
(or v.v.)  the notifications are inverted, first is emitted the new
value notification and successively the property becoming NULL. The
result is that gimp_text_buffer_set_{text,mark-up} is called last with
NULL, unsetting both text_buffer text and mark-up.

The right way to do it is to always prefer "markup" over "text" if
markup is present, no matter if the notification was for "markup" or
"text".
(cherry picked from commit 9b58e2ba0c)
2012-10-22 15:42:43 +02:00
Michael Natterer
e41e5ab643 Bug 686602 - missing EXIF_CFLAGS when building plug-ins/file-psd
Apply patch from John Hein which adds EXIF_CFLAGS to INCLUDES.
(cherry picked from commit 890ae48330)
2012-10-22 15:02:36 +02:00
Michael Henning
f45349e74c app: Save the maximized state of the main window in the sessionrc file.
(cherry picked from commit 89760cf044)

This is technically a new feature because it adds new stuff to
sessionrc, but on the other hand not handling maximized state in
sessionrc is worse, therefore merged to 2.8.
2012-10-22 00:23:15 +02:00
Michael Natterer
bc2b0d117d Bug 686523 - Text tool: text editor not shown on empty text box
gimp_text_tool_options_notify(): always show the editor, also when no
text object exists yet. There was no reason for this limitation.
(cherry picked from commit 2b3e5ebd78)
2012-10-21 23:32:17 +02:00
Jernej Simončič
65aa832148 Installer: add Spanish translation 2012-10-19 14:17:46 +02:00
Jernej Simončič
55d4af3d6b Installer: fix non-ASCII characters in ReadyMemo associations text 2012-10-19 14:01:56 +02:00
Jernej Simončič
31e2074ce3 Installer: add Brazillian Portuguese and Russian translations to install script 2012-10-19 13:51:30 +02:00
Jernej Simončič
f26e5cffe7 Installer: fix permissions 2012-10-19 13:51:06 +02:00
Jernej Simončič
bbe007c8d7 Installer: add Russian translation 2012-10-19 13:50:34 +02:00
Michael Natterer
ee38c196e2 plug-ins: fix #ifdefs to fix build error and warnings in screenshot.c
(cherry picked from commit bc87bf5fe9)
2012-10-17 11:56:19 +02:00
Michael Natterer
8689c3108f authors.xml: add Simone Karin Lehmann
(cherry picked from commit 1920c2bcab)
2012-10-16 13:29:11 +02:00
Martin Srebotnjak
d895ee7972 Updated Slovenian translation 2012-10-16 08:39:57 +02:00
João S. O. Bueno
527d24bde3 Adding Brazilian Portuguese translation for GIMP-Windows install 2012-10-15 10:00:10 -03:00
Michael Natterer
384851f5ea Bug 686103 - Incorrect gimpfu documentation
Add missing "None" default values to PF_IMAGE and PF_DRAWABLE
parameters in the procedure registration example.
(cherry picked from commit e8eaeb606f)
2012-10-14 21:32:49 +02:00
Simone Karin Lehmann
f3c1186e5f Bug 683617 - Can't take screenshots (Mac OS)
Use the standard Mac OS X screenshot utulity, it supports
everything: delay, capture decoration, capture region, even
the mouse pointer.
(cherry picked from commit 85445c88c3)
2012-10-14 17:10:22 +02:00
Michael Natterer
0ed086d511 Bug 682585 - Edit/Modules: pressing any key crashes gimp
Don't crash if module-dialog.c: dialog_select_callback() is called
without any selected list item.
(cherry picked from commit 20279d6fd6)
2012-10-14 15:31:30 +02:00
Massimo Valentini
f9387909f3 Bug 592628: Scale Image adds asymmetric artifacts to image edges
second problem described, regarding the perceived shift.

NPOT sized symmetric images downscaled by a ratio greater
than 2 (src:dst > 2:1), still lose the symmetry. It is a
consequence of the intermediate halving step which is top
left aligned.
2012-10-13 15:02:05 +02:00
Massimo Valentini
e09233f080 Bug 592628: Scale Image adds asymmetric artifacts to image edges
first problem described.
2012-10-13 15:02:04 +02:00
Massimo Valentini
9d74224731 Bug 433436: transformation tools cause offsets 2012-10-13 15:02:04 +02:00
Massimo Valentini
e8a02362cd app: correct pixel-surround when sampling outside of a drawable
in correspondence of tiles crossings
2012-10-13 15:02:04 +02:00
Massimo Valentini
7172911bec app: properly sample lanczos kernel luts 2012-10-13 15:02:04 +02:00
Massimo Valentini
defef370c4 app: round to the nearest in gdouble -> guchar assignments 2012-10-13 15:02:04 +02:00
Massimo Valentini
023850bf0d app: remove unused code
levelx and levely are 0 initialized and possibly increased
never become negative.
2012-10-13 15:02:04 +02:00
Daniel Mustieles
75f470a56a Updated Spanish translation 2012-10-13 12:30:18 +02:00
Michael Natterer
634ae4a2cf Bug 686025 - Closing a tab closes wrong tab
Replace /* FIXME: switch tabs */ with an actual call to
gimp_image_window_set_active_shell(). WTF...
(cherry picked from commit 56c6935a0c)
2012-10-13 00:24:04 +02:00
Michael Natterer
e000f106bf Bug 685797 - all python plug-ins are broken after 3b55877a
Remove the privately added GimpItemComboBox class instead, it confuses
the hell out of python. Instead, use g_object_set,get_data() to manage
the newly needed members, and code duplication.
(cherry picked from commit d6cf29e8c4)
2012-10-10 23:13:12 +02:00
Piotr Drąg
d503425893 Updated Polish translation 2012-10-09 15:48:51 +02:00
Michael Natterer
2cd165a8b8 Bug 682742 - Module manager: turning off modules has no effect
Use gimp_config_writer_string() instead of gimp_config_writer_printf()
to serialize module-load-inhibit so backslashes and other stuff gets
properly escaped.
(cherry picked from commit 6c41f58fea)
2012-10-09 01:28:04 +02:00
Clayton Walker
4b46d7eb6d Bug 685560 - Add iso-codes to osx moduleset
Language selector on osx doesn't show up because gimp was compiled without
iso-codes installed.
2012-10-08 16:59:43 -06:00
Michael Natterer
220af9ceec libgimpbase: on OSX move gimpdir to "~/Library/Application Support"
not just ~/Library. This clearly needs some manual migration
instructions for the old wrong location.
(cherry picked from commit 04fa9e8237)
2012-10-08 23:23:02 +02:00
Michael Natterer
3b55877aca Bug 378334 - Plugins with image drop-list crash when image is closed
Let image and item combo boxes connect to their own "changed" signal
first, and if the chosen image/item doesn't exist any longer,
reinitialize the combo box and select the first item instead.

Also fixes the type macros in gimpitemcombobox.h which were lacking a
')' and introduces an internal GimpItemComboBox class to hold the
common functionality.
(cherry picked from commit 4aaaa1a7fa)
2012-10-08 22:06:12 +02:00
Michael Natterer
fef53f6064 libgimpwidgets: make GimpIntStore behave a bit nicer (don't warn)
when used in "unexpected" ways. Where "unexpected" is as simple as
removing an item from the store.
(cherry picked from commit 85ea7771d5)
2012-10-08 21:35:30 +02:00
Mukund Sivaraman
2ba0519456 file-bmp: Don't use alpha channel with BI_RGB compression type
Don't use alpha channel with BI_RGB compression type in
BITMAPINFOHEADER images (bug #573090, bug #674398).
2012-10-08 09:15:47 +05:30
Mukund Sivaraman
49debcafdc file-bmp: Reject compression type BI_ALPHABITFIELDS as unsupported
These were erroneously parsed before. Now we reject them.  It is
trivial to implement support for them, but we can't test it unless
someone comes up with a sample BMP file.  They don't seem to be
available in the wild.
2012-10-08 09:15:45 +05:30
Michael Natterer
cb8cd73f33 Bug 635303 - Can't attach a dialog at the bottom of a minimized toolbox
Ensure a minimum size of the drop area and make sure it stays visible
at the bottom of a minimized toolbox. This wastes a few pixels at the
bottom of a toolbox that contains no dockables.
(cherry picked from commit 74bc070147)
2012-10-07 19:51:44 +02:00
Michael Natterer
ec9ed96fd7 HACKING: patches: recommend git-format-patch, not a repo to fetch from
Also update the developer mailing list address.
(cherry picked from commit d3506a13fc)
2012-10-07 15:20:59 +02:00
Michael Natterer
72ae6656e7 app: use g_get_monotonic_time() also for limiting display flushing
(cherry picked from commit a9353cd3a2)
2012-10-06 18:03:49 +02:00
Michael Natterer
cd6fa1d9c9 Bug 663582 - Brush outline is too slow
Even less drawing: let the timeout running if it triggers within the
50ms since the last drawing, so it's reduced to its actual purpose of
updating to the actual cursor position after framerate-limiter skipped
drawing.
(cherry picked from commit 52d933a1cc)
2012-10-06 16:42:14 +02:00
Michael Natterer
55792c2f30 Bug 663582 - Brush outline is too slow
One more try: merge the spirit of Alexia's patch, but don't disable
the timeout, only make sure the minimum fps is also applied when
drawing is triggered by gimp_draw_tool_resume().
(cherry picked from commit 4218d9342f)
2012-10-06 00:29:59 +02:00
Michael Natterer
8d6634c8eb Bug 663582 - Brush outline is too slow
Don't confuse microseconds with milliseconds: the 20 fps interval
is 50000, not 50, sigh.
(cherry picked from commit db5c952c4e)
2012-10-06 00:05:54 +02:00
Michael Natterer
bb1197ed63 Bug 684429 - Unable to edit text: error message states "problems..."
This fix is entirely sick, so is our method of serializing units,
which we write out as (unit foo bar) instead of (unit "foo bar"). The
assumption that caused this shit was that a unit's "identifier" is
really an identifier in the C-ish sense, when in fact it's just a
random user entered string.

Here, we try to parse at least the default units shipped with gimp,
and we add code to parse (unit "foo bar") in order to be compatible
with future correct unit serializing.
(cherry picked from commit 0f7ac38682)
2012-10-04 23:58:40 +02:00
Michael Natterer
d4cfda87ff libgimpbase: improve warning when a string can't be converted to a GimpUnit
(cherry picked from commit 38a8e67e03)
2012-10-04 23:58:29 +02:00
Michael Natterer
b03591e405 Bug 663582 - Brush outline is too slow
Keep around the last drawing time in GimpDrawTool and make sure we
draw at least with a frame rate of around 20 fps, which feels
reasonably non-laggy.
(cherry picked from commit fd4e220c28)
2012-10-04 20:44:58 +02:00
Michael Natterer
7deac97a9a Bug 684945 - Export can incorrectly default to changing format...
Fix default export extension to be as specified:

1. last export of this image
2. imported extension
3. last export of any image
4. png

2 and 3 were reversed in the code.
(cherry picked from commit aa6151d1af)
2012-10-02 23:09:57 +02:00
Michael Natterer
5f04bf2684 Bug 684923 - Fix script-fu build on OpenBSD/NetBSD
Apply patch from Brad Smith which defines AI_ADDRCONFIG
if it doesn't exist.
(cherry picked from commit a2c8759fbf)
2012-10-02 22:13:27 +02:00
Michael Natterer
018a02d8da Bug 685086 - hangs while opening damaged XCF file
Fix crash for this specific XCF corruption (XCF damaged in the middle
of a parasite header). Instead, abort loading immediately.
(cherry picked from commit 191c2c15ef)
2012-10-02 22:04:32 +02:00
Rūdolfs Mazurs
f7990128b0 Updated Latvian translation 2012-09-29 13:52:27 +03:00
Rūdolfs Mazurs
a6c404d231 Updated Latvian translation 2012-09-29 13:49:11 +03:00
Michael Natterer
027c744227 Bug 684698 - Preferences-Folders: only 15 folder items accepted
Raise "max_paths" from 16 to 256 in all calls to gimp_path_parse().
(cherry picked from commit 2a30a2bb74)
2012-09-26 23:31:48 +02:00
Timo Jyrinki
0bd7875e5b Small Finnish translation fix 2012-09-26 11:54:46 +03:00
Michael Natterer
5745a4fae2 Bug 684785 - typo in log message
Apply patch from Okano Takayoshi that fixes the typo.
2012-09-25 22:03:35 +02:00
Andika Triwidada
4942105604 Updated Indonesian translation 2012-09-24 19:24:26 +07:00
Piotr Drąg
192ddf18e7 Added Polish translation of the installer 2012-09-23 17:00:01 +02:00
Ville Pätsi
c1ed52275d Support file dates set to before the start of time
(cherry picked from commit 9fe4e5fad9)
2012-09-21 19:55:57 +02:00
Mukund Sivaraman
b38d44220f file-bmp: Fix order of data in RGBA_8888 images
See #678250, #678252, etc. for example bug reports.

This fix should be sufficient in fixing BMP output, but it looks
like some apps like Firefox have broken BMP loaders which do not
care for the masks. We would have to change the masks for them.
2012-09-21 20:29:03 +05:30
Mukund Sivaraman
2af0e14370 file-bmp: All 16 and 32-bpp files need the masks to be written
See #678250, #678252, etc. for example bug reports.
2012-09-21 20:29:01 +05:30
Michael Natterer
0d879c2aae app: plug string leak in gimp_image_format_display_uri()
(cherry picked from commit 7597b83bd8)
2012-09-21 10:35:22 +02:00
Seong-ho Cho
c3eda35f10 Updated Korean translation 2012-09-15 20:07:56 +09:00
Michael Natterer
61aa1ea510 Bug 683791 - Free select tool constraint key
Fix condition that constrains angles to 15°, its bracketing was wrong.
(cherry picked from commit 9b927ba0cd)
2012-09-14 11:06:21 +02:00
Michael Natterer
991d42c85e Bug 683553 - Spinscale scrollvalues in Brushsize are much too smal
Set the step/page increments to 1.0/10.0 for brush size and to 0.1/1.0
for aspect ratio. the previous values were way too small.
(cherry picked from commit 2c3a046d83)
2012-09-11 20:31:19 +02:00
Martin Srebotnjak
844fc444b5 Updated Slovenian translation 2012-09-10 15:55:38 +02:00
Taijuin
c56cf23c82 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-09-10 19:13:56 +08:00
Marco Ciampa
f628dcf49f Updated italian translation. 2012-09-10 12:22:19 +02:00
Michael Natterer
5ab0215794 app: add -framework Carbon to LDFLAGS on OSX
I have no clue how anyone was able to build since this
got broken.
(cherry picked from commit 205645b163)
2012-09-09 20:12:08 +02:00
Seong-ho Cho
bae709d0a9 Updated Korean translation 2012-09-09 17:59:41 +09:00
Michael Natterer
603ae6334b Bug 655684 - After saving an image with geotags you cannot...
Apply patch from Hartmut Kuhse which fixes encoding of
XMP_TYPE_GPS_COORDINATE.
(cherry picked from commit aecef113ab)
2012-09-09 00:56:55 +02:00
Michael Natterer
d4ebc9562d app: add a workaround to make GimpModuleDB's "verbose" flag work
so we get module output from gimp --verbose.
(cherry picked from commit 4db6a970de)
2012-09-08 12:50:41 +02:00
Michael Natterer
f3a4200e72 Bug 683462 - cropping with rectangular select tool leaves misaligned...
Reset the tool on image changes again, but not if only the active
drawable changes, so keep bug #678890 closed:

Introduce new dirty flag GIMP_DIRTY_ACTIVE_DRAWABLE and set it on all
tools' dirty_mask except for rect select. Check the new flag when
reseting the active tool because of a drawable change.
(cherry picked from commit e546f2b43b)
2012-09-07 00:00:24 +02:00
Nils Philippsen
f0dae90f23 file-cel: make generating thumbnails more robust
Ran non-interactively, file-cel could crash e.g. if loading an image to
generate a thumbnail, because there is no way to specify a palette file
in that case.
(cherry picked from commit 96ce2c936d)
2012-09-06 12:52:13 +02:00
Michael Natterer
029d9ab9a5 Revert "Bug 683381 - Inverted alpha behavior of 16-bit Targa files"
This reverts commit e2915eba7c.
2012-09-05 23:34:59 +02:00
Mike Gran
e2915eba7c Bug 683381 - Inverted alpha behavior of 16-bit Targa files
file-tga.c (upsample): swap alpha behavior
(cherry picked from commit dc00fb57a0)
2012-09-05 22:52:39 +02:00
Bruce Cowan
06342f26c9 Updated British English translation 2012-09-05 12:51:09 +01:00
Michael Natterer
e2059dde74 Bug 683050 - Copying a layer group to a new xcf results in portions...
Use gimp_item_translate() not gimp_item_set_offset() to position
dropped layers, because the latter doesn't affect child layers.
(cherry picked from commit 9ab3abc98b)
2012-09-05 13:05:45 +02:00
Michael Natterer
0e2bce2b82 app: make handling of coordinates more robust against broken input drivers
Initialize the axes[] array with zeros and change pressure curve
mapping to not try to "interpolate" shit like NaN and crash.
(cherry picked from commit c7b9728cc8)
2012-09-05 11:37:47 +02:00
taijuin
20449b1176 Updated Traditional Chinese translation(Hong Kong and Taiwan) 2012-09-05 14:03:58 +08:00
Daniel Mustieles
2fb04eaeea Updated Spanish translation 2012-09-03 12:54:15 +02:00
Michael Natterer
b8cd7348cc Bug 678452 - Libgimp drawable combo boxes are not aware of layer groups
Add all a tree's items to the combo boxes. Try to visualize the tree
structure by prepending '-'s, but that could probably need some
suggestions for improvement.
(cherry picked from commit b955205676)
2012-09-03 02:24:28 +02:00
Piotr Drąg
2b5edbabd2 Updated Polish translation 2012-09-03 01:52:20 +02:00
Michael Natterer
b142ec6a35 Bug 681699 - Inapplicable files are listed with 'All images' filter...
In order the fix the obvious confusion, add another file filter which
contains all the types that are savable with the dialog, name it
either "All XCF images" or "All export images", and make it the
default filter.
(cherry picked from commit 14f6d5ee44)
2012-09-02 23:25:43 +02:00
Michael Natterer
4364989869 build: more Info.plist adjustments 2012-08-31 18:52:32 +02:00
Michael Natterer
ebe673ea49 build: fix more Info.plist keys to be as documented 2012-08-31 09:08:05 +02:00
Michael Natterer
625431db60 build: CFBundleIdentifier should be org.gimp.gimp not org.gimp.GIMP 2012-08-30 09:48:02 +02:00
Clayton Walker
06439dea64 build: update OSX build files.
Include fonts.conf with sane defaults. Include gimprc and gtkrc for
sane defaults. Update launcher script to fix first time startup crash
and cage tool crash. Update gimp-python.bundle to properly rename
paths in linked libraries. Update gimp.modules to include svg support.
2012-08-30 01:09:02 +02:00
Michael Natterer
b07473775a build: fix version numbers and bundle identifier in Info.plist 2012-08-28 19:39:47 +02:00
Michael Natterer
dc5aa9adbe build: fix typo in osx moduleset: s/popper/poppler/ 2012-08-28 19:03:39 +02:00
Martin Srebotnjak
f6c08d94bd Updated Slovenian translation 2012-08-28 15:42:45 +02:00
Massimo Valentini
2f274f0904 Bug 682454: Plug-in crashed
plug-in-metadata-decode-exif makes use of the exif parasite
attached to the image few lines above.

and exif_data->size is the size of the thumbnail buffer that
starts at exif_data->data and not at exif_data.

==4677== Invalid read of size 1
==4677==    at 0x4A0A130: memcpy@@GLIBC_2.14 (/builddir/build/BUILD/valgrind-3.7.0/memcheck/mc_replace_strmem.c:837)
==4677==    by 0x4E440F8: gimp_write (gimp-2-8/libgimp/gimp.c:1726)
==4677==    by 0x5BDD27E: gimp_wire_write (gimp-2-8/libgimpbase/gimpwire.c:174)
==4677==    by 0x5BD9D41: _gp_params_write (gimp-2-8/libgimpbase/gimpprotocol.c:1748)
==4677==    by 0x5BDDA46: gimp_wire_write_msg (gimp-2-8/libgimpbase/gimpwire.c:296)
==4677==    by 0x5BDAE17: gp_proc_run_write (gimp-2-8/libgimpbase/gimpprotocol.c:305)
==4677==    by 0x4E4513E: gimp_run_procedure2 (gimp-2-8/libgimp/gimp.c:993)
==4677==    by 0x4E4544B: gimp_run_procedure (gimp-2-8/libgimp/gimp.c:926)
==4677==    by 0x40BD36: gimp_metadata_store_exif (gimp-2-8/plug-ins/file-jpeg/gimpexif.c:69)
==4677==    by 0x406EA4: load_image (gimp-2-8/plug-ins/file-jpeg/jpeg-load.c:343)
==4677==    by 0x405A2E: run (gimp-2-8/plug-ins/file-jpeg/jpeg.c:235)
==4677==    by 0x4E44AD8: gimp_main (gimp-2-8/libgimp/gimp.c:1992)
==4677==    by 0x30A0421734: (below main) (in /usr/lib64/libc-2.15.so)
==4677==  Address 0x8f75e01 is 1 bytes after a block of size 64 alloc'd
==4677==    at 0x4A06F18: calloc (/builddir/build/BUILD/valgrind-3.7.0/coregrind/m_replacemalloc/vg_replace_malloc.c:566)
==4677==    by 0x8AC304B: exif_data_new_mem (/home/massimo/libexif/libexif/exif-data.c:111)
==4677==    by 0x8AC312D: exif_data_new (/home/massimo/libexif/libexif/exif-data.c:95)
==4677==    by 0x407224: load_image (gimp-2-8/plug-ins/file-jpeg/jpeg-load.c:311)
2012-08-26 17:41:24 +02:00
Alexandre Prokoudine
1fbdd50249 Adjusted default values in the Drop Shadow script to help people produce less ugly artwork 2012-08-25 20:13:28 +04:00
Khaled Hosny
d812886cdf Updated Arabic translation 2012-08-24 23:35:23 +02:00
Michael Natterer
69397a4c0c configure: post-release version bump to 2.8.3 2012-08-23 22:46:11 +02:00
Michael Natterer
a42a02e1a7 app: adapt tests to file_save() API change 2012-08-23 21:06:41 +02:00
Mikael Magnusson
1ba763e1dc NEWS: fix another small typo 2012-08-23 20:10:20 +02:00
Michael Natterer
846ce09b83 configure: bump version to 2.8.2 and commit regenerated files 2012-08-23 20:08:27 +02:00
Mikael Magnusson
92d400a239 NEWS: fix small typo 2012-08-23 20:07:51 +02:00
Michael Natterer
fef532a108 devel-docs: add the new even/odd micro version policy to release-howto 2012-08-23 19:56:15 +02:00
Jernej Simončič
f3788ae9c3 Installer: use ${gimp_installation_dir} when setting environment instead of
hardcoding installation path
2012-08-23 19:32:48 +02:00
Michael Natterer
2048d65ac1 NEWS: update for 2.8.2 2012-08-23 19:27:16 +02:00
Piotr Drąg
037af495ad Updated Polish translation 2012-08-22 01:44:56 +02:00
Daniel Mustieles
d16776ecb6 Updated Spanish translation 2012-08-20 20:07:00 +02:00
Daniel Mustieles
06835ad73c Updated Spanish translation 2012-08-20 20:04:46 +02:00
Piotr Drąg
4e46009b6b Updated Polish translation 2012-08-20 15:02:24 +02:00
Nils Philippsen
6b642a26da file-gif-load: fix type overflow (CVE-2012-3481)
Cast variables properly to avoid overflowing when computing how much
memory to allocate.
(cherry picked from commit 43fc9dbd8e)
2012-08-16 12:27:37 +02:00
Jan Lieskovsky
4347b3496a file-gif-load: limit len and height (CVE-2012-3481)
Ensure values of len and height can't overflow g_malloc() argument type.
(cherry picked from commit d95c2f0bcb)
2012-08-16 12:27:37 +02:00
Nils Philippsen
a21aceedf1 file-cel: use g_set_error() for errors instead of g_message()
(cherry picked from commit 86f4cd39bd)
2012-08-14 12:05:00 +02:00
Nils Philippsen
89f4c4042f file-cel: use statically allocated palette buffer
(cherry picked from commit 69b98191cf)
2012-08-14 12:04:49 +02:00
Nils Philippsen
a605d0c4d5 file-cel: validate header data (CVE-2012-3403)
(cherry picked from commit b772d1b84c)
2012-08-14 12:04:41 +02:00
Nils Philippsen
3db516f1e7 file-cel: check fread()/g_fopen() return values and pass on errors
(cherry picked from commit 797db58b94)
2012-08-14 12:04:18 +02:00
Michael Natterer
24130eec55 Bug 681799 - Canvas size doesn't show preview after canceling once
gimp_viewable_get_pixbuf(): if there is a cached pixbuf of the right
size, actually return it, instead of the local "pixbuf" variable which
is always NULL.
(cherry picked from commit 276b507285)
2012-08-14 09:30:21 +02:00
Jiro Matsuzawa
bf9f91923c [l10n] Update Japanese translation
Modify the About label
2012-08-12 12:00:12 +09:00
Muhammet Kara
f63d58a554 [l10n]Updated Turkish translation 2012-08-09 10:07:00 +03:00
Praveen Illa
31ef6fb398 Updated Telugu Translation 2012-08-09 00:17:46 +05:30
Praveen Illa
b35c3381b1 Updated Telugu Translation 2012-08-09 00:01:38 +05:30
Piotr Drąg
47b0212a77 Updated Polish translation 2012-08-08 02:02:56 +02:00
Michael Natterer
b91f60602a Bug 678297 - Cannot find Page Setup in Gimp 2.8
Embed the page setup dialog only on non-windows systems. This
effectively reverts bdc3f7e7e0 but puts
the diff in #if[n]def EMBED_PAGE_SETUP which is defined as
!G_OS_WIN32. Did not revert the bug fixes that were mixed with
the original embedding patch.
(cherry picked from commit 73fc1df8ff)
2012-08-07 16:06:51 +02:00
Clayton Walker
15c8b3f850 Update osx build scripts, readme, and fix font issue 2012-08-05 00:29:48 +02:00
Michael Natterer
209116fcad Bug 678732 - gimp-image-insert-layer inserts into a wrong place...
Fix the docs, the function does what it's supposed to do.  Passing
"0, -1" actually means "insert where the ui would insert" and is
supposed to be used when e.g. scripts create layers.
(cherry picked from commit e620eb8cef)
2012-08-04 02:21:59 +02:00
Michael Natterer
92f348a96c app: improve error message when failing to load an ABR version 6 brush
(cherry picked from commit 47c94fc228)
2012-08-04 00:06:34 +02:00
Michael Natterer
977311dff8 Bug 680432 - metadata.exe keeps dying
Based on a patch by Hartmut Kuhse, run all strings through
gimp_any_to_utf8() which always returns something that's UTF-8, even
if it's only "(invalid UTF-8 String)". Better than crashing.
(cherry picked from commit c207e395fd)
2012-07-31 15:18:51 +02:00
Michael Natterer
3445d5f214 Bug 669795 - Toolbox can't be shrinked to 1 or 2 columns
Reduce the requested width of the "You can drop foo here" label to 16
pixels, which makes is look a bit crappy, but at least the toolbox
becomes shrinkable to < 3 columns. Whoever keeps this empty space
around without using it shall henceforth be punished by having to see
that distorted and misplaced label.
(cherry picked from commit 573faa39b0)
2012-07-30 18:08:28 +02:00
Michael Henning
7fd0895c0c Bug 680795 - GIMP segfaults in gimp_clipboard_set_buffer when...
Fix segfault in gimp_clipboard_set_buffer when n_target_entries is 0.
(cherry picked from commit e060da8278)
2012-07-30 16:58:25 +02:00
Michael Natterer
64b1ade7b0 Bug 586462 - Layer inserts misplaced
Another attempt to fix paste/drop positions for good.

Paste/drop target is either the selected area of a drawable, the
drawable itself, or the image:

- if the paste is larger than the target, center on the target
- if there is a viewport, and the viewport intersects with the
  target, center on the intersection
- otherwise, center on the target

Finally, if we did viewport-centered pasting, make sure the paste is
as completely within image bounds as possible.
(cherry picked from commit eda6fa1c14)
2012-07-30 16:28:25 +02:00
Seong-ho Cho
67525e4c6b Update Korean translation 2012-07-29 09:41:48 +09:00
Marco Ciampa
7d985af68f Fixed italian po files plural forms 2012-07-28 14:12:54 +02:00
Marco Ciampa
d400813027 Small fix in italian windows setup translation. 2012-07-28 00:03:13 +02:00
Jernej Simončič
049258a701 Installer: adjust associations label height automatically according to text length 2012-07-27 22:05:13 +02:00
Jernej Simončič
757b5709e4 Installer: include Italian translation in script 2012-07-27 00:51:49 +02:00
Jernej Simončič
5f646592a2 Installer: request restart if files couldn't be deleted during uninstall 2012-07-27 00:49:28 +02:00
Marco Ciampa
cff132d90b Added Windows installer italian translation. 2012-07-27 00:36:23 +02:00
Michael Natterer
cab6d84867 Bug 677987 - Don't allow to assign keybindings with arrow keys...
Disable assigning arrow-key bindings in gimpactionview.c
(cherry picked from commit decc03ae04)
2012-07-26 18:34:51 +02:00
Michael Natterer
d6091dbce6 Bug 678890 - Selection box handles do not respond after changing layer
Make sure that temporarily setting/unsetting tool->control's "preserve
tool across image changes" does not mess up the default value:

Introduce gimp_tool_control_push/pop_preserve() which restores the old
state automatically, and use it in all tools, instead of saying
set_preserve(TRUE/FALSE) around image changes.
(cherry picked from commit 078128bb09)
2012-07-26 18:19:41 +02:00
Michael Natterer
0a450f8e22 Bug 680531 - Function gimp-context-get-brush-size takes size argument...
The context getters need PDB @outargs, not @inargs. This "API change"
is OK in stable because the API was totally unusable before this fix.
(cherry picked from commit 01dffdc276)
2012-07-26 16:30:31 +02:00
Jernej Simončič
7506a26940 Installer: move language files to a subdirectory 2012-07-21 22:50:02 +02:00
Michael Muré
a56ae5a82d fix autogen.sh to work with automake 1.12 2012-07-18 09:13:56 +09:00
Michael Natterer
f4ce57aa97 Bug 676566 - Window title becomes "Untitled" after exporting without saving
Fix this and other issues more globally by moving the logic that
formats the image's display name into the GimpImage object, and return
the properly formatted name, e.g. "Foo.xcf", or "[Foo] (imported)"
from gimp_image_get_display_name().

Also add gimp_image_get_display_path() which returns the full path
instead. Use the two functions for formatting the image title, and
apply various other fixes that make sure the UI always uses the same
string to identify the image.

Call gimp_object_name_changed() whenever the save/export status
changes, so the image's cached display name and path get cleared.

(cherry picked from commit 220b28677b)
2012-07-17 22:59:09 +02:00
Jernej Simončič
8057908853 Installer: handle /32 properly when reboot is needed before install can continue 2012-07-16 22:20:12 +02:00
Jernej Simončič
a125d8dacc Installer: remember /32 switch between runs 2012-07-14 16:06:34 +02:00
Jernej Simončič
862bbb829f Installer: add /32 command-line parameter to force install of 32-bit version on x64 2012-07-14 14:16:21 +02:00
Michael Natterer
c3e904fab1 app: don't ask to confirm reverting "Untitled" when the image was imported
(cherry picked from commit b0170ee5ea)
2012-07-14 00:12:38 +02:00
Michael Natterer
d8e71085cc app: create thumbnails also for imported files, not only for XCFs
file_open_with_proc_and_display(): Use gimp_image_get_any_uri() to
check if the opened file has the same URI as the one passed in so
the logic works for non-XCF too.
(cherry picked from commit afa81b5fbf)
2012-07-13 23:53:30 +02:00
Alexandre Prokoudine
d363043370 Updates and fixes to Russian translation 2012-07-12 12:46:06 +04:00
Michael Natterer
40deca6c04 Bug 679256 - SWM image tabs must have a minimum width
Set all tabs to the same width so very narrow images' tabs stay
clickable.
(cherry picked from commit 2c54f4b340)
2012-07-09 22:55:09 +02:00
Gabor Kelemen
ee4a81d418 Corrections to the Hungarian translation 2012-07-06 15:27:11 +02:00
Gabor Kelemen
917e2f9c90 Updated Hungarian translation by Andras Prim <gimme_at_primandras.hu> 2012-07-06 15:18:24 +02:00
Massimo Valentini
5d2933c51c app: don't pass a NULL widget to gtk_widget_event
<Alt>C C <Ctrl>1 <ESC> used to print:

(gimp-2.8:1): Gtk-CRITICAL **: IA__gtk_widget_event:
                assertion `GTK_IS_WIDGET (widget)' failed
2012-07-05 18:08:01 +02:00
Jernej Simončič
05da156b30 Installer: adjust association buttons width according to text length
(German text was way too long for the default button widths)

Also fix empty lines in Ready Memo on upgrades (Select Directory page
isn't shown for upgrades, so there's no install directory text shown)
2012-07-03 22:10:38 +02:00
Jernej Simončič
2b6bdfaa04 Installer: add German translation 2012-07-03 22:10:06 +02:00
Piotr Drąg
dca5b0896b Updated Polish translation 2012-07-02 20:27:38 +02:00
Massimo Valentini
b874c8af1e Bug 679082: Crash after using Rotate tool 2012-06-30 13:05:55 +02:00
Timo Jyrinki
ec6db4b994 Updated po-tips Finnish translation by Janne Peltonen. 2012-06-26 20:33:54 +03:00
Timo Jyrinki
d8b4de413a Updated Finnish translation by Janne Peltonen. 2012-06-26 20:18:26 +03:00
Marco Ciampa
8a0e26773c Updated italian translation. 2012-06-25 17:45:47 +02:00
Massimo Valentini
bf503ea7dd app: compress motion events up to the first release event
I'm not sure if it'd be better to compress only sequence
of contiguous motion events, thinking to the case of anticipating
a motion event before a modifier key press/release.
2012-06-24 13:23:10 +02:00
Massimo Valentini
313ef397cd Bug 677040: PDF export does not appear to handle font size...
...correctly unless image flattened

Font size was wrong unless in pixels and
gimp_drawable_type returns a GimpImageType
2012-06-21 19:04:31 +02:00
Jernej Simončič
8f2246578d Installer: display a warning when color depth < 32BPP 2012-06-21 00:12:43 +02:00
Jernej Simončič
f3085d2879 Installer: fix permissions, add .gitignore 2012-06-20 17:05:28 +02:00
Jernej Simončič
b99e80dc90 Installer: oops, remove duplicate function 2012-06-20 17:04:02 +02:00
Jernej Simončič
416dfc4584 Installer: allow override of system-wide configuration files with custom
versions during install
2012-06-20 16:34:53 +02:00
Piotr Drąg
8be0541df5 Updated Polish translation 2012-06-19 21:51:43 +02:00
Massimo Valentini
bf8e42330b Bug 677375: tools do not strictly follow mouse...
pointer (missing motion events)

Disable calls gimp_help_set_help_data for shell->canavs
2012-06-18 18:14:42 +02:00
Dimitris Spingos
df1752f287 Updated 2 Greek translations 2012-06-17 12:48:34 +03:00
Martin Srebotnjak
6a5b3b61d7 Updated Slovenian translation 2012-06-16 22:20:06 +02:00
Daniel Mustieles
b16aab1e8e Updated Spanish translation 2012-06-13 10:08:31 +02:00
Mikael Magnusson
9eb45ed8d7 metadata: fix length passed to base64 decoder
(cherry picked from commit a4cd8637af)
2012-06-13 02:12:57 +02:00
Michael Natterer
310a8c4458 app: get the help_id from the right action in gimp_editor_add_action_button()
(cherry picked from commit 4fbf01baef)
2012-06-12 22:52:24 +02:00
Michael Natterer
d81669a671 Bug 677974 - GIMP suggests XCF as default export format
Only auto-add .xcf if it's a save (not an export) dialog, instead do
not auto-add anything and ask the user to enter an extension, that's
less mysterious than saving in the last-exported format which the user
maybe doesn't remember or want.
(cherry picked from commit 2f8d45611c)
2012-06-12 22:36:10 +02:00
Michael Natterer
687fbf4583 Bug 677823 - Shift + mouse click to link all layers does not work
This got lost during layer group porting, reimplement it, but restrict
"all layers" to the clicked layer's branch in the tree.
(cherry picked from commit 67b5a509b6)
2012-06-12 21:41:39 +02:00
Eulalia
8ec18b847c [l10n] Update Catalan translation 2012-06-10 22:56:11 +02:00
Albert F
6b63e85a88 [l10n] Update Catalan translation 2012-06-10 22:55:49 +02:00
Massimo Valentini
a4ecfde635 Bug 677375: tools do not strictly follow mouse...
pointer (missing motion events)
2012-06-10 17:20:43 +02:00
Kristian Rietveld
7212f9973d Avoid using CMFlattenProfile
This symbol is not available to 64-bit applications.  So put another
approach in place.

I can confirm that the code does not crash, but I do not know if it
works properly.  Mitch forced me to push anyway.
(cherry picked from commit 9514cf4871)
2012-06-09 22:58:45 +02:00
Marco Ciampa
9783b68d0f Little italian translation fix. 2012-06-09 20:31:41 +02:00
Massimo Valentini
0ba99a05ff Bug 673729: tiff plug in not working 2.8.0-RC1 windows install
implement win32 filename Unicode management in the plug-ins
to work-around a problem in libtiff TIFFFdOpen.

Based on a patch from Hartmut Kuhse.
2012-06-09 15:36:35 +02:00
Massimo Valentini
03f0a1ab57 Bug 677637: PDF export plug-in does not work
use g_fopen and cairo_pdf_surface_create_for_stream
to avoid file name encoding issues on Windows.
2012-06-09 15:36:35 +02:00
Massimo Valentini
41ce828243 Bug 645345: 'Color Management' display filter causes performance problems 2012-06-09 15:36:34 +02:00
Gil Forcada
2fb8ede280 Added nn to LINGUAS 2012-06-09 10:32:33 +02:00
Kolbjørn Stuestøl
25127e10ad --amend 2012-06-08 20:47:24 +02:00
Kolbjørn Stuestøl
df394ffae0 Updatet Norwegian 'po/nn.po' translations 2012-06-08 20:44:34 +02:00
Kolbjørn Stuestøl
77db64913d --amend 2012-06-08 20:27:59 +02:00
Kolbjørn Stuestøl
4cd5a2fb22 Updated Norwegian (nn) translations 2012-06-08 20:21:10 +02:00
Michael Natterer
242d71fd73 Bug 677262 - move the layer with the arrow keys, broken after...
commit 9ce8d4fae2. Fix the return_val
logic added in that commit, and make sure we always swallow arroy key
events, because we don't want focus keynav away from the canvas.
(cherry picked from commit f400bc49ca)
2012-06-08 00:23:39 +02:00
Michael Natterer
8a85b907ff build: include the basic-coretext module when building pango for OSX 2012-06-07 19:44:19 +02:00
Gabor Kelemen
954f72e4f9 Add hu to LINGUAS 2012-06-07 11:47:27 +02:00
Gabor Kelemen
d405dbb5ef Updated Hungarian po-libgimp translation by Andras Prim <gimme_at_primandras.hu> 2012-06-07 10:58:53 +02:00
Gabor Kelemen
e2a6c5974a Updated Hungarian translation by Andras Prim <gimme_at_primandras.hu> 2012-06-06 23:06:57 +02:00
Michael Natterer
0474376d23 Bug 676804 - file handling DoS for fit file format
Apply patch from joe@reactionis.co.uk which fixes a buffer overflow on
broken/malicious fits files.
(cherry picked from commit ace4563159)
2012-06-06 21:23:53 +02:00
Michael Natterer
0e31638588 authors.xml: add Clayton Walker 2012-06-06 19:44:14 +02:00
Michael Natterer
1bf4f74ca5 menus: really remove the "Use GEGL" menu items this time
They were never meant to be in 2.8.
2012-06-06 19:44:13 +02:00
Nils Philippsen
b121388b03 text-brush: fix TypeError exception (rhbz#827826) 2012-06-06 14:07:11 +02:00
Gabor Kelemen
208e04c66c Added Hungarian translation for po-tags 2012-06-04 22:07:58 +02:00
Gabor Kelemen
81b03011ab Updated Hungarian translation for po-tips 2012-06-04 22:07:04 +02:00
Gabor Kelemen
b3e9473efa Updated Hungarian po-python translation by Andras Prim <gimme at primandras dot hu> 2012-06-04 21:55:31 +02:00
Massimo Valentini
c3bf36f3d6 app: remove a weak ptr when the object lives longer than the ptr
Closing the display filter editor with a filter selected
in the listview on the right, used to produce (quitting GIMP):

==32359== Invalid write of size 8
==32359==    at 0x8808DF5: g_nullify_pointer (glib/glib/gutils.c:2099)
==32359==    by 0x8358781: weak_refs_notify (glib/gobject/gobject.c:2469)
==32359==    by 0x4C3730A: gimp_color_display_dispose (gimp-2-8/libgimpwidgets/gimpcolordisplay.c:197)
==32359==    by 0x83596A7: g_object_unref (glib/gobject/gobject.c:2986)
==32359==    by 0x4C37EFA: gimp_color_display_stack_dispose (gimp-2-8/libgimpwidgets/gimpcolordisplaystack.c:150)
==32359==    by 0x83596A7: g_object_unref (glib/gobject/gobject.c:2986)
==32359==    by 0x53F1C3: gimp_display_shell_filter_set (gimp-2-8/app/display/gimpdisplayshell-filter.c:58)
==32359==    by 0x536A50: gimp_display_shell_dispose (gimp-2-8/app/display/gimpdisplayshell.c:765)
2012-06-04 19:32:41 +02:00
Massimo Valentini
bf7fa23beb Bug 676916: Filename garbled when you save .xcf.bz2...
or .xcf.gz files using non-ASCII characters
2012-05-31 19:35:29 +02:00
Daniel Mustieles
5ac0d10aad Updated Spanish translation 2012-05-31 14:12:30 +02:00
Massimo Valentini
c66b8c984c Bug 676871: GIMP reports false positive plugin crash after...
entering "quit()" in Python Console.
2012-05-29 13:10:44 +02:00
Mukund Sivaraman
e608b47ce8 file-compressor: Bug #676916 - Use g_open() and g_fopen() instead of libc 2012-05-28 14:17:30 +05:30
Andika Triwidada
3019fdc3fb Updated Indonesian translation of gimp plugins 2012-05-28 15:12:33 +07:00
Andika Triwidada
43d2b59849 Updated Indonesian translation of gimp-python 2012-05-28 14:12:02 +07:00
Andika Triwidada
df53bc6646 Updated Indonesian translation of script-fu 2012-05-28 14:07:40 +07:00
Andika Triwidada
8b0cbad26f Added Indonesian translation of gimp tags 2012-05-28 13:52:05 +07:00
Andika Triwidada
b02b78bffc Updated Indonesian translation for gimp tips 2012-05-28 13:35:53 +07:00
Michael Natterer
9ce8d4fae2 Bug 676872 - Image Properties keyboard shortcut Alt+Return Broken
Don't swallow key events which were not handled by the keyboard
controller.
(cherry picked from commit 6c9f1b5715)
2012-05-27 19:57:43 +02:00
Daniel Sabo
668891e745 app: use an idle source to dispatch GTK menu events in ige-mac-menu
in order to work around the crashes in bug #673264 and bug #674108.
(cherry picked from commit c1786fe753)
2012-05-27 19:10:30 +02:00
Wouter Bolsterlee
20c4a131c5 Updated Dutch translation 2012-05-27 16:39:46 +02:00
Wouter Bolsterlee
b803915631 Updated Dutch translation 2012-05-27 16:12:34 +02:00
Wouter
1c910a1b78 Updated Dutch translation 2012-05-27 15:17:32 +02:00
Wouter
3e5cc6ca50 Updated Dutch translation 2012-05-27 14:43:21 +02:00
Wouter
3c6c85c33e Updated Dutch translation 2012-05-27 14:31:46 +02:00
Jernej Simončič
5462f0bca0 installer: fix permissions 2012-05-27 11:40:23 +02:00
Jernej Simončič
b50145fb1a installer: Replace TButton with TNewButton 2012-05-27 11:38:27 +02:00
Jernej Simončič
354365857e Update zlib1.dll in Windows\System32 when it already exists there
This will prevent "The procedure entry point gzdirect could not be located in the dynamic link library zlib1.dll" from plugins
2012-05-26 19:59:47 +02:00
Michael Natterer
4437b90b63 Bug 676821 - No drag layers in "window layers", after commit...
Remove the button_release handler again, setting dnd_widget to NULL on
container change is enough to fix the crash I've seen, I added the
other handler just out of paranoia and apparently didn't test it.
(cherry picked from commit 92a3944442)
2012-05-25 21:27:50 +02:00
Massimo Valentini
0008be8484 Bug 673773: Colour of image changes with zooming
transform a right shift by 8 in the correct
division by 255 and rounds to the nearset
2012-05-24 19:42:42 +02:00
Clayton Walker
37a884a31b Update osx build files and README 2012-05-23 19:26:05 +02:00
Michael Natterer
ca5549a55e libgimpconfig: support $(gimp_installation_dir) in config paths
(cherry picked from commit f931f05006)
2012-05-23 11:52:31 +02:00
Michael Natterer
91665198d4 libgimpbase: add gimp_installation_directory()
which returns the toplevel directory of the running GIMP installation.
(cherry picked from commit 010b28f39e)

It's not exactly clean to add new API in 2.8.1, but this is so useful
for proper relocation, I've made an exception.
2012-05-23 11:51:44 +02:00
Michael Natterer
74c20f2222 Bug 676585 - Gimp crashes when writing in Arabic and clicking right arrow
Check for pango_layout_move_cursor_visually() returning a new index of
G_MAXINT, which indicates that we moved beyond the end of the layout,
and do nothing instead of trying to access the memory there.
(cherry picked from commit 7d280abd9a)
2012-05-23 09:47:29 +02:00
Michael Natterer
a4fb9692ae Bug 676522 - Changing tabs in single-window-mode should switch the active image
Change the active image when switching tabs in single-window-mode.
(cherry picked from commit c1cfe98d35)
2012-05-23 01:27:25 +02:00
Michael Natterer
e2ad99b98e app: set GimpContainerTreeView->dnd_renderer to NULL more reliably
specifically in button_release() and when the container changes, we
can badly crash in some situations otherwise.
(cherry picked from commit 27a767ee54)
2012-05-22 13:02:33 +02:00
sebul
75ac9cc230 Updated Korean translation 2012-05-22 02:40:12 +09:00
Daniel Winzen
ae741b527b Updated German translation 2012-05-20 22:10:53 +02:00
Clayton Walker
6b54e919f4 Files required for building gimp on osx 2012-05-19 18:28:51 +02:00
Piotr Drąg
8a6be41891 Updated Polish translation 2012-05-19 18:07:53 +02:00
Piotr Drąg
09e80d1a63 Updated Polish translation 2012-05-19 18:01:21 +02:00
Michael Natterer
6899757b09 app: make file_save() aware of the difference between overwrite and export
by having two booleans "export_backward" and "export_forward" in the
api instead of just an "export" one that would destroy the "imported
from" state. This change fixes the state of the "Overwrite" menu item,
so it stays visible until the file got either saved or exported to
another filename.

This also reverts commit a4beeecf2b, so
Ctrl-S is always invokable even if invisible.
(cherry picked from commit 39c18e9a48)
2012-05-18 18:59:10 +02:00
Massimo Valentini
187e20f367 Bug 675981: Export as JPEG "save defaults" "load defaults" doesn't work
oversight
2012-05-18 17:20:38 +02:00
Michael Natterer
4fdb1ec90a Bug 676279 - Ctrl or Shift causes selection tools to reset...
Make sure to not override the logic that separates the tool option's
selection mode from the one determined by modifiers, by blindly
calling gimp_modifiers_to_channel_op(state) on a zero state.
(cherry picked from commit 2d882dd64f)
2012-05-17 23:35:05 +02:00
Jernej Simončič
c8a3a4f19e Fix license - it was still GPL2 2012-05-17 17:44:43 +02:00
Jernej Simončič
a807095434 Fix permissions 2012-05-17 17:43:48 +02:00
Jernej Simončič
088c05e77f Fix language file (XP SP3 required instead of SP2) 2012-05-17 15:44:16 +02:00
Jernej Simončič
f6ae4c83ae Skip asking for install directory when upgrading 2012-05-17 15:43:28 +02:00
Christian Kirbach
2a88a5ce02 Updated German translation 2012-05-17 14:44:09 +02:00
Christian Kirbach
0b14297f0a Updated German translation 2012-05-17 14:36:27 +02:00
Michael Natterer
741daccf02 Revert "app (gimprc): Delete dead assignment"
This reverts commit d6d2a0bbd1
and allows more than one unknown gimprc token again.

Fixes Bug 674096 - Strange behavior with gimprc
(cherry picked from commit 8851ec0b6e)
2012-05-17 01:19:20 +02:00
Michael Natterer
be2feeb111 Bug 676164 - Text Tool selects hidden layers
Also fix the other layer picking functions to not pick invisible
layers.
(cherry picked from commit b50e924df0)
2012-05-17 00:18:44 +02:00
Daniel Sabo
82533e7734 Bug 675875 - Gimp Quartz doesn't respond to file open events from finder
Add Carbon based apple events responder for kAEOpenDocuments
(cherry picked from commit 7d62e8370a)
2012-05-16 23:03:02 +02:00
Wouter Bolsterlee
942860ae32 Updated Dutch translation (manual backport from master) 2012-05-16 00:39:22 +02:00
Daniel Nylander
29dbea042e Updated Swedish translation 2012-05-16 00:28:03 +02:00
Daniel Nylander
8dc87ae32f Updated Swedish translation 2012-05-16 00:26:50 +02:00
Daniel Nylander
780e88c353 Updated Swedish translation 2012-05-16 00:22:41 +02:00
Clayton Walker
0e5e5c912b build: start infrastructure to build GIMP.app on OSX 2012-05-15 23:48:50 +02:00
Michael Natterer
8d6004e063 Bug 676107 - Picking logic doesn't take group visibility into account
gimp_layer_get_opacity_at(): use gimp_item_is_visible() not
get_visible() so we use the layer's effective visibility.
(cherry picked from commit 4d1173570a)
2012-05-15 19:48:56 +02:00
Marco Ciampa
d137a44af3 Updated italian translation. 2012-05-15 10:00:24 +02:00
Praveen Illa
d8f535cc3c Updated Telugu Translation 2012-05-15 11:38:39 +05:30
Michael Natterer
1e402a46f0 Bug 675994 - Opening image with a saved selection breaks histogram updating
In fact, it broke much more than that because the way XCF loading
replaced the image's mask prevented the image's "mask-changed" signal
from ever being emitted. Add private API gimp_image_take_mask() which
properly sets the mask and use it for image construction and the XCF
selection loading hack.
(cherry picked from commit ab4c613a70)
2012-05-14 01:47:14 +02:00
Michael Natterer
601db43838 windows/installer: none of the files needs to be executable 2012-05-14 00:07:52 +02:00
Jernej Simončič
70ca141159 Windows installer - initial import 2012-05-14 00:01:17 +02:00
Michael Natterer
36bb8a625b app: default to half the physical memory for the tile-cache-size setting
Wanted to do this for ages but forgot...
2012-05-13 20:21:00 +02:00
Jihui Choi
ef9972da7a Update Korean translation 2012-05-14 00:48:50 +09:00
sebul
5a241911b5 Update Korean translation 2012-05-14 00:45:49 +09:00
Michael Natterer
a23a5692cc libgimpbase: implement relocation for OSX
Using [[NSBundle mainBundle] resourcePath]
(cherry picked from commit db1dda6e3f)
2012-05-12 20:58:25 +02:00
Michael Natterer
d8ce061715 libgimpbase: it's "GIMP" not "Gimp"
(cherry picked from commit 4805f875ef)
2012-05-12 16:49:44 +02:00
Rudolfs Mazurs
e87b912d70 Updated Latvian translation. 2012-05-12 16:24:38 +03:00
Michael Natterer
46127dc789 Move gimpdir and thumbnails to proper places on OSX
gimpdir goes to ~/Library/Gimp/x.y
thumbnails go to ~/Library/Caches/org.freedesktop.thumbnails

The thumbnail location is not standardized yet, but is the only
location that makes sense. Also fix user install to search old
gimpdirs to migrate in both Library and the classic location.
Remove the obsolete CABON_CFLAGS from all makefiles.
(cherry picked from commit 9112d68488)
2012-05-12 14:44:08 +02:00
Michael Muré
cb2de50697 cage tool: fix handle added in the wrong side of the cage
This happened when:
1) cage still open
2) clicking on the edge between the first and the last handle
2012-05-11 12:42:53 +09:00
Michael Muré
f8bcdcb9a5 Bug 675825 - (cage) simply using cage transform tool makes gimp to crash.
Just check if there is enough handles before closing
2012-05-11 12:04:49 +09:00
Michael Henning
fa8a5a63ab Bug 568098 - Healing Tool doesn't work at the layer borders.
Fixes the row stride for the brush mask.
2012-05-10 20:13:27 +02:00
Michael Natterer
e5ef544559 app: make the popup previews transient to their parent's toplevel
so they don't appear below the dock. Seems to happen on OSX only,
but is the right things to do on all platforms.
(cherry picked from commit ffb559547c)
2012-05-10 19:51:19 +02:00
Piotr Drąg
97eaae4430 Updated Polish translation 2012-05-10 19:24:42 +02:00
Daniel Mustieles
136cea976f Updated Spanish translation 2012-05-10 18:06:14 +02:00
Khaled Hosny
097ed17822 Fix Arabic translation of tags-locale 2012-05-10 10:16:05 +02:00
Martin Srebotnjak
d661bc3403 Updated Slovenian translation 2012-05-10 09:36:43 +02:00
Martin Srebotnjak
c3d43d8378 Updated Slovenian translation 2012-05-10 09:36:07 +02:00
Michael Natterer
062d38d141 Bug 675399 - Mention that the image was at least exported in the close...
If the image was exported, mention it in the close warning dialog.
(cherry picked from commit 57d4680ab3)
2012-05-10 01:11:54 +02:00
Michael Natterer
c4d14752a7 Bug 630173 - a dockable open from an existing one appears under it
Show the new dock with gtk_widget_show_now(), which waits until it's
mapped, then call gdk_window_raise() explicitly. How sick...
(cherry picked from commit bd3f892f79)
2012-05-09 00:23:10 +02:00
Marek Černocký
8af18fb9d5 Updated Czech translation 2012-05-08 21:46:31 +02:00
Michael Natterer
7f37903b11 app: make GimpContainerPopup transient to its parent toplevel
so it doesn't appear under the dock it's invoked from. Only
needed on OSX, but the right thing to do on all platforms.
(cherry picked from commit 3545140ad8)
2012-05-08 21:36:05 +02:00
Jordi Mallach
562862a486 Fix Catalan translation for “tags-locale”. 2012-05-08 20:27:51 +02:00
Michael Natterer
8ec5e86514 AUTHORS: commit generated file 2012-05-08 08:08:05 +02:00
Sebul
a7c57d016f Updated Korean translation 2012-05-07 01:41:41 +09:00
Michael Natterer
7ef8a96465 app: don't call gimp_image_flush() when cancelling GimpImageMapTool
because the tool might be cancelled from some other place opening an
undo group, so flushing the image would update menus and whatnot while
that other operation is running, with unforeseeable side
effects. Also, flusing the image here is not needed because we didn't
change anything in the image. Instead, make sure manually that the
display is updated correctly after restoring GimpImageMapTool's
temporary editing.
(cherry picked from commit e7e8c9ef0a)
2012-05-05 21:48:13 +02:00
Michael Natterer
32a0c6355e app: fix UI tag matching to always work case-insensitively
Add gimp_tag_has_prefix() and use it in GimpTagEntry when completing
patrially entered tag names, and fix two uses of strcmp() in
GimpTagPopup to use gimp_tag_compare_with_string().
(cherry picked from commit 30b4fe8510)
2012-05-05 19:00:32 +02:00
Hleb Valoshka
1421545bd6 Updated Belarusian translation. 2012-05-05 15:07:02 +03:00
Sebastian Pipping
df1e7763fa Fix configure option --with[out]-bzip2 2012-05-05 01:59:32 +02:00
Michael Natterer
4c66e50763 app: make sure Ctrl+E doesn't invoke "Export to" when it's invisible 2012-05-05 00:17:51 +02:00
Khaled Hosny
862865e379 Updated Arabic translation 2012-05-04 18:19:29 +02:00
Marek Černocký
f5b184d0d7 Updated Czech translation 2012-05-04 15:23:12 +02:00
Hleb Valoshka
4be1d3471b Updated Belarusian translation. 2012-05-04 12:07:52 +03:00
Kiyotaka NISHIBORI
547e9ee713 [l10n] Update Japanese translation 2012-05-03 23:22:23 +09:00
Michael Natterer
5b59af7c2e libgimp: don't recurse infinitely in gimp_parasite_detach() 2012-05-03 00:35:03 +02:00
Michael Natterer
569c122137 libgimp: fix docs of deprecated functions 2012-05-03 00:25:08 +02:00
Michael Natterer
f32706a0d1 libgimp: don't recurse infinitely in deprecated gimpvectors functions 2012-05-03 00:24:19 +02:00
Mikael Magnusson
f7cffc0d6c authors.xml: Add Bernhard Stockmann 2012-05-02 17:02:29 +02:00
Michael Natterer
7757edd702 configure: post-release version bump to 2.8.1 2012-05-02 16:49:06 +02:00
992 changed files with 511761 additions and 378499 deletions

1
.gitignore vendored
View File

@@ -46,3 +46,4 @@
/stamp-h
/stamp-h.in
/stamp-h1
/test-driver

View File

@@ -49,6 +49,7 @@ The following people have contributed code to GIMP:
Stephane Chauveau
Zbigniew Chyla
Lars-Peter Clausen
Sven Claussner
Branko Collin
Ed Connel
Piers Cornwell
@@ -100,6 +101,7 @@ The following people have contributed code to GIMP:
Tim Harder
Marcus Heese
Robert Helgesson
Michael Henning
James Henstridge
Eric Hernes
Lukasz Hladowski
@@ -118,6 +120,7 @@ The following people have contributed code to GIMP:
Kristian Jantz
Javier Jardón
Tim Jedlicka
Jehan
Róman Joost
Alexander Jones
Geert Jordaens
@@ -145,6 +148,7 @@ The following people have contributed code to GIMP:
Tom Lechner
Elliot Lee
Marc Lehmann
Simone Karin Lehmann
Ray Lehtiniemi
Tobias Lenz
Frederic Leroy
@@ -166,6 +170,7 @@ The following people have contributed code to GIMP:
Torsten Martinsen
Takeshi Matsuyama
Gordon Matzigkeit
Téo Mazars
Gregory McLean
Mike Melancon
Federico Mena Quintero
@@ -225,6 +230,7 @@ The following people have contributed code to GIMP:
Marco Rossini
Tim Rowley
Karthikeyan S
Daniel Sabo
Mike Schaeffer
John Schlag
Norbert Schmitz
@@ -267,6 +273,7 @@ The following people have contributed code to GIMP:
Brion Vibber
Helvetix Victorinox
Thorsten Vollmer
Clayton Walker
Rebecca Walter
Martin Weber
Rupert Weber
@@ -299,6 +306,7 @@ The following people have contributed art to GIMP:
Mike Schaeffer
Carol Spears
Jakub Steiner
Bernhard Stockmann
William Szilveszter
@@ -308,6 +316,7 @@ The following people have helped to document GIMP:
Žygimantas Beručka
Carey Bunks
Marco Ciampa
Sven Claussner
Dust
Ulf-D. Ehlert
Alessandro Falappa

View File

@@ -88,14 +88,13 @@ part of recent Linux distribution releases.
Patches
-------
The best way to submit patches is to publish your git repository and
ask developers to git-fetch from you.
The best way to submit patches is to provide files created with
git-format-patch.
For bug fixes where the patch is small you can file a bug report at
It is recommended that you file a bug report at
http://bugzilla.gnome.org/ and attach your patch to it as a plain text
file, not compressed. If your patch is reasonably small you can submit
it to the gimp-developer@lists.xcf.berkeley.edu mailing list. You can
create the patch file with git-format-patch
it to the gimp-developer-list@gnome.org mailing list.
If the patch needs to be discussed, you should also consider using the
mailing list instead of Bugzilla because bug reports tend to be hard

14
INSTALL
View File

@@ -57,6 +57,12 @@ header files installed.
and fontconfig 2.2.0 or newer. Older versions are known to have
bugs that seriously affect the stability of GIMP.
On Windows platforms in particular, we recommend fontconfig 2.11.1
or newer. Older versions may end up in broken font handling, due to
inadequate font configuration: font aliases not configured,
synthetic bold/italic variants unavailable, cache folder in temp
directory resulting in slow startups, etc.
7. We use dbus-glib if available. Grab it from
http://dbus.freedesktop.org/releases/dbus-glib/
@@ -71,10 +77,12 @@ header files installed.
9. You may want to install other third party libraries or programs
that are needed for some of the available plug-ins. We recommend
to check that the following libraries are installed: lcms,
libpng, libjpeg, libpoppler, libtiff, webkit, libmng, librsvg,
libwmf, libz, libbzip2, libgs (Ghostscript), libaa and libjasper.
libpng, libjpeg, libpoppler (and poppler-data, optional encoding
package, necessary to import PDF with CJK and cyrillic text),
libtiff, webkit, libmng, librsvg, libwmf, libz, libbzip2, libgs
(Ghostscript), libaa and libjasper.
10. The Python extension requires Python development headers to be
10. The Python extension requires Python 2 development headers to be
present. You will also need PyGTK and the respective development
headers.

View File

@@ -4,7 +4,6 @@ ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS}
SUBDIRS = \
m4macros \
tools \
cursors \
themes \
po \
@@ -30,6 +29,7 @@ SUBDIRS = \
etc \
devel-docs \
docs \
tools \
build
pkgconfigdir = $(libdir)/pkgconfig
@@ -55,6 +55,7 @@ EXTRA_DIST = \
ChangeLog.pre-2-2 \
ChangeLog.pre-2-4 \
ChangeLog.pre-2-6 \
ChangeLog.pre-git \
HACKING \
INSTALL \
LICENSE \
@@ -69,7 +70,8 @@ EXTRA_DIST = \
authors.xml \
authors.xsl \
config.h.win32 \
gimp-zip.in
gimp-zip.in \
gtk-doc.make
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc

779
NEWS
View File

@@ -7,637 +7,320 @@ This is the stable branch of GIMP. No new features are being added
here, just bug-fixes.
Changes in GIMP 2.8.0
=====================
Overview of Changes from GIMP 2.8.14 to GIMP 2.8.16
===================================================
Core:
- Add our own GimpOperationBrightnessContrast because GEGL one is different
- Seek much less when writing XCF
- Don't seek past the end of the file when writing XCF
- Windows: call SetDLLDirectory() for less DLL hell
- Fix velocity parameter on .GIH brushes
- Fix brokenness while transforming certain sets of linked layers
GUI:
- Always show image tabs in single window mode
- Fix switching of dock tabs by DND hovering
- Don't make the scroll area for tags too small
- Fixed a crash in the save dialog
- Fix issue where ruler updates made things very slow on Windows
Plug-ins:
- Fix some GFig rendering issues
Source and build system:
- Depend on Babl 0.1.10, GEGL 0.2.0 and some other new library versions
- Fix several issues in the BMP plug-in
- Make Gfig work with the new brush size behavior again
- Fix font export in the PDF plug-in
- Support layer groups in OpenRaster files
- Fix loading of PSD files with layer groups
General:
- OSX build system fixes
- Bug fixes
- Translation updates
Changes in GIMP 2.7.5
=====================
Overview of Changes from GIMP 2.8.12 to GIMP 2.8.14
===================================================
UI:
General:
- Minor application menu fixes on the Mac
- Make the toolbox arbitrarily resizable again
- Add axis labels to the dynamics curves to make them more obvious
- Fix dockable showing to do the right thing in both MWM and SWM
- Fix some glitches in the tool preset UI, like proper sensitivity
- Fix libtool versioning (forgot to bump gimp_interface_age)
Overview of Changes from GIMP 2.8.10 to GIMP 2.8.12
===================================================
Core:
- Restore autoshrink functionality in the rectangle tools
- Allow smudge to work with dynamic brushes
- Make sure tool presets and tool options are consistent after loading
- Add automatic tags for the folders a file lives in
- Make the default Quick Mask color configurable
- Fix Color Balance so the "range" setting actually makes a difference
- OSX: Fix migration code for old GIMP directories
- Fix brush sizes when used from plug-ins
- Windows: Allow to Explorer-open files with UTF-8 characters in the filename
- Make XCF loading more robust against broken files
Plug-ins:
GUI:
- Proper toplevel item sorting in the help browser
- Use libraries instead of launching programs in file-compressor
- Use the Ghostscript library instead of launching ghostscript
- Allow to switch off antialiasing when importing from PDF
- Embed the page setup in the main print dialog
- Port Gfig to cairo
- Make sure the widget direction matches the GUI language
- Remove the option to disable the warning when closing a modified image
- Fix canvas overlay widgets (like the text options) for tablets
- Make DND work between images in one dockable
Libgimp:
- Add PDB API to modify a lot of paint and ink options
- Make gimp_image_get_name() return the string used for the image title
Plug-ins:
- Make script-fu-server more secure by listening to 127.0.0.1 by
default and add a warning about changing that IP. This breaks the
procedure's API, but for security reasons.
- Bring back proper script-fu translations
General:
- Massively clean up and fix the OSX build and bundle
- Add Jenkins tutorial
- Documentation updates
- Bug fixes
- Translation updates
Overview of Changes from GIMP 2.8.8 to GIMP 2.8.10
==================================================
Core:
- Set manifest as Windows 8 compatible
GUI:
- Indicate if a file was exported in the Quit dialog
- Add shortcuts and hint labels to the close and quit dialogs
that make closing and quitting easier and more consistent
- Rename the File->Export menu labels to match Save/Save as
- Fix keyboard shortcuts on OSX Mavericks
- Don't open lots of progress popups when opening many files
- Correctly restore the hidden state of docks in single window mode
Libgimp:
- Fix exporting an image consisting of a single layer group
- Don't attempt to pick transparent colors
Plug-ins:
- Fix crash in LCMS plugin if RGB profile was missing
General:
- Fix compile on NetBSD (missing -lexecinfo)
- Bug fixes
- Translation updates
Overview of Changes from GIMP 2.8.6 to GIMP 2.8.8
=================================================
Core:
- Make sure indexed images always have a colormap
- Fix language selection via preferences on Windows
- Don't crash on setting a large text size
GUI:
- Keep the same image active when switching between MWM and SWM
- Make sure all dockables are properly resizable (particularly shrinkable)
- Add links to jump directly to Save/Export from the Export/Save
file extension warning dialogs
Libgimp:
- Fix GimpPickButton on OSX
Plug-ins:
- Properly document plug-in-autocrop-layer's PDB interface
- Fix importing of indexed BMPs
General:
- Fix lots of places to use GIO to get proper file sizes and times on windows
- Add an AppData file for GIMP
- Backport lcms2 support from master, because lcms1 is not getting
bug fixes any longer
- Lots of bug fixes
- Lots of translation updates
Overview of Changes from GIMP 2.8.4 to GIMP 2.8.6
=================================================
Core:
- Fix saving to URIs, it was broken to only allow exporting, and fix
save/export of compressed files
- Fix brush spacing for drawing in any direction
- Increase the maximum size of clipboard brushes and patterns to 1024x1024
- Make sure data objects are saved when only their name was changed
GUI:
- Don't allow single-window docks to shrink smaller than their requisition
- Make sure a single-window's right docks keep their size across sessions
- Allow to change the spacing of non-generated brushes again
- In single-window mode, make Escape move the focus to the canvas,
and beep if the focus is already there
- Be smarter about unavailable fonts, and don't crash
- Make clicking the single-window's close button quit GIMP
- Make view-close (Ctrl+W) only close image windows and tabs, not docks
Libgimp:
- Add SIGNED_ROUND() which also rounds negative values correctly
Plug-ins:
- Make GIMP_PLUGIN_DEBUG work again after GLib changed logging
- Fix zealous crop for transparent borders
Installer:
- Add Hungarian translation
Data:
- Add a new set of default brushes and tool presets from Ramon Miranda
Developer documentation:
- Update everything including app/ so all functions appear again
Source and build system:
- Remove the unmaintained makefile.msc build system
- Explicitly link plug-ins to -lm when needed
- Also create .xz tarballs
- Add a default "Color from Gradient" dynamics and tool preset
General:
- Lots of bug fixes
- Tons and tons of translation updates
- Lots of translation updates
Changes in GIMP 2.7.4
=====================
UI:
- Add a close button to image tabs in single-window mode
- Improve the transform tools' undo strings to be more descriptive
- Render the layer's "eye" icon in inconsistent state if the layer is
visible, but one of its parents isn't
- Add proper stacking for canvas items, so things don't hide each other
- Make sure single-window-mode and multi-window-mode are always saved
consistently in sessionrc
Overview of Changes from GIMP 2.8.2 to GIMP 2.8.4
=================================================
Core:
- Fix "render_image_tile_fault: assertion `tile[4] != NULL' failed"
warnings that occurred for some image sizes
- Fix attachment of the floating selection when the gegl projection
is enabled
- Replace heal algorithm with a new one by Jean-Yves Couleaud that
works much better
- Make resource sub-folders show up in UI as tags, allowing users
to easily locate resource collections they may have installed
- Fix graphics tablet canvas interaction by moving from
gdk_pointer_grab() to gtk_grab_add() for most grabs
- Stop using motion hints, they are a concept from the dark ages
- Move the OSX gimpdir to "~/Library/Application Support"
GUI:
- Better names for the default filters in save and export
- Make tool drawing (esp. the brush outline) much more responsive
- Remember the "maximized" state across sessions
- Simplify the splash image code a lot, makes it appear immediately again
- Allow the text tool to start on an image without layers
- Various fixes for text style attribute handling
- Set unconfigured input devices to eraser if GTK+ says they are erasers
- Make language selectable in Preferences on OSX
Libgimp:
- Add a basic paint dynamics PDB interface
- Make libgimp drawable combo boxes aware of layer groups
- Make sure plug-in windows appear on top on OSX
- Fix item width in GimpPageSelector (used e.g. in PDF import)
Plug-ins:
- Make writing color space information to BMP files optional
- PSD loader now reads and imports working paths
- Better default values in the Drop Shadow script
- Fix a whole bunch of bugs in the BMP plug-in
- On OSX, use the system's screenshot utility
Script-Fu:
Installer:
- Lots and lots of undeprecations
Developer documentation:
- Add devel-docs/gegl-porting-plan.txt
- Add Brazilian-Portuguese translation to the Windows installer
Source and build system:
- Make git-version.h generation work in shallow git clones
- Modernize use of autotools a bit, maintainer-mode and pdbgen
are now enabled by default
- Many improvements to the OSX bundle build system
- Support automake 1.13
General:
- Make gimptool install scripts in the correct system-wide directory
- Fix lots and lots of stuff found by static code analysis
- Lots of bug fixes
- Lots of translation updates
Changes in GIMP 2.7.3
=====================
UI:
- Use GimpSpinScales instead of scale entries in all dockable widgets
- Allow the spin scale to control a range larger than its scale's range
- Implement RTL mode in GimpSpinScale
- Add lots of tooltips to tool options
- Allow to drop more things to the empty image window, and simply
create new images from them
- Cage tool: allow to add handle to the cage when clicking on an edge
- Cage tool: allow to remove selected handles from the cage by hitting delete
- Remember column widths in multi-column dock windows
- Support starting GIMP in single-window mode
- When the brush is shared among paint tools, also share all
brush-modifying paint options
- Use ALT+number and ALT+Tab shortcuts to navigate between images
in both single- and multi-window mode
- Make 'Export to' always activatable and fall back to 'Export...' if
no export target has been set yet
- In single-window mode, add new dockable dialogs to the image window
instead of in a new window
- When switching on single-window mode, put docks in the image window
depending on what side of the window they originally had
- When switching off single-window mode, distribute dock windows
better
- Add a canvas item for the transform grid, fixing a major speed
regression, and add the same guides options as in the rectangle tools
- Don't unmaximize the single-window mode image window when closing
images
- Resurrect the "You can drop dockable dialogs here" help string
below the toolbox
- Make pick-and-move with the Move Tool work for layers in a layer
group
Overview of Changes from GIMP 2.8.0 to GIMP 2.8.2
=================================================
Core:
- Add GimpMotionBuffer which abstracts away stroke smoothing behind
a simple API and takes it out of GimpDisplayShell
- Add a GimpIdTable utility class
- Add a GimpDockContainer interface
- Add a GimpSessionManaged interface
- Add GimpCanvasRectangleGuides which makes the rectangle tool's
guides draw properly
- Make tag matching always case-insensitive
- Let the tile-cache-size default to half the physical memory
GUI:
- Mention that the image was exported in the close warning dialog
- Make sure popup windows appear on top on OSX
- Allow file opening by dropping to the OSX dock
- Fix the visibility logic of the export/overwrite menu items
- Remove all "Use GEGL" menu items, they only add bugs and zero function
- Improve performance of display filters, especially color management
- Fix the image window title to comply with the save/export spec
and use the same image name everywhere, not only in the title
- Fix positioning of pasted/dropped stuff to be more reasonable
Libgimp:
- Make libgimp depend on GdkPixbuf
- Add API to create layers from cairo surfaces
- Make it impossible to include individual files from any GIMP
library. This was always forbidden and designed so it most
probably breaks, but now it reliably breaks using #error
- Deprecate the "set_sensitive" logic and use g_object_bind_property()
- Move gimpdir and thumbnails to proper locations on OSX
- Implement relocation on OSX
- Allow to use $(gimp_installation_dir) in config files
Plug-ins:
- Use poppler's cairo API to load PDFs, the pixbuf API is removed
- Port screenshot from GdkPixbuf to cairo
- Fix the annoying parser build warnings in imagemap
- Add a check-for-deprecated-procedures-in-script-fu make target
- Update libpng code to not use deprecated API (file-mng and file-png)
- Add an Item class to pygimp
- Correct/update some labels and defaults in the JPEG plug-in's save dialog UI
- Fix "Bug 596410 - gimp-image-get-filename returns NULL for imported files"
Developer documentation:
- Many updates
- Fix remembering of JPEG load/save defaults
- Revive the page setup dialog on Windows
Source and build system:
- Make cairo a global dependency, starting at libgimpcolor
- Require poppler >= 0.12.4
- Remove gimp-remote for good, it has been disabled for years
- Add Windows installer infrastructure
- Add infrastructure to build GIMP.app on OSX
General:
- Some more undeprecations now that we use GTK+ 2.24
- Fix lots of warnings that are new in -Wall in GCC 4.6
- Lots of bug fixes and cleanup
- Lots of translation updates
Changes in GIMP 2.7.2
=====================
UI:
- A lot of undeprecations due to GTK+ 2.22 and 2.24
- Lots and lots of cairo porting, calls to gdk_draw_* are gone
- Merge the cage transform tool from GSoC
- Remove the old bitmap cursors completely and always use RGBA cursors
also for compat cursors for old X servers
- Add new GimpCanvasItem infrastructure with subclasses for everything
that needs to be drawn on the canvas and port all tools to canvas items,
this is a huge change that touches all tools and almost all display
code, and which finally gets rid of XOR drawing altogether
- Switch from purely idle-rendering the display to something that ensures
a minimum framerate, so we don't fail to update under heavy load
- Make the text tool handle RTL mode better
- Change GimpColorMapEditor to use the newly added proxy GimpPalette
- Replace the brush scale control in tool options by a brush size
one that works in pixels, and does the right thing when the brush
changes
- Add new widget GimpSpinScale which is a scale with number entry,
and use it in all tool options
- Make the brush, pattern etc. selectors in tool options more
compact and allow to directly jump to the editor dialogs
- Make handle sizes in tools consistent
- Add an on-canvas progress and use it for tool progress instead of
the statusbar
- Add a new GimpToolPalette class with lots of code that was
in GimpToolBox
- Allow to properly drop into and after a layer group
- Refactor and clean up the dynamics editor widget, and add colors
for the curves
- Add support for F2 to rename items in lists
- Clean up GimpDeviceStatus internally and visually
- Allow to set GimpToolPreset's icon using the new GimpIconPicker widget
- Make the text tool's style overlay show default values from the
text object if there is no style active at the cursor position/selection
- Show the the text size's unit in the text style overlay
- Make tool dialogs transient to the image window again
- Consistently add a "gimp-" prefix to all window roles
- Make the preset buttons in tool options work on the global tool
presets instead of the removed per-tool preset lists
- Add GimpControllerMouse, which allows to bind extra mouse buttons to
arbitrary actions
Core:
- Add uniform API to turn any GimpItem's outline into a selection
- Add support for color tags in text layers
- Remove the selection_control() stuff from GimpImage and with it
maybe last piece of UI code still not properly separated
- Add more validation code for XCF loading
- Add accessors to GimpPalette and use them globally
- Keep a proxy GimpPalette around for the image's colormap
- Don't scale SVGs when pasting or importing them
- A lot of changes to the input device handling code, partly
merged from the gtk3-port branch, add GimpDeviceManager class
- Add smoothing of paint strokes
- Fix display filters to work on a cairo surface
- Fix and enhance GimpImage's URI/filename handling API
- Unset "removed" flag on items when they get added back to
the image from the undo stack
- Change item creation to properly use GObject properties and
remove item_configure() and drawable_configure()
- Refactor tool event handling and move lots of stuff into
utility functions
- Clean up GimpViewRenderer API
- Implement transforms on group layers
- Clean up the transform tool a lot, and refactor away old junk
- Tool and tool event cleanup: enforce tool activate/halt invariants,
consistently shutdown all tools in control(HALT), and many other
tool fixes
- Remove GimpToolPresets object, this functionality got merged into
the new GimpToolPreset system
- Rename GimpFilteredContainer to GimpTaggedContainer and add a new
GimpFilteredContainer parent class which is a generic filter
- Remove the concept of an "offset" from TileManager and instead
pass around the offsets explicitly when needed, like when
transforming
- Move GimpBezier desc from vectors/ to core/ and add API to create
one from sorted BoundSegs
- Change GimpBrush boundary API to return a GimpBezierDesc
- Add GimpBrushCache object and use it to cache a brush's transformed
pixels and its outline, remove the caching code from GimpBrushCore
- Add GimpBezierDesc based API to GimpScanConvert and use it
GEGL:
- Add operations and gegl infrastructure for the cage tool
- Disable View -> Use GEGL as we will not have time to finish the
GEGL projection code for GIMP 2.8
Libgimp:
- Introduce an "item" type in the PDB and libgimp and deprecate
lots of old API in favor of item API
- Add procedures to create, traverse and manipulate layer trees
- Add more state to the context API, and deprecate functions with
too many parameters in favor of simpler ones that use context states,
particularly the entire transform and selection API
- Move GimpUnitStore and GimpUnitComboBox to libgimpwidgets, and
use them in GimpSizeEntry, deprecate GimpUnitMenu.
- Deprecate gimp_min_colors() and gimp_install_cmap()
- Add API that enables GimpRuler to track motion events by itself
- Add new selection API and deprecate all old selection functions
- Move around and rename all parasite functions, deprecate the old ones
- Add a generated PDB file in the "gimp" namespace and get rid
of "gimpmisc"
- Add unit conversion functions to libgimpbase
- Add function to reset a plug-in's context to default values
Plug-ins:
- Make script-fu server IPv6 aware
- Follow libgimp deprecations in plug-ins and scripts
- Add PDF export plugin
- Lots of cairo porting here too
- UTF-8 fixes in script-fu
- Set the progress to 1.0 when done
- Merge a lot of upstream fixes into script-fu's Tinyscheme
- Add "New Layer" option to MapObject
- Support loading of 16-bit raw PPM files
- Add web-page, a new plug-in which renders images of web pages
- Fix some more plug-ins to not warn if applied on an empty region
Data:
- Remove "Untitled" from palette names entries
Developer documentation:
- Move libgimp documentation from templates to inline comments
- Generate standard deprecated sections
Source and build system:
- Add more code documentation
- Add more unit tests and refactor existing ones to use global
test utility functions
- Add a manifest to executables (app and plug-ins, Win32)
- Depend on GLib 2.28, GTK+ 2.24, Cairo 1.10
- Make WebKit available to all plug-ins, not just the help browser
- Run UI tests on Xvfb if available
- Check for GdkPixbuf separately because it's now a separate library
- Allow tests to use uninstalled plug-ins from the build dir
- Remove, comment out, or build for GIMP_UNSTABLE some stuff that
should not be in a stable release
General:
- Improve safety on Win32 by calling SetDllDirectory() and
SetProcessDEPPolicy()
- Switch from GtkObject::destroy() to GObject::dispose() all over
the place
- Various changes that make maintaining the gtk3-port branch easier,
such as s/GtkAnchorType/GimpHandleAnchor/ and s/GtkObject/GtkAdjustment/
- Don't use gtk_container_add() for adding to GtkBoxes
- Inherit from GtkBox directly, not from GtkHBox/GtkVBox
- Add namespace to the ink blob types and functions
- Remove all useless calls to gtk_range_set_update_policy()
- Use GObject::constructed() instead of GObject::constructor() all
over the place
- Move more members to private and add accessors for them
- Stop using GdkNativeWindow, use guint32 instead
- Plug memory leaks
- Remove ps-menurc, we are not a PS clone
- Use the new g_[s]list_free_full() instead of foreach() and free()
- Don't use newly deprecated GTK+ API
- Use the new GDK_KEY_foo key names
- Lots of bug fixes and cleanup
- Lots of translation updates
Changes in GIMP 2.7.1
=====================
UI:
- Add "lock content" button to the layers, channels and paths dialogs,
make the lock buttons more compact
- Refuse to edit locked items
- Add support for layer groups
- Improve internals and GUI of the save/export functionality
- Move the shortcut dialog's "clear" button into the entry
- Clean up UI code by introducing GimpDockWindow and GimpImageWindow
classes
- Support multi-column dock windows
- Get rid of docking bars, use highlights in existing widget hierarchy instead
- Remove toolbox-window-hint gimprc setting and use dock-window-hint
for both toolbox and docks instead
- Move GimpDock::default-height style property to GimpDockWindow
- Polish save+export path-part precedence rules
- Merge the GSoC 2009 Advanced GUI for Brush Dynamics project
- Default to non-fixed-aspect in Canvas Size dialog
- Add a still incomplete and Single-window mode
- Have an Export button, not Save, in export dialogs
- Improve Free Select Tool handle highlighting
- Support changing user interface language from preferences
- Update ps-menurc with PS CS4 keyboard shortcuts
- Reduce spacing around canvas and use it for the canvas itself
- Put name of active dockables in dock window titles
- Don't have Toolbox in list of Recently Closed Docks, handle that
directly in the Windows menu
- Support selecting and tagging multiple objects in resource lists
- Improve on-canvas text editing and text attribute setting
- Add GimpContainerTreeStore and use it in all GtkTreeStore based views
- Add a new default "automatic" tab style that makes sure dockable tabs
always show as much detail as possible
- Remove the dockable title bar and add the menu arrow button next to the
notebook tabs
- Add an icon for the desaturate tool
- Add 'Rule of fifths' crop guide overlay
- Make Alt+Click on layers not affect active layer
Core:
- Make all GimpItems lockable so their contents can't be changed
- Make more sense when naming imported layers
- Make group layers work except for layer masks and save them in
the XCF
- Change GimpProjectable::update to GimpProjectable:invalidate
- Make sure we don't mix font backends (and crash) by explicitly
asking for FT/Fontconfig backends
- Move members of GimpObject to a private struct
- gimp_object_get_name() takes a gconstpointer now, remove casts
from all callers
- Let drawables connect to their floating selection's "update" signal
instead of letting the image do this job
- Fix brush rotation artifacts at even 90 degree rotation
- Don't leak shared tile memory on Solaris
- Add a PDB procedure to access a text layer's markup
- Remove legacy cruft from pdbgen and make sure number ranges are correct
- Move all image creation functions to a common file
- Add translation context to all undo descriptions
GEGL:
- Make sure all nodes are added to their resp. graphs
- Use GEGL for layer scaling if use-gegl is TRUE
Plug-ins:
- Updated script-fu's scheme to latest upstream fixes
- Don't store image-specific print settings globally
- Add fundamental OpenRaster (.ora) import and export support
- Add RGB565 support to the csource plug-in
Data:
- Add texture/grunge brushes made by Johannes Engelhardt
Developer documentation:
- Explain GimpContext
- Add SVG graphic with GIMP application core module dependencies
- Add a schedule for 2.8 development
Source and build system:
- Add more code documentation
- Clean up subsystem linking dependencies in app/
- Add unit testing framework in app/tests/ and some basic tests,
including basic UI tests and XCF tests
- Tentatively introduce usage of using Glade + GtkBuilder
- Depend on GLib 2.24.0 and GTK+ 2.20.0
- Add git commit hash in --verbose --version output
- Don't version control gtk-doc.m4, get it from gtkdocize
- Add GimpObject tracking code
- Plug memory leaks
- Lots of bug fixes and cleanup
- Lots of translation updates
Changes in GIMP 2.7.0
=====================
UI:
- Change the Text Tool to perform text editing on-canvas (GSoC 2008)
and add the ability to mix different text styles in the same layer
- Add support for tagging GIMP resources such as brushes and allow
filtering based on these tags (GSoC 2008)
- Separate the activities of saving an image and exporting it, there is
now a 'File->Export...' for example
- Port file plug-ins to new export API which gets rid of many
annoying export dialogs
- Add a simple parser to size entry widgets, images can be scaled
to e.g. "50%" or "2 * 37px + 10in"
- Arrange layer modes into more logical and useful groups
- Added support for rotation of brushes
- Make the Pointer dockable show information about selection position
and size
- Get rid of the Tools dockable and move toolbox configuration to
Preferences
- Allow closing the toolbox without closing the whole application
- Add status bar feedback for keyboard changes to brush parameters
- Add diagonal guides to the Crop Tool
- New docks are created at the pointer position
- Add support for printing crop marks for images
- Move 'Text along path' from tool options to text context menu
- Change default shortcuts for "Shrink Wrap" and "Fit in Window" to
Ctrl+J and Ctrl+Shift+J respectively since the previous shortcuts
are now used for the save+export feature
- Make Alt+Click on layers in Layers dockable create a selection from
the layer
- Allow to specify written language in the Text Tool
- Support custom mapping curves for input device properties like "Pressure"
- New desktop launcher icon
- Add 'Windows→Hide docks' menu item that does what 'Tab' does and also displays
its state. Make the state persistent across sessions, too.
- Make dock window title separators translatable
Plug-ins:
- Map the 'Linear Dodge' layer mode in PSD files to the 'Addition'
layer mode in GIMP
- Add JPEG2000 load plug-in
- Add X11 mouse cursor plug-in
- Add support for loading 16bit (RGB565) raw data
- Add palette exporter for CSS, PHP, Python, txt and Java, accessed
through palette context menu
- Add plug-in API for getting image URI, for manipulating size of
text layers, for getting and setting text layer hint, and for
unified export dialog appearance
- Add an 'As Animation' toggle to the GIF export options
- Add 'active_vectors' getsetter to Python 'gimp.Image'
Data:
- Add large variants of round brushes and remove duplicate and
useless brushes
- Add "FG to BG (Hardedge)" gradient
GEGL:
- Port the projection code, the code that composes a single image
from a stack of layers, to GEGL
- Port layer modes to GEGL
- Port the floating selection code to GEGL
- Refactor the layer stack code to prepare for layer groups later
- Prepare better and more intuitive handling of the floating
selection
- Add File->Debug->Show Image Graph that show the GEGL graph of an
image
- Allow to benchmark projection performance with
File->Debug->Benchmark Projection
- When using GEGL for the projection, use CIELCH instead of HSV/HSL
for color based layer modes
Core:
- Make painting strokes Catmull-Rom Spline interpolated
- Add support for arbitrary affine transforms of brushes
- Add support for brush dynamics to depend on tilt
- Add aspect ratio to brush dynamics
- Add infrastructure to soon support vector layers (GSoC 2006)
- Rearrange legacy layer mode code to increase maintainability
- Drop support for the obsolete GnomeVFS file-uri backend
- Allow to dump keyboard shortcuts with File->Debug->Dump Keyboard
Shortcuts
- Prepare data structures for layer groups
- Remove gimprc setting "menu-mnemonics",
"GtkSettings:gtk-enable-mnemonics" shall be used instead
- Remove "transient-docks" gimprc setting, the 'Utility window' hint
and a sane window manager does a better job
- Remove "web-browser" gimprc setting and use gtk_show_uri() instead
General:
- Changed license to (L)GPLv3+
- Use the automake 1.11 feature 'silent build rules' by default
- Lots of bug fixes and cleanup
- Lots of bug fixes
- List of translation updates

View File

@@ -89,8 +89,14 @@ libapp_a_SOURCES = $(libapp_sources) $(libapp_generated_sources)
gimp_2_8_SOURCES = $(libapp_sources) main.c
if PLATFORM_OSX
framework_cocoa = -framework Cocoa
endif
if OS_WIN32
win32_ldflags = -mwindows $(WIN32_LARGE_ADDRESS_AWARE)
win32_ldflags = -mwindows -Wl,--tsaware $(WIN32_LARGE_ADDRESS_AWARE)
else
libm = -lm
endif
if USE_BINRELOC
@@ -142,7 +148,6 @@ calm_down_linker = \
AM_LDFLAGS = \
$(munix) \
$(CARBON_LDFLAGS) \
$(calm_down_linker) \
$(workaround_that_core_depends_on_xcf) \
$(workaround_that_core_depends_on_pdb) \
@@ -178,22 +183,27 @@ gimpconsoleldadd = \
$(GEGL_LIBS) \
$(GLIB_LIBS) \
$(INTLLIBS) \
$(RT_LIBS)
$(RT_LIBS) \
$(libm)
gimp_2_8_LDFLAGS = $(AM_LDFLAGS) $(win32_ldflags)
gimp_2_8_LDFLAGS = \
$(AM_LDFLAGS) \
$(win32_ldflags) \
$(framework_cocoa)
gimp_2_8_LDADD = \
gui/libappgui.a \
menus/libappmenus.a \
actions/libappactions.a \
dialogs/libappdialogs.a \
tools/libapptools.a \
display/libappdisplay.a \
widgets/libappwidgets.a \
$(libgimpwidgets) \
$(GTK_LIBS) \
$(DBUS_GLIB_LIBS) \
$(gimpconsoleldadd) \
gui/libappgui.a \
menus/libappmenus.a \
actions/libappactions.a \
dialogs/libappdialogs.a \
tools/libapptools.a \
display/libappdisplay.a \
widgets/libappwidgets.a \
$(libgimpwidgets) \
$(GTK_LIBS) \
$(GTK_MAC_INTEGRATION_LIBS) \
$(DBUS_GLIB_LIBS) \
$(gimpconsoleldadd) \
$(GIMPRC)

View File

@@ -42,7 +42,7 @@
"GNU General Public License for more details." \
"\n\n" \
"You should have received a copy of the GNU General Public License " \
"along with GIMP. If not, see <http://www.gnu.org/licenses/>.")
"along with GIMP. If not, see http://www.gnu.org/licenses/.")
#endif /* __ABOUT_H__ */

View File

@@ -80,17 +80,12 @@ buffers_paste_as_new_cmd_callback (GtkAction *action,
if (buffer && gimp_container_have (container, GIMP_OBJECT (buffer)))
{
GimpImage *image = gimp_context_get_image (context);
GimpImage *new_image;
if (image)
{
GimpImage *new_image;
new_image = gimp_image_new_from_buffer (image->gimp, image, buffer);
gimp_create_display (image->gimp, new_image,
GIMP_UNIT_PIXEL, 1.0);
g_object_unref (new_image);
}
new_image = gimp_image_new_from_buffer (context->gimp, NULL, buffer);
gimp_create_display (context->gimp, new_image,
GIMP_UNIT_PIXEL, 1.0);
g_object_unref (new_image);
}
}

View File

@@ -109,7 +109,7 @@ colormap_actions_update (GimpActionGroup *group,
gimp_action_group_set_action_color (group, action, color, FALSE);
SET_SENSITIVE ("colormap-edit-color",
image && indexed);
image && indexed && num_colors > 0);
SET_SENSITIVE ("colormap-add-color-from-fg",
image && indexed && num_colors < 256);
SET_SENSITIVE ("colormap-add-color-from-bg",

View File

@@ -39,8 +39,6 @@
#include "core/gimpprojectable.h"
#include "core/gimpprojection.h"
#include "file/file-utils.h"
#include "gegl/gimp-gegl-utils.h"
#include "display/gimpdisplay.h"
@@ -351,7 +349,7 @@ debug_show_image_graph (GimpImage *source_image)
/* Create a new image of the result */
tiles = gimp_buffer_to_tiles (buffer);
new_name = g_strdup_printf ("%s GEGL graph",
file_utils_uri_display_name (gimp_image_get_uri_or_untitled (source_image)));
gimp_image_get_display_name (source_image));
new_image = gimp_create_image (gimp,
tile_manager_width (tiles),
tile_manager_height (tiles),

View File

@@ -261,13 +261,18 @@ static const GimpStringActionEntry dialogs_toplevel_actions[] =
GIMP_HELP_TIPS_DIALOG },
{ "dialogs-about", GTK_STOCK_ABOUT,
#if defined (G_OS_WIN32)
NC_("dialogs-action", "About GIMP"), NULL,
#elif defined (PLATFORM_OSX)
NC_("dialogs-action", "About"), NULL,
#else /* UNIX: use GNOME HIG */
NC_("dialogs-action", "_About"), NULL,
#endif
NC_("dialogs-action", "About GIMP"),
"gimp-about-dialog",
GIMP_HELP_ABOUT_DIALOG }
};
static gboolean
dialogs_actions_toolbox_exists (Gimp *gimp)
{

View File

@@ -46,7 +46,7 @@ static const GimpActionEntry dock_actions[] =
GIMP_HELP_DOCK_CHANGE_SCREEN },
{ "dock-close", GTK_STOCK_CLOSE,
NC_("dock-action", "Close Dock"), NULL, NULL,
NC_("dock-action", "Close Dock"), "", NULL,
G_CALLBACK (window_close_cmd_callback),
GIMP_HELP_DOCK_CLOSE },

View File

@@ -263,18 +263,15 @@ drawable_flip_cmd_callback (GtkAction *action,
break;
}
if (gimp_item_get_linked (item))
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
GIMP_ITEM_GET_CLASS (item)->flip_desc);
gimp_item_flip (item, context,
(GimpOrientationType) value, axis, FALSE);
if (gimp_item_get_linked (item))
{
gimp_item_linked_flip (item, context,
(GimpOrientationType) value, axis, FALSE);
gimp_image_undo_group_end (image);
}
else
{
gimp_item_flip (item, context,
(GimpOrientationType) value, axis, FALSE);
}
gimp_image_flush (image);
@@ -302,21 +299,18 @@ drawable_rotate_cmd_callback (GtkAction *action,
center_x = ((gdouble) off_x + (gdouble) gimp_item_get_width (item) / 2.0);
center_y = ((gdouble) off_y + (gdouble) gimp_item_get_height (item) / 2.0);
if (gimp_item_get_linked (item))
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
GIMP_ITEM_GET_CLASS (item)->rotate_desc);
if (GIMP_IS_CHANNEL (item))
clip_result = TRUE;
gimp_item_rotate (item, context, (GimpRotationType) value,
center_x, center_y, clip_result);
if (gimp_item_get_linked (item))
{
gimp_item_linked_rotate (item, context, (GimpRotationType) value,
center_x, center_y, FALSE);
gimp_image_undo_group_end (image);
}
else
{
gimp_item_rotate (item, context, (GimpRotationType) value,
center_x, center_y, clip_result);
}
gimp_image_flush (image);

View File

@@ -143,7 +143,7 @@ static const GimpEnumActionEntry file_save_actions[] =
GIMP_HELP_FILE_SAVE },
{ "file-export-to", NULL,
NC_("file-action", "Export to"), "<primary>E",
NC_("file-action", "Export"), "<primary>E",
NC_("file-action", "Export the image again"),
GIMP_SAVE_MODE_EXPORT_TO, FALSE,
GIMP_HELP_FILE_EXPORT_TO },
@@ -155,7 +155,7 @@ static const GimpEnumActionEntry file_save_actions[] =
GIMP_HELP_FILE_OVERWRITE },
{ "file-export", NULL,
NC_("file-action", "Export..."), "<primary><shift>E",
NC_("file-action", "Export As..."), "<primary><shift>E",
NC_("file-action", "Export the image to various file formats such as PNG or JPEG"),
GIMP_SAVE_MODE_EXPORT, FALSE,
GIMP_HELP_FILE_EXPORT }
@@ -261,9 +261,9 @@ file_actions_update (GimpActionGroup *group,
if (image)
{
drawable = gimp_image_get_active_drawable (image);
source = gimp_image_get_imported_uri (image);
export = gimp_image_get_exported_uri (image);
drawable = gimp_image_get_active_drawable (image);
source = gimp_image_get_imported_uri (image);
export = gimp_image_get_exported_uri (image);
}
show_overwrite =
@@ -303,11 +303,11 @@ file_actions_update (GimpActionGroup *group,
else
{
gimp_action_group_set_action_label (group,
"file-export-to", _("Export to"));
"file-export-to", _("Export"));
}
/* needed for the empty display */
SET_SENSITIVE ("file-close-all", image);
SET_SENSITIVE ("file-close-all", image);
#undef SET_SENSITIVE
}

View File

@@ -65,31 +65,38 @@
/* local function prototypes */
static void file_open_dialog_show (Gimp *gimp,
GtkWidget *parent,
const gchar *title,
GimpImage *image,
const gchar *uri,
gboolean open_as_layers);
static void file_save_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent,
const gchar *title,
gboolean save_a_copy,
gboolean close_after_saving);
static void file_export_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent);
static void file_save_dialog_destroyed (GtkWidget *dialog,
GimpImage *image);
static void file_export_dialog_destroyed (GtkWidget *dialog,
GimpImage *image);
static void file_new_template_callback (GtkWidget *widget,
const gchar *name,
gpointer data);
static void file_revert_confirm_response (GtkWidget *dialog,
gint response_id,
GimpDisplay *display);
static void file_open_dialog_show (Gimp *gimp,
GtkWidget *parent,
const gchar *title,
GimpImage *image,
const gchar *uri,
gboolean open_as_layers);
static GtkWidget * file_save_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent,
const gchar *title,
gboolean save_a_copy,
gboolean close_after_saving,
GimpDisplay *display);
static GtkWidget * file_export_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent);
static void file_save_dialog_response (GtkWidget *dialog,
gint response_id,
gpointer data);
static void file_save_dialog_destroyed (GtkWidget *dialog,
GimpImage *image);
static void file_export_dialog_response (GtkWidget *dialog,
gint response_id,
gpointer data);
static void file_export_dialog_destroyed (GtkWidget *dialog,
GimpImage *image);
static void file_new_template_callback (GtkWidget *widget,
const gchar *name,
gpointer data);
static void file_revert_confirm_response (GtkWidget *dialog,
gint response_id,
GimpDisplay *display);
@@ -252,7 +259,7 @@ file_save_cmd_callback (GtkAction *action,
gimp, image, uri,
save_proc,
GIMP_RUN_WITH_LAST_VALS,
TRUE, FALSE, TRUE);
TRUE, FALSE, FALSE, TRUE);
break;
}
@@ -270,13 +277,13 @@ file_save_cmd_callback (GtkAction *action,
case GIMP_SAVE_MODE_SAVE_AS:
file_save_dialog_show (gimp, image, widget,
_("Save Image"), FALSE,
save_mode == GIMP_SAVE_MODE_SAVE_AND_CLOSE);
save_mode == GIMP_SAVE_MODE_SAVE_AND_CLOSE, display);
break;
case GIMP_SAVE_MODE_SAVE_A_COPY:
file_save_dialog_show (gimp, image, widget,
_("Save a Copy of the Image"), TRUE,
FALSE);
FALSE, display);
break;
case GIMP_SAVE_MODE_EXPORT:
@@ -286,12 +293,14 @@ file_save_cmd_callback (GtkAction *action,
case GIMP_SAVE_MODE_EXPORT_TO:
case GIMP_SAVE_MODE_OVERWRITE:
{
const gchar *uri = NULL;
GimpPlugInProcedure *export_proc;
const gchar *uri = NULL;
GimpPlugInProcedure *export_proc = NULL;
gboolean overwrite = FALSE;
if (save_mode == GIMP_SAVE_MODE_EXPORT_TO)
if (save_mode == GIMP_SAVE_MODE_EXPORT_TO)
{
uri = gimp_image_get_exported_uri (image);
uri = gimp_image_get_exported_uri (image);
export_proc = gimp_image_get_export_proc (image);
if (! uri)
{
@@ -299,13 +308,17 @@ file_save_cmd_callback (GtkAction *action,
file_export_dialog_show (gimp, image, widget);
break;
}
overwrite = FALSE;
}
else if (save_mode == GIMP_SAVE_MODE_OVERWRITE)
{
uri = gimp_image_get_imported_uri (image);
overwrite = TRUE;
}
if (uri)
if (uri && ! export_proc)
{
export_proc =
file_procedure_find (image->gimp->plug_in_manager->export_procs,
@@ -327,7 +340,9 @@ file_save_cmd_callback (GtkAction *action,
gimp, image, uri_copy,
export_proc,
GIMP_RUN_WITH_LAST_VALS,
FALSE, TRUE, TRUE);
FALSE,
overwrite, ! overwrite,
TRUE);
g_free (uri_copy);
}
}
@@ -371,8 +386,7 @@ file_revert_cmd_callback (GtkAction *action,
GimpDisplay *display;
GimpImage *image;
GtkWidget *dialog;
const gchar *uri = NULL;
const gchar *source = NULL;
const gchar *uri;
return_if_no_display (display, data);
image = gimp_display_get_image (display);
@@ -380,14 +394,11 @@ file_revert_cmd_callback (GtkAction *action,
uri = gimp_image_get_uri (image);
if (! uri)
{
uri = gimp_image_get_imported_uri (image);
source = uri;
}
uri = gimp_image_get_imported_uri (image);
dialog = g_object_get_data (G_OBJECT (image), REVERT_DATA_KEY);
if (! uri && ! source)
if (! uri)
{
gimp_message_literal (image->gimp,
G_OBJECT (display), GIMP_MESSAGE_ERROR,
@@ -400,7 +411,6 @@ file_revert_cmd_callback (GtkAction *action,
}
else
{
gchar *basename;
gchar *filename;
dialog =
@@ -427,18 +437,13 @@ file_revert_cmd_callback (GtkAction *action,
G_CALLBACK (file_revert_confirm_response),
display);
if (! source)
basename = file_utils_uri_display_basename (uri);
else
basename = g_strdup (gimp_image_get_uri_or_untitled (image));
filename = file_utils_uri_display_name (uri);
gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box,
_("Revert '%s' to '%s'?"),
basename, filename);
gimp_image_get_display_name (image),
filename);
g_free (filename);
g_free (basename);
gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box,
_("By reverting the image to the state saved "
@@ -525,23 +530,21 @@ file_open_dialog_show (Gimp *gimp,
gimp_file_dialog_set_open_image (GIMP_FILE_DIALOG (dialog),
image, open_as_layers);
parent = gtk_widget_get_toplevel (parent);
if (GTK_IS_WINDOW (parent))
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (parent));
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (gtk_widget_get_toplevel (parent)));
gtk_window_present (GTK_WINDOW (dialog));
}
}
static void
static GtkWidget *
file_save_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent,
const gchar *title,
gboolean save_a_copy,
gboolean close_after_saving)
gboolean close_after_saving,
GimpDisplay *display)
{
GtkWidget *dialog;
@@ -558,11 +561,14 @@ file_save_dialog_show (Gimp *gimp,
if (dialog)
{
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (parent));
GTK_WINDOW (gtk_widget_get_toplevel (parent)));
g_object_set_data_full (G_OBJECT (image),
"gimp-file-save-dialog", dialog,
(GDestroyNotify) gtk_widget_destroy);
g_signal_connect (dialog, "response",
G_CALLBACK (file_save_dialog_response),
image);
g_signal_connect (dialog, "destroy",
G_CALLBACK (file_save_dialog_destroyed),
image);
@@ -575,10 +581,44 @@ file_save_dialog_show (Gimp *gimp,
gimp_file_dialog_set_save_image (GIMP_FILE_DIALOG (dialog),
gimp, image, save_a_copy, FALSE,
close_after_saving);
close_after_saving, GIMP_OBJECT (display));
gtk_window_present (GTK_WINDOW (dialog));
}
return dialog;
}
static void
file_save_dialog_response (GtkWidget *dialog,
gint response_id,
gpointer data)
{
if (response_id == FILE_SAVE_RESPONSE_OTHER_DIALOG)
{
GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog);
GtkWindow *parent;
GtkWidget *other;
gchar *folder;
gchar *uri;
gchar *name;
parent = gtk_window_get_transient_for (GTK_WINDOW (dialog));
folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
name = file_utils_uri_display_basename (uri);
g_free (uri);
other = file_export_dialog_show (file_dialog->image->gimp,
file_dialog->image,
GTK_WIDGET (parent));
gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (other), folder);
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (other), name);
g_free (folder);
g_free (name);
}
}
static void
@@ -589,7 +629,7 @@ file_save_dialog_destroyed (GtkWidget *dialog,
g_object_set_data (G_OBJECT (image), "gimp-file-save-dialog", NULL);
}
static void
static GtkWidget *
file_export_dialog_show (Gimp *gimp,
GimpImage *image,
GtkWidget *parent)
@@ -609,11 +649,14 @@ file_export_dialog_show (Gimp *gimp,
if (dialog)
{
gtk_window_set_transient_for (GTK_WINDOW (dialog),
GTK_WINDOW (parent));
GTK_WINDOW (gtk_widget_get_toplevel (parent)));
g_object_set_data_full (G_OBJECT (image),
"gimp-file-export-dialog", dialog,
(GDestroyNotify) gtk_widget_destroy);
g_signal_connect (dialog, "response",
G_CALLBACK (file_export_dialog_response),
image);
g_signal_connect (dialog, "destroy",
G_CALLBACK (file_export_dialog_destroyed),
image);
@@ -623,14 +666,47 @@ file_export_dialog_show (Gimp *gimp,
if (dialog)
{
gimp_file_dialog_set_save_image (GIMP_FILE_DIALOG (dialog),
gimp,
image,
FALSE,
TRUE,
FALSE);
gimp, image, FALSE, TRUE,
FALSE, NULL);
gtk_window_present (GTK_WINDOW (dialog));
}
return dialog;
}
static void
file_export_dialog_response (GtkWidget *dialog,
gint response_id,
gpointer data)
{
if (response_id == FILE_SAVE_RESPONSE_OTHER_DIALOG)
{
GimpFileDialog *file_dialog = GIMP_FILE_DIALOG (dialog);
GtkWindow *parent;
GtkWidget *other;
gchar *folder;
gchar *uri;
gchar *name;
parent = gtk_window_get_transient_for (GTK_WINDOW (dialog));
folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dialog));
uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
name = file_utils_uri_display_basename (uri);
g_free (uri);
other = file_save_dialog_show (file_dialog->image->gimp,
file_dialog->image,
GTK_WIDGET (parent),
_("Save Image"),
FALSE, FALSE, NULL);
gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (other), folder);
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (other), name);
g_free (folder);
g_free (name);
}
}
static void

View File

@@ -487,9 +487,20 @@ image_flatten_image_cmd_callback (GtkAction *action,
gpointer data)
{
GimpImage *image;
GtkWidget *widget;
GError *error = NULL;
return_if_no_image (image, data);
return_if_no_widget (widget, data);
if (! gimp_image_flatten (image, action_data_get_context (data), &error))
{
gimp_message_literal (image->gimp,
G_OBJECT (widget), GIMP_MESSAGE_WARNING,
error->message);
g_clear_error (&error);
return;
}
gimp_image_flatten (image, action_data_get_context (data));
gimp_image_flush (image);
}

View File

@@ -387,7 +387,8 @@ select_stroke_last_vals_cmd_callback (GtkAction *action,
options = gimp_stroke_options_new (image->gimp, context, TRUE);
if (! gimp_item_stroke (GIMP_ITEM (gimp_image_get_mask (image)),
drawable, context, options, FALSE, TRUE, NULL, &error))
drawable, context, options, NULL,
TRUE, NULL, &error))
{
gimp_message_literal (image->gimp,
G_OBJECT (widget), GIMP_MESSAGE_WARNING,

View File

@@ -136,6 +136,14 @@ static const GimpEnumActionEntry tools_paint_brush_size_actions[] =
"Increase Brush Size More", NULL, NULL,
GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
NULL },
{ "tools-paint-brush-size-decrease-percent", GIMP_STOCK_TOOL_PAINTBRUSH,
"Decrease Brush Size Relative", NULL, NULL,
GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
NULL },
{ "tools-paint-brush-size-increase-percent", GIMP_STOCK_TOOL_PAINTBRUSH,
"Increase Brush Size Relative", NULL, NULL,
GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
NULL },
};
static const GimpEnumActionEntry tools_paint_brush_angle_actions[] =
@@ -172,15 +180,6 @@ static const GimpEnumActionEntry tools_paint_brush_angle_actions[] =
"Increase Brush Angle More", NULL, NULL,
GIMP_ACTION_SELECT_SKIP_NEXT, FALSE,
NULL },
{ "tools-paint-brush-size-decrease-percent", GIMP_STOCK_TOOL_PAINTBRUSH,
"Decrease Brush Size Relative", NULL, NULL,
GIMP_ACTION_SELECT_PERCENT_PREVIOUS, FALSE,
NULL },
{ "tools-paint-brush-size-increase-percent", GIMP_STOCK_TOOL_PAINTBRUSH,
"Increase Brush Size Relative", NULL, NULL,
GIMP_ACTION_SELECT_PERCENT_NEXT, FALSE,
NULL },
};
static const GimpEnumActionEntry tools_paint_brush_aspect_ratio_actions[] =

View File

@@ -429,7 +429,8 @@ vectors_stroke_last_vals_cmd_callback (GtkAction *action,
else
options = gimp_stroke_options_new (image->gimp, context, TRUE);
if (! gimp_item_stroke (GIMP_ITEM (vectors), drawable, context, options, FALSE,
if (! gimp_item_stroke (GIMP_ITEM (vectors),
drawable, context, options, NULL,
TRUE, NULL, &error))
{
gimp_message_literal (image->gimp, G_OBJECT (widget),

View File

@@ -79,9 +79,9 @@ static const GimpActionEntry view_actions[] =
GIMP_HELP_VIEW_NEW },
{ "view-close", GTK_STOCK_CLOSE,
NC_("view-action", "_Close"), "<primary>W",
NC_("view-action", "Close this image window"),
G_CALLBACK (window_close_cmd_callback),
NC_("view-action", "_Close View"), "<primary>W",
NC_("view-action", "Close the active image view"),
G_CALLBACK (view_close_cmd_callback),
GIMP_HELP_FILE_CLOSE },
{ "view-zoom-fit-in", GTK_STOCK_ZOOM_FIT,

View File

@@ -49,6 +49,7 @@
#include "display/gimpdisplayshell-scale.h"
#include "display/gimpdisplayshell-scale-dialog.h"
#include "display/gimpdisplayshell-scroll.h"
#include "display/gimpdisplayshell-close.h"
#include "display/gimpimagewindow.h"
#include "actions.h"
@@ -92,6 +93,23 @@ view_new_cmd_callback (GtkAction *action,
shell->unit, gimp_zoom_model_get_factor (shell->zoom));
}
void
view_close_cmd_callback (GtkAction *action,
gpointer data)
{
GimpDisplay *display;
GimpDisplayShell *shell;
GimpImage *image;
return_if_no_display (display, data);
shell = gimp_display_get_shell (display);
image = gimp_display_get_image (display);
/* Check for the image so we don't close the last display. */
if (image)
gimp_display_shell_close (shell, FALSE);
}
void
view_zoom_fit_in_cmd_callback (GtkAction *action,
gpointer data)

View File

@@ -21,6 +21,8 @@
void view_new_cmd_callback (GtkAction *action,
gpointer data);
void view_close_cmd_callback (GtkAction *action,
gpointer data);
void view_zoom_fit_in_cmd_callback (GtkAction *action,
gpointer data);

View File

@@ -33,8 +33,6 @@
#include "core/gimpimage.h"
#include "core/gimplist.h"
#include "file/file-utils.h"
#include "widgets/gimpactiongroup.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpdock.h"
@@ -295,19 +293,12 @@ windows_actions_image_notify (GimpDisplay *display,
}
{
const gchar *uri;
gchar *filename;
gchar *basename;
const gchar *display_name;
gchar *escaped;
gchar *title;
uri = gimp_image_get_uri_or_untitled (image);
filename = file_utils_uri_display_name (uri);
basename = file_utils_uri_display_basename (uri);
escaped = gimp_escape_uline (basename);
g_free (basename);
display_name = gimp_image_get_display_name (image);
escaped = gimp_escape_uline (display_name);
title = g_strdup_printf ("%s-%d.%d", escaped,
gimp_image_get_ID (image),
@@ -316,12 +307,11 @@ windows_actions_image_notify (GimpDisplay *display,
g_object_set (action,
"label", title,
"tooltip", filename,
"tooltip", gimp_image_get_display_path (image),
"viewable", image,
"context", gimp_get_user_context (group->gimp),
NULL);
g_free (filename);
g_free (title);
}

View File

@@ -72,12 +72,12 @@
/* local prototypes */
static void app_init_update_noop (const gchar *text1,
const gchar *text2,
gdouble percentage);
static gboolean app_exit_after_callback (Gimp *gimp,
gboolean kill_it,
GMainLoop *loop);
static void app_init_update_noop (const gchar *text1,
const gchar *text2,
gdouble percentage);
static gboolean app_exit_after_callback (Gimp *gimp,
gboolean kill_it,
GMainLoop **loop);
/* public functions */
@@ -149,6 +149,7 @@ app_run (const gchar *full_prog_name,
Gimp *gimp;
GimpBaseConfig *config;
GMainLoop *loop;
GMainLoop *run_loop;
gboolean swap_is_ok;
/* Create an instance of the "Gimp" object which is the root of the
@@ -234,6 +235,12 @@ app_run (const gchar *full_prog_name,
*/
gimp_rc_set_autosave (GIMP_RC (gimp->edit_config), TRUE);
loop = run_loop = g_main_loop_new (NULL, FALSE);
g_signal_connect_after (gimp, "exit",
G_CALLBACK (app_exit_after_callback),
&run_loop);
/* Load the images given on the command-line.
*/
if (filenames)
@@ -241,20 +248,21 @@ app_run (const gchar *full_prog_name,
gint i;
for (i = 0; filenames[i] != NULL; i++)
file_open_from_command_line (gimp, filenames[i], as_new);
{
if (run_loop)
file_open_from_command_line (gimp, filenames[i], as_new);
}
}
batch_run (gimp, batch_interpreter, batch_commands);
if (run_loop)
batch_run (gimp, batch_interpreter, batch_commands);
loop = g_main_loop_new (NULL, FALSE);
g_signal_connect_after (gimp, "exit",
G_CALLBACK (app_exit_after_callback),
loop);
gimp_threads_leave (gimp);
g_main_loop_run (loop);
gimp_threads_enter (gimp);
if (run_loop)
{
gimp_threads_leave (gimp);
g_main_loop_run (loop);
gimp_threads_enter (gimp);
}
g_main_loop_unref (loop);
@@ -279,9 +287,9 @@ app_init_update_noop (const gchar *text1,
}
static gboolean
app_exit_after_callback (Gimp *gimp,
gboolean kill_it,
GMainLoop *loop)
app_exit_after_callback (Gimp *gimp,
gboolean kill_it,
GMainLoop **loop)
{
if (gimp->be_verbose)
g_print ("EXIT: %s\n", G_STRFUNC);
@@ -297,7 +305,10 @@ app_exit_after_callback (Gimp *gimp,
#ifdef GIMP_UNSTABLE
g_main_loop_quit (loop);
if (g_main_loop_is_running (*loop))
g_main_loop_quit (*loop);
*loop = NULL;
#else

View File

@@ -29,7 +29,7 @@
#include <process.h>
#endif
#ifdef G_OS_UNIX
#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H)
/* For get_backtrace() */
#include <stdlib.h>
#include <string.h>
@@ -112,7 +112,7 @@ get_physical_memory_size (void)
char *
get_backtrace (void)
{
#ifdef G_OS_UNIX
#if defined(G_OS_UNIX) && defined(HAVE_EXECINFO_H)
void *functions[MAX_FUNC];
char **function_names;
int n_functions;

View File

@@ -345,6 +345,18 @@ pixel_surround_get_data (PixelSurround *surround,
return tile_data_pointer (surround->tile, x, y);
}
if (x < 0)
*w = MIN (- x, surround->w);
else
*w = surround->w;
if (y < 0)
*h = MIN (- y, surround->h);
else
*h = surround->h;
*rowstride = surround->rowstride;
if (surround->mode == PIXEL_SURROUND_SMEAR)
{
const guchar *edata;
@@ -392,28 +404,17 @@ pixel_surround_get_data (PixelSurround *surround,
case (TOP):
case (BOTTOM):
pixel_surround_fill_row (surround, edata, ew);
*w = MIN (*w, ew);
break;
case (LEFT):
case (RIGHT):
pixel_surround_fill_col (surround, edata, estride, eh);
*h = MIN (*h, eh);
break;
}
}
/* return a pointer to the virtual background tile */
if (x < 0)
*w = MIN (- x, surround->w);
else
*w = surround->w;
if (y < 0)
*h = MIN (- y, surround->h);
else
*h = surround->h;
*rowstride = surround->rowstride;
return surround->bg;
}

View File

@@ -190,6 +190,9 @@ stageone (lab *points,
const gint curdim = depth % dims;
gfloat min, max;
gfloat curval;
gfloat l = 0;
gfloat a = 0;
gfloat b = 0;
gint i;
min = CURRENT_VALUE (points, left, curdim);
@@ -209,54 +212,54 @@ stageone (lab *points,
if (max - min > limits[curdim])
{
const gfloat pivot = (min + max) / 2.0;
gint l = left;
gint r = right - 1;
lab tmp;
while (TRUE)
if (pivot != max)
{
while (CURRENT_VALUE (points, l, curdim) <= pivot)
++l;
gint l = left;
gint r = right - 1;
lab tmp;
while (CURRENT_VALUE (points, r, curdim) > pivot)
--r;
while (TRUE)
{
while (CURRENT_VALUE (points, l, curdim) <= pivot)
++l;
if (l > r)
break;
while (CURRENT_VALUE (points, r, curdim) > pivot)
--r;
tmp = points[l];
points[l] = points[r];
points[r] = tmp;
if (l > r)
break;
++l;
--r;
tmp = points[l];
points[l] = points[r];
points[r] = tmp;
++l;
--r;
}
/* create subtrees */
stageone (points, left, l, depth + 1, clusters, limits, dims);
stageone (points, l, right, depth + 1, clusters, limits, dims);
return;
}
/* create subtrees */
stageone (points, left, l, depth + 1, clusters, limits, dims);
stageone (points, l, right, depth + 1, clusters, limits, dims);
}
else
/* create leave */
points[*clusters].cardinality = right - left;
for (; left < right; ++left)
{
/* create leave */
gfloat l = 0;
gfloat a = 0;
gfloat b = 0;
points[*clusters].cardinality = right - left;
for (; left < right; ++left)
{
l += points[left].l;
a += points[left].a;
b += points[left].b;
}
points[*clusters].l = l / points[*clusters].cardinality;
points[*clusters].a = a / points[*clusters].cardinality;
points[*clusters].b = b / points[*clusters].cardinality;
++(*clusters);
l += points[left].l;
a += points[left].a;
b += points[left].b;
}
points[*clusters].l = l / points[*clusters].cardinality;
points[*clusters].a = a / points[*clusters].cardinality;
points[*clusters].b = b / points[*clusters].cardinality;
++(*clusters);
}
@@ -278,7 +281,7 @@ stagetwo (lab *points,
const gint curdim = depth % dims;
gfloat min, max;
gfloat curval;
gint i;
gint i, sum = 0;
min = CURRENT_VALUE (points, left, curdim);
max = min;
@@ -297,64 +300,66 @@ stagetwo (lab *points,
if (max - min > limits[curdim])
{
const gfloat pivot = (min + max) / 2.0;
gint l = left;
gint r = right - 1;
lab tmp;
while (TRUE)
if (pivot != max)
{
while (CURRENT_VALUE (points, l, curdim) <= pivot)
++l;
gint l = left;
gint r = right - 1;
lab tmp;
while (CURRENT_VALUE (points, r, curdim) > pivot)
--r;
if (l > r)
break;
tmp = points[l];
points[l] = points[r];
points[r] = tmp;
++l;
--r;
}
/* create subtrees */
stagetwo (points, left, l, depth + 1, clusters, limits, threshold, dims);
stagetwo (points, l, right, depth + 1, clusters, limits, threshold, dims);
}
else /* create leave */
{
gint sum = 0;
for (i = left; i < right; i++)
sum += points[i].cardinality;
if (sum >= threshold)
{
const gint c = right - left;
gfloat l = 0;
gfloat a = 0;
gfloat b = 0;
for (; left < right; ++left)
while (TRUE)
{
l += points[left].l;
a += points[left].a;
b += points[left].b;
while (CURRENT_VALUE (points, l, curdim) <= pivot)
++l;
while (CURRENT_VALUE (points, r, curdim) > pivot)
--r;
if (l > r)
break;
tmp = points[l];
points[l] = points[r];
points[r] = tmp;
++l;
--r;
}
points[*clusters].l = l / c;
points[*clusters].a = a / c;
points[*clusters].b = b / c;
++(*clusters);
/* create subtrees */
stagetwo (points, left, l, depth + 1, clusters, limits, threshold, dims);
stagetwo (points, l, right, depth + 1, clusters, limits, threshold, dims);
return;
}
}
for (i = left; i < right; i++)
sum += points[i].cardinality;
if (sum >= threshold)
{
const gint c = right - left;
gfloat l = 0;
gfloat a = 0;
gfloat b = 0;
for (; left < right; ++left)
{
l += points[left].l;
a += points[left].a;
b += points[left].b;
}
points[*clusters].l = l / c;
points[*clusters].a = a / c;
points[*clusters].b = b / c;
++(*clusters);
#ifdef SIOX_DEBUG
g_printerr ("siox.c: cluster=%f, %f, %f sum=%d\n",
l, a, b, sum);
g_printerr ("siox.c: cluster=%f, %f, %f sum=%d\n",
l, a, b, sum);
#endif
}
}
}

View File

@@ -110,7 +110,7 @@ static void tile_swap_gap_destroy (SwapFileGap *gap);
static SwapFile * gimp_swap_file = NULL;
static const gint64 swap_file_grow = 1024 * TILE_WIDTH * TILE_HEIGHT * 4;
static const guint64 swap_file_grow = 1024 * TILE_WIDTH * TILE_HEIGHT * 4;
static gboolean seek_err_msg = TRUE;
static gboolean read_err_msg = TRUE;

View File

@@ -7,6 +7,11 @@ libgimpmath = $(top_builddir)/libgimpmath/libgimpmath-$(GIMP_API_VERSION).la
libgimpmodule = $(top_builddir)/libgimpmodule/libgimpmodule-$(GIMP_API_VERSION).la
libgimpthumb = $(top_builddir)/libgimpthumb/libgimpthumb-$(GIMP_API_VERSION).la
if OS_WIN32
else
libm = -lm
endif
AM_CPPFLAGS = \
-DG_LOG_DOMAIN=\"Gimp-Config\" \
-DGIMP_APP_VERSION_STRING=\"$(GIMP_APP_VERSION)\"
@@ -111,7 +116,8 @@ test_config_LDADD = \
$(PANGOCAIRO_LIBS) \
$(GDK_PIXBUF_LIBS) \
$(GEGL_LIBS) \
$(GLIB_LIBS)
$(GLIB_LIBS) \
$(libm)
CLEANFILES = $(EXTRA_PROGRAMS) foorc

View File

@@ -43,6 +43,8 @@
#include "gimp-intl.h"
#define GIMP_MAX_MEM_PROCESS (MIN (G_MAXSIZE, GIMP_MAX_MEMSIZE))
enum
{
PROP_0,
@@ -106,6 +108,7 @@ gimp_base_config_class_init (GimpBaseConfigClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
gint num_processors;
guint64 memory_size;
parent_class = g_type_class_peek_parent (klass);
@@ -138,10 +141,21 @@ gimp_base_config_class_init (GimpBaseConfigClass *klass)
"num-processors", NUM_PROCESSORS_BLURB,
1, GIMP_MAX_NUM_THREADS, num_processors,
GIMP_PARAM_STATIC_STRINGS);
memory_size = get_physical_memory_size ();
/* limit to the amount one process can handle */
memory_size = MIN (GIMP_MAX_MEM_PROCESS, memory_size);
if (memory_size > 0)
memory_size = memory_size / 2; /* half the memory */
else
memory_size = 1 << 30; /* 1GB */
GIMP_CONFIG_INSTALL_PROP_MEMSIZE (object_class, PROP_TILE_CACHE_SIZE,
"tile-cache-size", TILE_CACHE_SIZE_BLURB,
0, MIN (G_MAXSIZE, GIMP_MAX_MEMSIZE),
1 << 30, /* 1GB */
0, GIMP_MAX_MEM_PROCESS,
memory_size,
GIMP_PARAM_STATIC_STRINGS |
GIMP_CONFIG_PARAM_CONFIRM);

View File

@@ -59,7 +59,6 @@ enum
PROP_SHOW_PAINT_TOOL_CURSOR,
PROP_IMAGE_TITLE_FORMAT,
PROP_IMAGE_STATUS_FORMAT,
PROP_CONFIRM_ON_CLOSE,
PROP_MONITOR_XRESOLUTION,
PROP_MONITOR_YRESOLUTION,
PROP_MONITOR_RES_FROM_GDK,
@@ -76,6 +75,7 @@ enum
PROP_USE_EVENT_HISTORY,
/* ignored, only for backward compatibility: */
PROP_CONFIRM_ON_CLOSE,
PROP_XOR_COLOR
};
@@ -185,10 +185,6 @@ gimp_display_config_class_init (GimpDisplayConfigClass *klass)
IMAGE_STATUS_FORMAT_BLURB,
GIMP_CONFIG_DEFAULT_IMAGE_STATUS_FORMAT,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_CONFIRM_ON_CLOSE,
"confirm-on-close", CONFIRM_ON_CLOSE_BLURB,
TRUE,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_INSTALL_PROP_RESOLUTION (object_class, PROP_MONITOR_XRESOLUTION,
"monitor-xresolution",
MONITOR_XRESOLUTION_BLURB,
@@ -267,6 +263,11 @@ gimp_display_config_class_init (GimpDisplayConfigClass *klass)
GIMP_PARAM_STATIC_STRINGS);
/* only for backward compatibility: */
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_CONFIRM_ON_CLOSE,
"confirm-on-close", NULL,
TRUE,
GIMP_PARAM_STATIC_STRINGS |
GIMP_CONFIG_PARAM_IGNORE);
GIMP_CONFIG_INSTALL_PROP_RGB (object_class, PROP_XOR_COLOR,
"xor-color", NULL,
FALSE, &color,
@@ -366,9 +367,6 @@ gimp_display_config_set_property (GObject *object,
g_free (display_config->image_status_format);
display_config->image_status_format = g_value_dup_string (value);
break;
case PROP_CONFIRM_ON_CLOSE:
display_config->confirm_on_close = g_value_get_boolean (value);
break;
case PROP_MONITOR_XRESOLUTION:
display_config->monitor_xres = g_value_get_double (value);
break;
@@ -416,6 +414,8 @@ gimp_display_config_set_property (GObject *object,
case PROP_USE_EVENT_HISTORY:
display_config->use_event_history = g_value_get_boolean (value);
break;
case PROP_CONFIRM_ON_CLOSE:
case PROP_XOR_COLOR:
/* ignored */
break;
@@ -481,9 +481,6 @@ gimp_display_config_get_property (GObject *object,
case PROP_IMAGE_STATUS_FORMAT:
g_value_set_string (value, display_config->image_status_format);
break;
case PROP_CONFIRM_ON_CLOSE:
g_value_set_boolean (value, display_config->confirm_on_close);
break;
case PROP_MONITOR_XRESOLUTION:
g_value_set_double (value, display_config->monitor_xres);
break;
@@ -526,6 +523,8 @@ gimp_display_config_get_property (GObject *object,
case PROP_USE_EVENT_HISTORY:
g_value_set_boolean (value, display_config->use_event_history);
break;
case PROP_CONFIRM_ON_CLOSE:
case PROP_XOR_COLOR:
/* ignored */
break;

View File

@@ -56,7 +56,6 @@ struct _GimpDisplayConfig
gboolean show_paint_tool_cursor;
gchar *image_title_format;
gchar *image_status_format;
gboolean confirm_on_close;
gdouble monitor_xres;
gdouble monitor_yres;
gboolean monitor_res_from_gdk;

View File

@@ -33,7 +33,12 @@
#include "gimp-intl.h"
#ifdef HAVE_WEBKIT
#define DEFAULT_HELP_BROWSER GIMP_HELP_BROWSER_GIMP
#else
#define DEFAULT_HELP_BROWSER GIMP_HELP_BROWSER_WEB_BROWSER
#endif
#define DEFAULT_THEME "Default"
#define DEFAULT_USER_MANUAL_ONLINE_URI \

View File

@@ -42,9 +42,6 @@ N_("Specifies how the area around the image should be drawn.")
#define COLOR_PROFILE_POLICY_BLURB \
N_("How to handle embedded color profiles when opening a file.")
#define CONFIRM_ON_CLOSE_BLURB \
N_("Ask for confirmation before closing an image without saving.")
#define CURSOR_FORMAT_BLURB \
N_("Sets the pixel format to use for mouse pointers.")

View File

@@ -115,7 +115,11 @@ gimp_rc_add_unknown_token (GimpConfig *config,
token->key = g_strdup (key);
token->value = g_strdup (value);
if (!last)
if (last)
{
last = g_slist_last (g_slist_append (last, token));
}
else
{
unknown_tokens = g_slist_append (NULL, token);

View File

@@ -1,7 +1,13 @@
## Process this file with automake to produce Makefile.in
if PLATFORM_OSX
xobjective_c = "-xobjective-c"
endif
AM_CPPFLAGS = \
-DGIMPDIR=\""$(gimpdir)"\" \
-DGIMP_APP_VERSION=\"$(GIMP_APP_VERSION)\" \
-DGIMP_USER_VERSION=\"$(GIMP_USER_VERSION)\" \
-DG_LOG_DOMAIN=\"Gimp-Core\"
INCLUDES = \
@@ -12,7 +18,8 @@ INCLUDES = \
$(CAIRO_CFLAGS) \
$(GEGL_CFLAGS) \
$(GDK_PIXBUF_CFLAGS) \
-I$(includedir)
-I$(includedir) \
$(xobjective_c)
noinst_LIBRARIES = libappcore.a

View File

@@ -941,6 +941,7 @@ gimp_dirty_mask_get_type (void)
{ GIMP_DIRTY_DRAWABLE, "GIMP_DIRTY_DRAWABLE", "drawable" },
{ GIMP_DIRTY_VECTORS, "GIMP_DIRTY_VECTORS", "vectors" },
{ GIMP_DIRTY_SELECTION, "GIMP_DIRTY_SELECTION", "selection" },
{ GIMP_DIRTY_ACTIVE_DRAWABLE, "GIMP_DIRTY_ACTIVE_DRAWABLE", "active-drawable" },
{ GIMP_DIRTY_ALL, "GIMP_DIRTY_ALL", "all" },
{ 0, NULL, NULL }
};
@@ -957,6 +958,7 @@ gimp_dirty_mask_get_type (void)
{ GIMP_DIRTY_DRAWABLE, "GIMP_DIRTY_DRAWABLE", NULL },
{ GIMP_DIRTY_VECTORS, "GIMP_DIRTY_VECTORS", NULL },
{ GIMP_DIRTY_SELECTION, "GIMP_DIRTY_SELECTION", NULL },
{ GIMP_DIRTY_ACTIVE_DRAWABLE, "GIMP_DIRTY_ACTIVE_DRAWABLE", NULL },
{ GIMP_DIRTY_ALL, "GIMP_DIRTY_ALL", NULL },
{ 0, NULL, NULL }
};

View File

@@ -449,6 +449,7 @@ typedef enum /*< pdb-skip >*/
GIMP_DIRTY_DRAWABLE = 1 << 6,
GIMP_DIRTY_VECTORS = 1 << 7,
GIMP_DIRTY_SELECTION = 1 << 8,
GIMP_DIRTY_ACTIVE_DRAWABLE = 1 << 9,
GIMP_DIRTY_ALL = 0xffff
} GimpDirtyMask;

View File

@@ -163,12 +163,13 @@ gimp_edit_paste (GimpImage *image,
{
GimpLayer *layer;
GimpImageType type;
gint center_x;
gint center_y;
gint offset_x;
gint offset_y;
gint image_width;
gint image_height;
gint width;
gint height;
gint offset_x;
gint offset_y;
gboolean clamp_to_image = TRUE;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (drawable == NULL || GIMP_IS_DRAWABLE (drawable), NULL);
@@ -192,6 +193,23 @@ gimp_edit_paste (GimpImage *image,
if (! layer)
return NULL;
image_width = gimp_image_get_width (image);
image_height = gimp_image_get_height (image);
width = gimp_item_get_width (GIMP_ITEM (layer));
height = gimp_item_get_height (GIMP_ITEM (layer));
if (viewport_width == image_width &&
viewport_height == image_height)
{
/* if the whole image is visible, act as if there was no viewport */
viewport_x = 0;
viewport_y = 0;
viewport_width = 0;
viewport_height = 0;
}
if (drawable)
{
/* if pasting to a drawable */
@@ -206,9 +224,13 @@ gimp_edit_paste (GimpImage *image,
have_mask = gimp_item_mask_bounds (GIMP_ITEM (drawable),
&x1, &y1, &x2, &y2);
if (! have_mask &&
viewport_width > 0 &&
if (! have_mask && /* if we have no mask */
viewport_width > 0 && /* and we have a viewport */
viewport_height > 0 &&
(width < (x2 - x1) || /* and the paste is smaller than the target */
height < (y2 - y1)) &&
/* and the viewport intersects with the target */
gimp_rectangle_intersect (viewport_x, viewport_y,
viewport_width, viewport_height,
off_x, off_y,
@@ -216,43 +238,53 @@ gimp_edit_paste (GimpImage *image,
&paste_x, &paste_y,
&paste_width, &paste_height))
{
center_x = paste_x + paste_width / 2;
center_y = paste_y + paste_height / 2;
/* center on the viewport */
offset_x = paste_x + (paste_width - width) / 2;
offset_y = paste_y + (paste_height- height) / 2;
}
else
{
center_x = off_x + (x1 + x2) / 2;
center_y = off_y + (y1 + y2) / 2;
/* otherwise center on the target */
offset_x = off_x + ((x1 + x2) - width) / 2;
offset_y = off_y + ((y1 + y2) - height) / 2;
/* and keep it that way */
clamp_to_image = FALSE;
}
}
else if (viewport_width > 0 && viewport_height > 0)
else if (viewport_width > 0 && /* if we have a viewport */
viewport_height > 0 &&
(width < image_width || /* and the paste is */
height < image_height)) /* smaller than the image */
{
/* if we got a viewport set the offsets to the center of the viewport */
/* center on the viewport */
center_x = viewport_x + viewport_width / 2;
center_y = viewport_y + viewport_height / 2;
offset_x = viewport_x + (viewport_width - width) / 2;
offset_y = viewport_y + (viewport_height - height) / 2;
}
else
{
/* otherwise the offsets to the center of the image */
/* otherwise center on the image */
center_x = gimp_image_get_width (image) / 2;
center_y = gimp_image_get_height (image) / 2;
offset_x = (image_width - width) / 2;
offset_y = (image_height - height) / 2;
/* and keep it that way */
clamp_to_image = FALSE;
}
width = gimp_item_get_width (GIMP_ITEM (layer));
height = gimp_item_get_height (GIMP_ITEM (layer));
offset_x = center_x - width / 2;
offset_y = center_y - height / 2;
/* Ensure that the pasted layer is always within the image, if it
* fits and aligned at top left if it doesn't. (See bug #142944).
*/
offset_x = MIN (offset_x, gimp_image_get_width (image) - width);
offset_y = MIN (offset_y, gimp_image_get_height (image) - height);
offset_x = MAX (offset_x, 0);
offset_y = MAX (offset_y, 0);
if (clamp_to_image)
{
/* Ensure that the pasted layer is always within the image, if it
* fits and aligned at top left if it doesn't. (See bug #142944).
*/
offset_x = MIN (offset_x, image_width - width);
offset_y = MIN (offset_y, image_height - height);
offset_x = MAX (offset_x, 0);
offset_y = MAX (offset_y, 0);
}
gimp_item_set_offset (GIMP_ITEM (layer), offset_x, offset_y);

View File

@@ -35,7 +35,7 @@
#define FG_BG_RGB_KEY "gimp-gradient-fg-bg-rgb"
#define FG_BG_HARDEDGE_KEY "gimp-gradient-fg-bg-rgb"
#define FG_BG_HARDEDGE_KEY "gimp-gradient-fg-bg-rgb-hardedge"
#define FG_BG_HSV_CCW_KEY "gimp-gradient-fg-bg-hsv-ccw"
#define FG_BG_HSV_CW_KEY "gimp-gradient-fg-bg-hsv-cw"
#define FG_TRANSPARENT_KEY "gimp-gradient-fg-transparent"

View File

@@ -73,6 +73,9 @@ gimp_modules_load (Gimp *gimp)
if (gimp->no_interface)
return;
/* FIXME, gimp->be_verbose is not yet initialized in init() */
gimp->module_db->verbose = gimp->be_verbose;
filename = gimp_personal_rc_file ("modulerc");
if (gimp->be_verbose)
@@ -201,7 +204,7 @@ gimp_modules_unload (Gimp *gimp)
if (writer)
{
gimp_config_writer_open (writer, "module-load-inhibit");
gimp_config_writer_printf (writer, "\"%s\"", p);
gimp_config_writer_string (writer, p);
gimp_config_writer_close (writer);
gimp_config_writer_finish (writer, "end of modulerc", &error);

View File

@@ -319,9 +319,9 @@ gimp_transform_region_nearest (TileManager *orig_tiles,
gdouble tu, tv, tw; /* undivided source coordinates and divisor */
/* set up inverse transform steps */
tu = uinc * x + m->coeff[0][1] * (dest_y1 + y) + m->coeff[0][2];
tv = vinc * x + m->coeff[1][1] * (dest_y1 + y) + m->coeff[1][2];
tw = winc * x + m->coeff[2][1] * (dest_y1 + y) + m->coeff[2][2];
tu = uinc * (x + .5) + m->coeff[0][1] * (dest_y1 + y + .5) + m->coeff[0][2];
tv = vinc * (x + .5) + m->coeff[1][1] * (dest_y1 + y + .5) + m->coeff[1][2];
tw = winc * (x + .5) + m->coeff[2][1] * (dest_y1 + y + .5) + m->coeff[2][2];
while (width--)
{
@@ -331,8 +331,13 @@ gimp_transform_region_nearest (TileManager *orig_tiles,
/* normalize homogeneous coords */
normalize_coords (1, &tu, &tv, &tw, &u, &v);
iu = (gint) u;
iv = (gint) v;
/* EPSILON here is useful to make floating point arithmetic
* rounding errors consistent when the exact computation
* results in a 'integer and a half'
*/
#define EPSILON 1.e-5
iu = floor (u + 0.5 + EPSILON);
iv = floor (v + 0.5 + EPSILON);
/* Set the destination pixels */
if (iu >= u1 && iu < u2 &&
@@ -689,12 +694,14 @@ gimp_transform_region_lanczos (TileManager *orig_tiles,
static inline void
untransform_coords (const GimpMatrix3 *m,
const gint x,
const gint y,
const gint ix,
const gint iy,
gdouble *tu,
gdouble *tv,
gdouble *tw)
{
gdouble x = ix + .5;
gdouble y = iy + .5;
tu[0] = m->coeff[0][0] * (x ) + m->coeff[0][1] * (y ) + m->coeff[0][2];
tv[0] = m->coeff[1][0] * (x ) + m->coeff[1][1] * (y ) + m->coeff[1][2];
tw[0] = m->coeff[2][0] * (x ) + m->coeff[2][1] * (y ) + m->coeff[2][2];
@@ -730,8 +737,8 @@ normalize_coords (const gint coords,
{
if (G_LIKELY (tw[i] != 0.0))
{
u[i] = tu[i] / tw[i];
v[i] = tv[i] / tw[i];
u[i] = tu[i] / tw[i] - .5;
v[i] = tv[i] / tw[i] - .5;
}
else
{
@@ -861,7 +868,12 @@ sample_bi (TileManager *tm,
* out of bounds.
*/
for (i = 0; i < 4; i++)
*(guint*) (&C[i]) = *(guint*) (bg_color);
{
guint *src = (guint *) bg_color;
guint *dst = (guint *) &C[i];
*dst = *src;
}
tile_manager_read_pixel_data_1 (tm, x0, y0, C[0]);
tile_manager_read_pixel_data_1 (tm, x1, y0, C[2]);

View File

@@ -36,6 +36,10 @@
#include <glib/gstdio.h>
#ifdef PLATFORM_OSX
#include <AppKit/AppKit.h>
#endif
#include <glib-object.h>
#ifdef G_OS_WIN32
@@ -109,7 +113,8 @@ gimp_user_install_items[] =
};
static gboolean gimp_user_install_detect_old (GimpUserInstall *install);
static gboolean gimp_user_install_detect_old (GimpUserInstall *install,
const gchar *gimp_dir);
static void user_install_log (GimpUserInstall *install,
const gchar *format,
...) G_GNUC_PRINTF (2, 3);
@@ -140,7 +145,46 @@ gimp_user_install_new (gboolean verbose)
install->verbose = verbose;
gimp_user_install_detect_old (install);
gimp_user_install_detect_old (install, gimp_directory ());
#ifdef PLATFORM_OSX
/* The config path on OSX has for a very short time frame (2.8.2 only)
been "~/Library/GIMP". It changed to "~/Library/Application Support"
in 2.8.4 and was in the home folder (as was other UNIX) before. */
if (! install->old_dir)
{
gchar *dir;
NSAutoreleasePool *pool;
NSArray *path;
NSString *library_dir;
pool = [[NSAutoreleasePool alloc] init];
path = NSSearchPathForDirectoriesInDomains (NSLibraryDirectory,
NSUserDomainMask, YES);
library_dir = [path objectAtIndex:0];
dir = g_build_filename ([library_dir UTF8String],
GIMPDIR, GIMP_USER_VERSION, NULL);
[pool drain];
gimp_user_install_detect_old (install, dir);
g_free (dir);
}
if (! install->old_dir)
{
/* if the default old gimpdir was not found, try the "classic" one
* in the home folder
*/
gchar *dir = g_strdup_printf ("%s/.gimp-%s",
g_get_home_dir (), GIMP_APP_VERSION);
gimp_user_install_detect_old (install, dir);
g_free (dir);
}
#endif
return install;
}
@@ -205,14 +249,13 @@ gimp_user_install_set_log_handler (GimpUserInstall *install,
/* Local functions */
static gboolean
gimp_user_install_detect_old (GimpUserInstall *install)
gimp_user_install_detect_old (GimpUserInstall *install,
const gchar *gimp_dir)
{
gchar *dir;
gchar *dir = g_strdup (gimp_dir);
gchar *version;
gboolean migrate = FALSE;
dir = g_strdup (gimp_directory ());
version = strstr (dir, GIMP_APP_VERSION);
if (version)

View File

@@ -26,6 +26,12 @@
#include <langinfo.h>
#endif
#include <glib.h>
#ifdef G_OS_WIN32
#include <windows.h>
#endif
#include <cairo.h>
#include <glib-object.h>
#include <gobject/gvaluecollector.h>
@@ -347,7 +353,7 @@ gimp_get_default_language (const gchar *category)
GimpUnit
gimp_get_default_unit (void)
{
#ifdef HAVE__NL_MEASUREMENT_MEASUREMENT
#if defined (HAVE__NL_MEASUREMENT_MEASUREMENT)
const gchar *measurement = nl_langinfo (_NL_MEASUREMENT_MEASUREMENT);
switch (*((guchar *) measurement))
@@ -358,6 +364,27 @@ gimp_get_default_unit (void)
case 2: /* imperial */
return GIMP_UNIT_INCH;
}
#elif defined (G_OS_WIN32)
DWORD measurement;
int ret;
ret = GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_IMEASURE | LOCALE_RETURN_NUMBER,
(LPTSTR)&measurement,
sizeof(measurement) / sizeof(TCHAR) );
if (ret != 0) /* GetLocaleInfo succeeded */
{
switch ((guint) measurement)
{
case 0: /* metric */
return GIMP_UNIT_MM;
case 1: /* imperial */
return GIMP_UNIT_INCH;
}
}
#endif
return GIMP_UNIT_MM;

View File

@@ -111,6 +111,7 @@ gimp_bezier_desc_new_from_bound_segs (BoundSeg *bound_segs,
gint n_points;
gint seg;
gint i;
guint path_data_len;
g_return_val_if_fail (bound_segs != NULL, NULL);
g_return_val_if_fail (n_bound_segs > 0, NULL);
@@ -159,8 +160,10 @@ gimp_bezier_desc_new_from_bound_segs (BoundSeg *bound_segs,
g_free (points);
path_data_len = path_data->len;
return gimp_bezier_desc_new ((cairo_path_data_t *) g_array_free (path_data, FALSE),
path_data->len);
path_data_len);
}
void

View File

@@ -111,7 +111,9 @@ static gchar abr_read_char (FILE *file);
static gint16 abr_read_short (FILE *file);
static gint32 abr_read_long (FILE *file);
static gchar * abr_read_ucs2_text (FILE *file);
static gboolean abr_supported (AbrHeader *abr_hdr);
static gboolean abr_supported (AbrHeader *abr_hdr,
const gchar *filename,
GError **error);
static gboolean abr_reach_8bim_section (FILE *abr,
const gchar *name);
static gint32 abr_rle_decode (FILE *file,
@@ -341,6 +343,23 @@ gimp_brush_load_brush (GimpContext *context,
}
break;
case 3:
/* The obsolete .gbp format had a 3-byte pattern following a
* 1-byte brush, when embedded in a brush pipe, the current code
* tries to load that pattern as a brush, and encounters the '3'
* in the header.
*/
g_object_unref (brush);
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"Unsupported brush depth %d\n"
"GIMP brushes must be GRAY or RGBA.\n"
"This might be an obsolete GIMP brush file, try "
"loading it as image and save it again."),
gimp_filename_to_utf8 (filename), header.bytes);
return NULL;
break;
case 4:
{
guchar buf[8 * 1024];
@@ -429,7 +448,7 @@ gimp_brush_load_abr (GimpContext *context,
abr_hdr.version = abr_read_short (file);
abr_hdr.count = abr_read_short (file); /* sub-version for ABR v6 */
if (abr_supported (&abr_hdr))
if (abr_supported (&abr_hdr, filename, error))
{
switch (abr_hdr.version)
{
@@ -601,6 +620,15 @@ gimp_brush_load_abr_brush_v12 (FILE *file,
abr_sampled_brush_hdr.depth = abr_read_short (file);
if (feof (file))
{
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"File appears truncated."),
gimp_filename_to_utf8 (filename));
return NULL;
}
height = (abr_sampled_brush_hdr.bounds_long[2] -
abr_sampled_brush_hdr.bounds_long[0]); /* bottom - top */
width = (abr_sampled_brush_hdr.bounds_long[3] -
@@ -665,6 +693,16 @@ gimp_brush_load_abr_brush_v12 (FILE *file,
fread (mask, size, 1, file);
else
abr_rle_decode (file, (gchar *) mask, height);
if (feof (file))
{
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"File appears truncated."),
gimp_filename_to_utf8 (filename));
g_object_unref (brush);
return NULL;
}
}
break;
@@ -735,6 +773,15 @@ gimp_brush_load_abr_brush_v6 (FILE *file,
depth = abr_read_short (file);
compress = abr_read_char (file);
if (feof (file))
{
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"File appears truncated."),
gimp_filename_to_utf8 (filename));
return NULL;
}
width = right - left;
height = bottom - top;
size = width * (depth >> 3) * height;
@@ -769,6 +816,16 @@ gimp_brush_load_abr_brush_v6 (FILE *file,
fseek (file, next_brush, SEEK_SET);
if (feof (file))
{
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"File appears truncated."),
gimp_filename_to_utf8 (filename));
g_object_unref (brush);
return NULL;
}
return brush;
}
@@ -831,7 +888,9 @@ abr_read_ucs2_text (FILE *file)
}
static gboolean
abr_supported (AbrHeader *abr_hdr)
abr_supported (AbrHeader *abr_hdr,
const gchar *filename,
GError **error)
{
switch (abr_hdr->version)
{
@@ -844,6 +903,18 @@ abr_supported (AbrHeader *abr_hdr)
/* in this case, count contains format sub-version */
if (abr_hdr->count == 1 || abr_hdr->count == 2)
return TRUE;
if (error && ! (*error))
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"unable to decode abr format version %d."),
gimp_filename_to_utf8 (filename),
/* horrid subversion display, but better than
* having yet another translatable string for
* this
*/
abr_hdr->version * 10 + abr_hdr->count);
break;
}

View File

@@ -201,8 +201,8 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
TileManager *tiles = gimp_buffer_get_tiles (gimp->global_buffer);
GimpImageType type = gimp_buffer_get_image_type (gimp->global_buffer);
width = MIN (gimp_buffer_get_width (gimp->global_buffer), 512);
height = MIN (gimp_buffer_get_height (gimp->global_buffer), 512);
width = MIN (gimp_buffer_get_width (gimp->global_buffer), 1024);
height = MIN (gimp_buffer_get_height (gimp->global_buffer), 1024);
brush->mask = temp_buf_new (width, height, 1, 0, 0, NULL);
brush->pixmap = temp_buf_new (width, height, 3, 0, 0, NULL);

View File

@@ -210,8 +210,11 @@ gimp_brush_pipe_load (GimpContext *context,
while (pipe->n_brushes < num_of_brushes)
{
GError *my_error = NULL;
pipe->brushes[pipe->n_brushes] = gimp_brush_load_brush (context,
fd, filename, NULL);
fd, filename,
&my_error);
if (pipe->brushes[pipe->n_brushes])
{
@@ -220,10 +223,7 @@ gimp_brush_pipe_load (GimpContext *context,
}
else
{
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
_("Fatal parse error in brush file '%s': "
"File is corrupt."),
gimp_filename_to_utf8 (filename));
g_propagate_error (error, my_error);
close (fd);
g_object_unref (pipe);
return NULL;

View File

@@ -199,7 +199,6 @@ gimp_brush_pipe_select_brush (GimpBrush *brush,
{
GimpBrushPipe *pipe = GIMP_BRUSH_PIPE (brush);
gint i, brushix, ix;
gdouble velocity;
if (pipe->n_brushes == 1)
return GIMP_BRUSH (pipe->current);
@@ -221,10 +220,7 @@ gimp_brush_pipe_select_brush (GimpBrush *brush,
break;
case PIPE_SELECT_VELOCITY:
velocity = current_coords->velocity;
/* Max velocity is 3.0, picking stamp as a ratio*/
ix = ROUND ((3.0 / velocity) * pipe->rank[i]);
ix = ROUND (current_coords->velocity * pipe->rank[i]);
break;
case PIPE_SELECT_RANDOM:

View File

@@ -1121,14 +1121,19 @@ gimp_channel_real_bounds (GimpChannel *channel,
*/
if (data[0] && data[maskPR.rowstride*(maskPR.h - 1) + maskPR.w - 1])
{
/* "ex/ey - 1" because the internal variables are the
* right/bottom pixel of the mask's contents, not one
* right/below it like the return values.
*/
if (maskPR.x < tx1)
tx1 = maskPR.x;
if (ex > tx2)
tx2 = ex;
tx2 = ex - 1;
if (maskPR.y < ty1)
ty1 = maskPR.y;
if (ey > ty2)
ty2 = ey;
ty2 = ey - 1;
}
else
{

View File

@@ -1929,7 +1929,25 @@ gimp_context_real_set_display (GimpContext *context,
GimpObject *old_display;
if (context->display == display)
return;
{
/* make sure that setting a display *always* sets the image
* to that display's image, even if the display already
* matches
*/
if (display)
{
GimpImage *image;
g_object_get (display, "image", &image, NULL);
gimp_context_real_set_image (context, image);
if (image)
g_object_unref (image);
}
return;
}
old_display = context->display;
@@ -3172,7 +3190,7 @@ gimp_context_get_font_name (GimpContext *context)
{
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
return (context->font ? gimp_object_get_name (context->font) : NULL);
return context->font_name;
}
void
@@ -3185,7 +3203,20 @@ gimp_context_set_font_name (GimpContext *context,
font = gimp_container_get_child_by_name (context->gimp->fonts, name);
gimp_context_set_font (context, GIMP_FONT (font));
if (font)
{
gimp_context_set_font (context, GIMP_FONT (font));
}
else
{
/* No font with this name exists, use the standard font, but
* keep the intended name around
*/
gimp_context_set_font (context, gimp_font_get_standard ());
g_free (context->font_name);
context->font_name = g_strdup (name);
}
}
void

View File

@@ -29,6 +29,17 @@
#include "gimpcurve-map.h"
#if defined (HAVE_FINITE)
#define FINITE(x) finite(x)
#elif defined (HAVE_ISFINITE)
#define FINITE(x) isfinite(x)
#elif defined (G_OS_WIN32)
#define FINITE(x) _finite(x)
#else
#error "no FINITE() implementation available?!"
#endif
enum
{
CURVE_NONE = 0,
@@ -204,18 +215,17 @@ gimp_curve_map_value_inline (GimpCurve *curve,
{
if (curve->identity)
{
return value;
if (FINITE (value))
return CLAMP (value, 0.0, 1.0);
return 0.0;
}
if (value < 0.0)
{
return curve->samples[0];
}
else if (value >= 1.0)
{
return curve->samples[curve->n_samples - 1];
}
else /* interpolate the curve */
/* check for known values first, so broken values like NaN
* delivered by broken drivers don't run into the interpolation
* code
*/
if (value > 0.0 && value < 1.0) /* interpolate the curve */
{
gdouble f;
gint index;
@@ -231,4 +241,12 @@ gimp_curve_map_value_inline (GimpCurve *curve,
return (1.0 - f) * curve->samples[index] + f * curve->samples[index + 1];
}
else if (value >= 1.0)
{
return curve->samples[curve->n_samples - 1];
}
else
{
return curve->samples[0];
}
}

View File

@@ -105,6 +105,7 @@ static void gimp_data_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
static void gimp_data_name_changed (GimpObject *object);
static gint64 gimp_data_get_memsize (GimpObject *object,
gint64 *gui_size);
@@ -183,6 +184,7 @@ gimp_data_class_init (GimpDataClass *klass)
object_class->set_property = gimp_data_set_property;
object_class->get_property = gimp_data_get_property;
gimp_object_class->name_changed = gimp_data_name_changed;
gimp_object_class->get_memsize = gimp_data_get_memsize;
klass->dirty = gimp_data_real_dirty;
@@ -350,6 +352,17 @@ gimp_data_get_property (GObject *object,
}
}
static void
gimp_data_name_changed (GimpObject *object)
{
GimpDataPrivate *private = GIMP_DATA_GET_PRIVATE (object);
private->dirty = TRUE;
if (GIMP_OBJECT_CLASS (parent_class)->name_changed)
GIMP_OBJECT_CLASS (parent_class)->name_changed (object);
}
static gint64
gimp_data_get_memsize (GimpObject *object,
gint64 *gui_size)
@@ -366,13 +379,11 @@ gimp_data_get_memsize (GimpObject *object,
static void
gimp_data_real_dirty (GimpData *data)
{
GimpDataPrivate *private = GIMP_DATA_GET_PRIVATE (data);
private->dirty = TRUE;
gimp_viewable_invalidate_preview (GIMP_VIEWABLE (data));
/* Emit the "name-changed" to signal general dirtiness */
/* Emit the "name-changed" to signal general dirtiness, our name
* changed implementation will also set the "dirty" flag to TRUE.
*/
gimp_object_name_changed (GIMP_OBJECT (data));
}
@@ -410,7 +421,7 @@ gimp_data_remove_tag (GimpTagged *tagged,
if (gimp_tag_equals (tag, this))
{
private->tags = g_list_delete_link (private->tags, list);
g_object_unref (tag);
g_object_unref (this);
return TRUE;
}
}
@@ -520,11 +531,20 @@ gimp_data_save (GimpData *data,
if (success)
{
struct stat filestat;
GFile *file = g_file_new_for_path (private->filename);
GFileInfo *info = g_file_query_info (file, "time::*",
G_FILE_QUERY_INFO_NONE,
NULL, NULL);
if (info)
{
private->mtime =
g_file_info_get_attribute_uint64 (info,
G_FILE_ATTRIBUTE_TIME_MODIFIED);
g_object_unref (info);
}
g_stat (private->filename, &filestat);
g_object_unref (file);
private->mtime = filestat.st_mtime;
private->dirty = FALSE;
}

View File

@@ -345,7 +345,7 @@ gimp_data_factory_data_load (GimpDataFactory *factory,
g_free (writable_path);
writable_path = tmp;
writable_list = gimp_path_parse (writable_path, 16, TRUE, NULL);
writable_list = gimp_path_parse (writable_path, 256, TRUE, NULL);
g_object_set_data (G_OBJECT (factory),
WRITABLE_PATH_KEY, writable_list);
@@ -411,6 +411,7 @@ gimp_data_factory_data_refresh (GimpDataFactory *factory,
void
gimp_data_factory_data_save (GimpDataFactory *factory)
{
GList *dirty = NULL;
GList *list;
gchar *writable_dir;
GError *error = NULL;
@@ -420,6 +421,22 @@ gimp_data_factory_data_save (GimpDataFactory *factory)
if (gimp_container_is_empty (factory->priv->container))
return;
for (list = GIMP_LIST (factory->priv->container)->list;
list;
list = g_list_next (list))
{
GimpData *data = list->data;
if (gimp_data_is_dirty (data) &&
gimp_data_is_writable (data))
{
dirty = g_list_prepend (dirty, data);
}
}
if (! dirty)
return;
writable_dir = gimp_data_factory_get_save_dir (factory, &error);
if (! writable_dir)
@@ -429,40 +446,37 @@ gimp_data_factory_data_save (GimpDataFactory *factory)
error->message);
g_clear_error (&error);
g_list_free (dirty);
return;
}
for (list = GIMP_LIST (factory->priv->container)->list;
list;
list = g_list_next (list))
for (list = dirty; list; list = g_list_next (list))
{
GimpData *data = list->data;
GimpData *data = list->data;
GError *error = NULL;
if (! gimp_data_get_filename (data))
gimp_data_create_filename (data, writable_dir);
if (gimp_data_is_dirty (data) &&
gimp_data_is_writable (data))
if (! gimp_data_save (data, &error))
{
GError *error = NULL;
if (! gimp_data_save (data, &error))
/* check if there actually was an error (no error
* means the data class does not implement save)
*/
if (error)
{
/* check if there actually was an error (no error
* means the data class does not implement save)
*/
if (error)
{
gimp_message (factory->priv->gimp, NULL, GIMP_MESSAGE_ERROR,
_("Failed to save data:\n\n%s"),
error->message);
g_clear_error (&error);
}
gimp_message (factory->priv->gimp, NULL, GIMP_MESSAGE_ERROR,
_("Failed to save data:\n\n%s"),
error->message);
g_clear_error (&error);
}
}
}
g_free (writable_dir);
g_list_free (dirty);
}
static void
@@ -711,8 +725,8 @@ gimp_data_factory_get_save_dir (GimpDataFactory *factory,
g_free (writable_path);
writable_path = tmp;
path_list = gimp_path_parse (path, 16, FALSE, NULL);
writable_list = gimp_path_parse (writable_path, 16, FALSE, NULL);
path_list = gimp_path_parse (path, 256, FALSE, NULL);
writable_list = gimp_path_parse (writable_path, 256, FALSE, NULL);
g_free (path);
g_free (writable_path);
@@ -931,6 +945,10 @@ gimp_data_factory_load_data (const GimpDatafileData *file_data,
g_list_free (data_list);
}
/* not else { ... } because loader->load_func() can return a list
* of data objects *and* an error message if loading failed after
* something was already loaded
*/
if (G_UNLIKELY (error))
{
gimp_message (factory->priv->gimp, NULL, GIMP_MESSAGE_ERROR,

View File

@@ -546,35 +546,37 @@ gimp_drawable_resize (GimpItem *item,
gint new_offset_y;
gint copy_x, copy_y;
gint copy_width, copy_height;
gboolean intersect;
/* if the size doesn't change, this is a nop */
if (new_width == gimp_item_get_width (item) &&
new_height == gimp_item_get_height (item) &&
offset_x == 0 &&
offset_x == 0 &&
offset_y == 0)
return;
new_offset_x = gimp_item_get_offset_x (item) - offset_x;
new_offset_y = gimp_item_get_offset_y (item) - offset_y;
gimp_rectangle_intersect (gimp_item_get_offset_x (item),
gimp_item_get_offset_y (item),
gimp_item_get_width (item),
gimp_item_get_height (item),
new_offset_x,
new_offset_y,
new_width,
new_height,
&copy_x,
&copy_y,
&copy_width,
&copy_height);
intersect = gimp_rectangle_intersect (gimp_item_get_offset_x (item),
gimp_item_get_offset_y (item),
gimp_item_get_width (item),
gimp_item_get_height (item),
new_offset_x,
new_offset_y,
new_width,
new_height,
&copy_x,
&copy_y,
&copy_width,
&copy_height);
new_tiles = tile_manager_new (new_width, new_height,
gimp_drawable_bytes (drawable));
/* Determine whether the new tiles need to be initially cleared */
if (copy_width != new_width ||
if (! intersect ||
copy_width != new_width ||
copy_height != new_height)
{
guchar bg[MAX_CHANNELS] = { 0, };
@@ -592,7 +594,7 @@ gimp_drawable_resize (GimpItem *item,
}
/* Determine whether anything needs to be copied */
if (copy_width && copy_height)
if (intersect && copy_width && copy_height)
{
pixel_region_init (&srcPR,
gimp_drawable_get_tiles (drawable),

View File

@@ -422,8 +422,16 @@ svg_parser_end_element (GMarkupParseContext *context,
if (parser->gradient &&
strcmp (element_name, "linearGradient") == 0)
{
GList *list;
parser->gradient->segments = svg_parser_gradient_segments (parser->stops);
for (list = parser->stops; list; list = list->next)
g_slice_free (SvgStop, list->data);
g_list_free (parser->stops);
parser->stops = NULL;
if (parser->gradient->segments)
parser->gradients = g_list_prepend (parser->gradients,
parser->gradient);

View File

@@ -25,6 +25,7 @@
#include <cairo.h>
#include <glib-object.h>
#include "libgimpmath/gimpmath.h"
#include "libgimpbase/gimpbase.h"
#include "libgimpconfig/gimpconfig.h"
@@ -224,6 +225,30 @@ gimp_grid_set_property (GObject *object,
}
}
void
gimp_grid_get_spacing (GimpGrid *grid,
gdouble *xspacing,
gdouble *yspacing)
{
g_return_if_fail (GIMP_IS_GRID (grid));
/* FIXME subpixel grid */
if (xspacing) *xspacing = RINT (grid->xspacing);
if (yspacing) *yspacing = RINT (grid->yspacing);
}
void
gimp_grid_get_offset (GimpGrid *grid,
gdouble *xoffset,
gdouble *yoffset)
{
g_return_if_fail (GIMP_IS_GRID (grid));
/* FIXME subpixel grid */
if (xoffset) *xoffset = RINT (grid->xoffset);
if (yoffset) *yoffset = RINT (grid->yoffset);
}
const gchar *
gimp_grid_parasite_name (void)
{

View File

@@ -58,6 +58,14 @@ struct _GimpGridClass
GType gimp_grid_get_type (void) G_GNUC_CONST;
void gimp_grid_get_spacing (GimpGrid *grid,
gdouble *xspacing,
gdouble *yspacing);
void gimp_grid_get_offset (GimpGrid *grid,
gdouble *xoffset,
gdouble *yoffset);
const gchar * gimp_grid_parasite_name (void) G_GNUC_CONST;
GimpParasite * gimp_grid_to_parasite (const GimpGrid *grid);
GimpGrid * gimp_grid_from_parasite (const GimpParasite *parasite);

View File

@@ -1131,6 +1131,9 @@ gimp_group_layer_update_size (GimpGroupLayer *group)
*/
gimp_projectable_invalidate (GIMP_PROJECTABLE (group),
x, y, width, height);
/* see comment in gimp_group_layer_stack_update() below */
gimp_pickable_flush (GIMP_PICKABLE (private->projection));
}
if (private->offset_node)

View File

@@ -127,15 +127,27 @@ gint
gimp_id_table_insert (GimpIdTable *id_table, gpointer data)
{
gint new_id;
gint start_id;
g_return_val_if_fail (GIMP_IS_ID_TABLE (id_table), 0);
start_id = id_table->priv->next_id;
do
{
new_id = id_table->priv->next_id++;
if (id_table->priv->next_id == GIMP_ID_TABLE_END_ID)
id_table->priv->next_id = GIMP_ID_TABLE_START_ID;
if (start_id == id_table->priv->next_id)
{
/* We looped once over all used ids. Very unlikely to happen.
And if it does, there is probably not much to be done.
It is just good design not to allow a theoretical infinite loop. */
g_error ("%s: out of ids!", G_STRFUNC);
break;
}
}
while (gimp_id_table_lookup (id_table, new_id));

View File

@@ -40,8 +40,8 @@
/* local function prototype */
void gimp_image_colormap_set_palette_entry (GimpImage *image,
gint index);
static void gimp_image_colormap_set_palette_entry (GimpImage *image,
gint index);
/* public functions */
@@ -173,11 +173,6 @@ gimp_image_set_colormap (GimpImage *image,
memcpy (private->colormap, colormap, n_colors * 3);
}
else if (private->colormap)
{
gimp_image_colormap_dispose (image);
gimp_image_colormap_free (image);
}
private->n_colors = n_colors;
@@ -200,6 +195,31 @@ gimp_image_set_colormap (GimpImage *image,
gimp_image_colormap_changed (image, -1);
}
void
gimp_image_unset_colormap (GimpImage *image,
gboolean push_undo)
{
GimpImagePrivate *private;
g_return_if_fail (GIMP_IS_IMAGE (image));
private = GIMP_IMAGE_GET_PRIVATE (image);
if (push_undo)
gimp_image_undo_push_image_colormap (image,
C_("undo-type", "Unset Colormap"));
if (private->colormap)
{
gimp_image_colormap_dispose (image);
gimp_image_colormap_free (image);
}
private->n_colors = 0;
gimp_image_colormap_changed (image, -1);
}
void
gimp_image_get_colormap_entry (GimpImage *image,
gint color_index,
@@ -286,7 +306,7 @@ gimp_image_add_colormap_entry (GimpImage *image,
/* private functions */
void
static void
gimp_image_colormap_set_palette_entry (GimpImage *image,
gint index)
{

View File

@@ -34,6 +34,8 @@ void gimp_image_set_colormap (GimpImage *image,
const guchar *colormap,
gint n_colors,
gboolean push_undo);
void gimp_image_unset_colormap (GimpImage *image,
gboolean push_undo);
void gimp_image_get_colormap_entry (GimpImage *image,
gint color_index,

View File

@@ -1002,7 +1002,7 @@ gimp_image_convert (GimpImage *image,
case GIMP_RGB:
case GIMP_GRAY:
if (old_type == GIMP_INDEXED)
gimp_image_set_colormap (image, NULL, 0, TRUE);
gimp_image_unset_colormap (image, TRUE);
break;
case GIMP_INDEXED:

View File

@@ -46,7 +46,7 @@ gimp_image_item_list_translate (GimpImage *image,
{
GList *l;
if (push_undo)
if (push_undo && list->next)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_DISPLACE,
C_("undo-type", "Translate Items"));
@@ -54,7 +54,7 @@ gimp_image_item_list_translate (GimpImage *image,
gimp_item_translate (GIMP_ITEM (l->data),
offset_x, offset_y, push_undo);
if (push_undo)
if (push_undo && list->next)
gimp_image_undo_group_end (image);
}
}
@@ -74,14 +74,16 @@ gimp_image_item_list_flip (GimpImage *image,
{
GList *l;
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Flip Items"));
if (list->next)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Flip Items"));
for (l = list; l; l = g_list_next (l))
gimp_item_flip (GIMP_ITEM (l->data), context,
flip_type, axis, clip_result);
gimp_image_undo_group_end (image);
if (list->next)
gimp_image_undo_group_end (image);
}
}
@@ -101,14 +103,16 @@ gimp_image_item_list_rotate (GimpImage *image,
{
GList *l;
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Rotate Items"));
if (list->next)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Rotate Items"));
for (l = list; l; l = g_list_next (l))
gimp_item_rotate (GIMP_ITEM (l->data), context,
rotate_type, center_x, center_y, clip_result);
gimp_image_undo_group_end (image);
if (list->next)
gimp_image_undo_group_end (image);
}
}
@@ -131,8 +135,9 @@ gimp_image_item_list_transform (GimpImage *image,
{
GList *l;
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Transform Items"));
if (list->next)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Transform Items"));
for (l = list; l; l = g_list_next (l))
gimp_item_transform (GIMP_ITEM (l->data), context,
@@ -140,25 +145,24 @@ gimp_image_item_list_transform (GimpImage *image,
interpolation_type, recursion_level,
clip_result, progress);
gimp_image_undo_group_end (image);
if (list->next)
gimp_image_undo_group_end (image);
}
}
/**
* gimp_image_item_list_get_list:
* @image: An @image.
* @exclude: An item to exclude.
* @type: Which type of items to return.
* @set: Set the returned items are part of.
*
* This function returns a #GList of #GimpItem<!-- -->s for which the
* @type and @set criterions match.
*
* Return value: The list of items, excluding @exclude.
* Return value: The list of items.
**/
GList *
gimp_image_item_list_get_list (const GimpImage *image,
const GimpItem *exclude,
GimpItemTypeMask type,
GimpItemSet set)
{
@@ -167,7 +171,6 @@ gimp_image_item_list_get_list (const GimpImage *image,
GList *return_list = NULL;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (exclude == NULL || GIMP_IS_ITEM (exclude), NULL);
if (type & GIMP_ITEM_TYPE_LAYERS)
{
@@ -177,7 +180,7 @@ gimp_image_item_list_get_list (const GimpImage *image,
{
GimpItem *item = list->data;
if (item != exclude && gimp_item_is_in_set (item, set))
if (gimp_item_is_in_set (item, set))
return_list = g_list_prepend (return_list, item);
}
@@ -192,7 +195,7 @@ gimp_image_item_list_get_list (const GimpImage *image,
{
GimpItem *item = list->data;
if (item != exclude && gimp_item_is_in_set (item, set))
if (gimp_item_is_in_set (item, set))
return_list = g_list_prepend (return_list, item);
}
@@ -207,7 +210,7 @@ gimp_image_item_list_get_list (const GimpImage *image,
{
GimpItem *item = list->data;
if (item != exclude && gimp_item_is_in_set (item, set))
if (gimp_item_is_in_set (item, set))
return_list = g_list_prepend (return_list, item);
}
@@ -240,49 +243,23 @@ gimp_image_item_list_remove_children (GList *list,
}
GList *
gimp_image_item_list_filter (const GimpItem *exclude,
GList *list,
gboolean remove_children,
gboolean remove_locked)
gimp_image_item_list_filter (GList *list)
{
GList *l;
g_return_val_if_fail (exclude == NULL || GIMP_IS_ITEM (exclude), NULL);
if (! list)
return NULL;
if (remove_children)
for (l = list; l; l = g_list_next (l))
{
if (exclude)
list = gimp_image_item_list_remove_children (list, exclude);
GimpItem *item = l->data;
GList *next;
for (l = list; l; l = g_list_next (l))
{
GimpItem *item = l->data;
GList *next;
next = gimp_image_item_list_remove_children (g_list_next (l), item);
next = gimp_image_item_list_remove_children (g_list_next (l), item);
l->next = next;
if (next)
next->prev = l;
}
}
if (remove_locked)
{
l = list;
while (l)
{
GimpItem *item = l->data;
l = g_list_next (l);
if (gimp_item_is_content_locked (item))
list = g_list_remove (list, item);
}
l->next = next;
if (next)
next->prev = l;
}
return list;

View File

@@ -48,14 +48,10 @@ void gimp_image_item_list_transform (GimpImage *image,
GimpProgress *progress);
GList * gimp_image_item_list_get_list (const GimpImage *image,
const GimpItem *exclude,
GimpItemTypeMask type,
GimpItemSet set);
GList * gimp_image_item_list_filter (const GimpItem *exclude,
GList *list,
gboolean remove_children,
gboolean remove_locked);
GList * gimp_image_item_list_filter (GList *list);
#endif /* __GIMP_IMAGE_ITEM_LIST_H__ */

View File

@@ -161,8 +161,9 @@ gimp_image_merge_visible_layers (GimpImage *image,
}
GimpLayer *
gimp_image_flatten (GimpImage *image,
GimpContext *context)
gimp_image_flatten (GimpImage *image,
GimpContext *context,
GError **error)
{
GList *list;
GSList *merge_list = NULL;
@@ -170,16 +171,7 @@ gimp_image_flatten (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
gimp_set_busy (image->gimp);
gimp_image_undo_group_start (image,
GIMP_UNDO_GROUP_IMAGE_LAYERS_MERGE,
C_("undo-type", "Flatten Image"));
/* if there's a floating selection, anchor it */
if (gimp_image_get_floating_selection (image))
floating_sel_anchor (gimp_image_get_floating_selection (image));
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
for (list = gimp_image_get_layer_iter (image);
list;
@@ -187,23 +179,43 @@ gimp_image_flatten (GimpImage *image,
{
layer = list->data;
if (gimp_layer_is_floating_sel (layer))
continue;
if (gimp_item_get_visible (GIMP_ITEM (layer)))
merge_list = g_slist_append (merge_list, layer);
}
layer = gimp_image_merge_layers (image,
gimp_image_get_layers (image),
merge_list, context,
GIMP_FLATTEN_IMAGE);
g_slist_free (merge_list);
if (merge_list)
{
gimp_set_busy (image->gimp);
gimp_image_alpha_changed (image);
gimp_image_undo_group_start (image,
GIMP_UNDO_GROUP_IMAGE_LAYERS_MERGE,
C_("undo-type", "Flatten Image"));
gimp_image_undo_group_end (image);
/* if there's a floating selection, anchor it */
if (gimp_image_get_floating_selection (image))
floating_sel_anchor (gimp_image_get_floating_selection (image));
gimp_unset_busy (image->gimp);
layer = gimp_image_merge_layers (image,
gimp_image_get_layers (image),
merge_list, context,
GIMP_FLATTEN_IMAGE);
g_slist_free (merge_list);
return layer;
gimp_image_alpha_changed (image);
gimp_image_undo_group_end (image);
gimp_unset_busy (image->gimp);
return layer;
}
g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
_("Cannot flatten an image without any visible layer."));
return NULL;
}
GimpLayer *

View File

@@ -33,7 +33,8 @@ GimpLayer * gimp_image_merge_group_layer (GimpImage *image,
GimpGroupLayer *group);
GimpLayer * gimp_image_flatten (GimpImage *image,
GimpContext *context);
GimpContext *context,
GError **error);
GimpVectors * gimp_image_merge_visible_vectors (GimpImage *image,
GError **error);

View File

@@ -78,7 +78,7 @@ gimp_image_pick_layer_by_bounds (const GimpImage *image,
{
GimpLayer *layer = list->data;
if (gimp_item_get_visible (GIMP_ITEM (layer)))
if (gimp_item_is_visible (GIMP_ITEM (layer)))
{
gint off_x, off_y;
gint width, height;
@@ -127,7 +127,8 @@ gimp_image_pick_text_layer (const GimpImage *image,
x >= off_x &&
y >= off_y &&
x < off_x + gimp_item_get_width (GIMP_ITEM (layer)) &&
y < off_y + gimp_item_get_height (GIMP_ITEM (layer)))
y < off_y + gimp_item_get_height (GIMP_ITEM (layer)) &&
gimp_item_is_visible (GIMP_ITEM (layer)))
{
g_list_free (all_layers);

View File

@@ -38,8 +38,10 @@ struct _GimpImagePrivate
GimpPlugInProcedure *load_proc; /* procedure used for loading */
GimpPlugInProcedure *save_proc; /* last save procedure used */
GimpPlugInProcedure *export_proc; /* last export procedure used */
gchar *display_name; /* display basename */
gchar *display_path; /* display full path */
gint width; /* width in pixels */
gint height; /* height in pixels */
gdouble xresolution; /* image x-res, in dpi */
@@ -109,5 +111,8 @@ struct _GimpImagePrivate
GIMP_TYPE_IMAGE, \
GimpImagePrivate)
void gimp_image_take_mask (GimpImage *image,
GimpChannel *mask);
#endif /* __GIMP_IMAGE_PRIVATE_H__ */

View File

@@ -85,7 +85,7 @@ gimp_image_resize_with_layers (GimpImage *image,
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_IMAGE_RESIZE,
C_("undo-type", "Resize Image"));
resize_layers = gimp_image_item_list_get_list (image, NULL,
resize_layers = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_LAYERS,
layer_set);
@@ -184,14 +184,16 @@ gimp_image_resize_with_layers (GimpImage *image,
g_list_free (resize_layers);
/* Reposition or remove all guides */
for (list = gimp_image_get_guides (image);
list;
list = g_list_next (list))
list = gimp_image_get_guides (image);
while (list)
{
GimpGuide *guide = list->data;
gboolean remove_guide = FALSE;
gint new_position = gimp_guide_get_position (guide);
list = g_list_next (list);
switch (gimp_guide_get_orientation (guide))
{
case GIMP_ORIENTATION_HORIZONTAL:
@@ -217,15 +219,17 @@ gimp_image_resize_with_layers (GimpImage *image,
}
/* Reposition or remove sample points */
for (list = gimp_image_get_sample_points (image);
list;
list = g_list_next (list))
list = gimp_image_get_sample_points (image);
while (list)
{
GimpSamplePoint *sample_point = list->data;
gboolean remove_sample_point = FALSE;
gint new_x = sample_point->x;
gint new_y = sample_point->y;
list = g_list_next (list);
new_y += offset_y;
if ((sample_point->y < 0) || (sample_point->y > new_height))
remove_sample_point = TRUE;

View File

@@ -210,6 +210,22 @@ gimp_image_rotate (GimpImage *image,
gimp_image_set_resolution (image, yres, xres);
}
/* Notify guide movements */
for (list = gimp_image_get_guides (image);
list;
list = g_list_next (list))
{
gimp_image_guide_moved (image, list->data);
}
/* Notify sample point movements */
for (list = gimp_image_get_sample_points (image);
list;
list = g_list_next (list))
{
gimp_image_sample_point_moved (image, list->data);
}
gimp_image_undo_group_end (image);
if (size_changed)
@@ -364,18 +380,18 @@ gimp_image_rotate_sample_points (GimpImage *image,
switch (rotate_type)
{
case GIMP_ROTATE_90:
sample_point->x = old_y;
sample_point->y = gimp_image_get_height (image) - old_x;
sample_point->x = gimp_image_get_height (image) - old_y;
sample_point->y = old_x;
break;
case GIMP_ROTATE_180:
sample_point->x = gimp_image_get_height (image) - old_x;
sample_point->y = gimp_image_get_width (image) - old_y;
sample_point->x = gimp_image_get_width (image) - old_x;
sample_point->y = gimp_image_get_height (image) - old_y;
break;
case GIMP_ROTATE_270:
sample_point->x = gimp_image_get_width (image) - old_y;
sample_point->y = old_x;
sample_point->x = old_y;
sample_point->y = gimp_image_get_width (image) - old_x;
break;
}
}

View File

@@ -26,6 +26,7 @@
#include "gimp.h"
#include "gimpcontainer.h"
#include "gimpguide.h"
#include "gimpgrouplayer.h"
#include "gimpimage.h"
#include "gimpimage-guides.h"
#include "gimpimage-item-list.h"
@@ -155,7 +156,10 @@ gimp_image_scale (GimpImage *image,
/* group layers are updated automatically */
if (gimp_viewable_get_children (GIMP_VIEWABLE (item)))
continue;
{
gimp_group_layer_suspend_resize (GIMP_GROUP_LAYER (item), FALSE);
continue;
}
if (! gimp_item_scale_by_factors (item,
img_scale_w, img_scale_h,
@@ -170,6 +174,11 @@ gimp_image_scale (GimpImage *image,
}
}
for (list = all_layers; list; list = g_list_next (list))
if (gimp_viewable_get_children (list->data))
gimp_group_layer_resume_resize (list->data, FALSE);
/* Scale all Guides */
for (list = gimp_image_get_guides (image);
list;
@@ -272,12 +281,12 @@ gimp_image_scale_check (const GimpImage *image,
current_size = gimp_object_get_memsize (GIMP_OBJECT (image), NULL);
/* the part of the image's memsize that scales linearly with the image */
drawables = gimp_image_item_list_get_list (image, NULL,
drawables = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_LAYERS |
GIMP_ITEM_TYPE_CHANNELS,
GIMP_ITEM_SET_ALL);
gimp_image_item_list_filter (NULL, drawables, TRUE, FALSE);
drawables = gimp_image_item_list_filter (drawables);
drawables = g_list_prepend (drawables, gimp_image_get_mask (image));

View File

@@ -24,6 +24,7 @@
#include "core-types.h"
#include "gimp.h"
#include "gimpgrid.h"
#include "gimpguide.h"
#include "gimpimage.h"
#include "gimpimage-grid.h"
@@ -100,10 +101,8 @@ gimp_image_snap_x (GimpImage *image,
gdouble xoffset;
gdouble i;
g_object_get (grid,
"xspacing", &xspacing,
"xoffset", &xoffset,
NULL);
gimp_grid_get_spacing (grid, &xspacing, NULL);
gimp_grid_get_offset (grid, &xoffset, NULL);
/* the snap-to-grid part could probably be rewritten */
while (xoffset > xspacing)
@@ -187,10 +186,8 @@ gimp_image_snap_y (GimpImage *image,
gdouble yoffset;
gdouble i;
g_object_get (grid,
"yspacing", &yspacing,
"yoffset", &yoffset,
NULL);
gimp_grid_get_spacing (grid, NULL, &yspacing);
gimp_grid_get_offset (grid, NULL, &yoffset);
while (yoffset > yspacing)
yoffset -= yspacing;
@@ -295,12 +292,8 @@ gimp_image_snap_point (GimpImage *image,
gdouble xoffset, yoffset;
gdouble i;
g_object_get (grid,
"xspacing", &xspacing,
"yspacing", &yspacing,
"xoffset", &xoffset,
"yoffset", &yoffset,
NULL);
gimp_grid_get_spacing (grid, &xspacing, &yspacing);
gimp_grid_get_offset (grid, &xoffset, &yoffset);
while (xoffset > xspacing)
xoffset -= xspacing;
@@ -661,6 +654,34 @@ gimp_image_snap_rectangle (GimpImage *image,
snapped = TRUE;
}
}
/* center */
coords1.x = x_center;
coords1.y = y_center;
if (gimp_stroke_nearest_point_get (stroke, &coords1, 1.0,
&nearest,
NULL, NULL, NULL) >= 0)
{
if (gimp_image_snap_distance (x_center, nearest.x,
epsilon_x,
&mindist_x, &nx))
{
mindist_x = ABS (nx - x_center);
*tx1 = RINT (x1 + (nx - x_center));
snapped = TRUE;
}
if (gimp_image_snap_distance (y_center, nearest.y,
epsilon_y,
&mindist_y, &ny))
{
mindist_y = ABS (ny - y_center);
*ty1 = RINT (y1 + (ny - y_center));
snapped = TRUE;
}
}
}
}

View File

@@ -740,6 +740,7 @@ gimp_image_constructed (GObject *object)
{
GimpImage *image = GIMP_IMAGE (object);
GimpImagePrivate *private = GIMP_IMAGE_GET_PRIVATE (image);
GimpChannel *selection;
GimpCoreConfig *config;
GimpTemplate *template;
@@ -765,15 +766,10 @@ gimp_image_constructed (GObject *object)
if (private->base_type == GIMP_INDEXED)
gimp_image_colormap_init (image);
/* create the selection mask */
private->selection_mask = gimp_selection_new (image,
gimp_image_get_width (image),
gimp_image_get_height (image));
g_object_ref_sink (private->selection_mask);
g_signal_connect (private->selection_mask, "update",
G_CALLBACK (gimp_image_mask_update),
image);
selection = gimp_selection_new (image,
gimp_image_get_width (image),
gimp_image_get_height (image));
gimp_image_take_mask (image, selection);
g_signal_connect_object (config, "notify::transparency-type",
G_CALLBACK (gimp_item_stack_invalidate_previews),
@@ -998,6 +994,12 @@ gimp_image_finalize (GObject *object)
private->display_name = NULL;
}
if (private->display_path)
{
g_free (private->display_path);
private->display_path = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -1017,6 +1019,12 @@ gimp_image_name_changed (GimpObject *object)
private->display_name = NULL;
}
if (private->display_path)
{
g_free (private->display_path);
private->display_path = NULL;
}
/* We never want the empty string as a name, so change empty strings
* to NULL strings (without emitting the "name-changed" signal
* again)
@@ -1144,9 +1152,7 @@ gimp_image_get_description (GimpViewable *viewable,
GimpImage *image = GIMP_IMAGE (viewable);
if (tooltip)
{
*tooltip = file_utils_uri_display_name (gimp_image_get_uri_or_untitled (image));
}
*tooltip = g_strdup (gimp_image_get_display_path (image));
return g_strdup_printf ("%s-%d",
gimp_image_get_display_name (image),
@@ -1630,8 +1636,7 @@ gimp_image_get_save_a_copy_uri (const GimpImage *image)
* @image: A #GimpImage.
*
* Returns: The XCF file URI, the imported file URI, or the exported
* file URI, in that order of precedence. Only to help implement
* backwards compatibility with GIMP 2.6 API.
* file URI, in that order of precedence.
**/
const gchar *
gimp_image_get_any_uri (const GimpImage *image)
@@ -1671,6 +1676,8 @@ gimp_image_set_imported_uri (GimpImage *image,
g_object_set_data_full (G_OBJECT (image), GIMP_FILE_IMPORT_SOURCE_URI_KEY,
g_strdup (uri), (GDestroyNotify) g_free);
gimp_object_name_changed (GIMP_OBJECT (image));
}
/**
@@ -1693,6 +1700,8 @@ gimp_image_set_exported_uri (GimpImage *image,
g_object_set_data_full (G_OBJECT (image),
GIMP_FILE_EXPORT_URI_KEY,
g_strdup (uri), (GDestroyNotify) g_free);
gimp_object_name_changed (GIMP_OBJECT (image));
}
/**
@@ -1732,6 +1741,100 @@ gimp_image_get_filename (const GimpImage *image)
return g_filename_from_uri (uri, NULL, NULL);
}
static gchar *
gimp_image_format_display_uri (GimpImage *image,
gboolean basename)
{
const gchar *uri_format = NULL;
const gchar *export_status = NULL;
const gchar *uri;
const gchar *source;
const gchar *dest;
gboolean is_imported;
gboolean is_exported;
gchar *display_uri = NULL;
gchar *format_string;
gchar *tmp;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
uri = gimp_image_get_uri (image);
source = gimp_image_get_imported_uri (image);
dest = gimp_image_get_exported_uri (image);
is_imported = (source != NULL);
is_exported = (dest != NULL);
if (uri)
{
display_uri = g_strdup (uri);
uri_format = "%s";
}
else
{
if (is_imported)
display_uri = g_strdup (source);
/* Calculate filename suffix */
if (! gimp_image_is_export_dirty (image))
{
if (is_exported)
{
display_uri = g_strdup (dest);
export_status = _(" (exported)");
}
else if (is_imported)
{
export_status = _(" (overwritten)");
}
else
{
g_warning ("Unexpected code path, Save+export implementation is buggy!");
}
}
else if (is_imported)
{
export_status = _(" (imported)");
}
if (display_uri)
{
gchar *tmp = file_utils_uri_with_new_ext (display_uri, NULL);
g_free (display_uri);
display_uri = tmp;
}
uri_format = "[%s]";
}
if (! display_uri)
{
display_uri = g_strdup (gimp_image_get_string_untitled ());
}
else if (basename)
{
tmp = file_utils_uri_display_basename (display_uri);
g_free (display_uri);
display_uri = tmp;
}
else
{
tmp = file_utils_uri_display_name (display_uri);
g_free (display_uri);
display_uri = tmp;
}
format_string = g_strconcat (uri_format, export_status, NULL);
tmp = g_strdup_printf (format_string, display_uri);
g_free (display_uri);
display_uri = tmp;
g_free (format_string);
return display_uri;
}
const gchar *
gimp_image_get_display_name (GimpImage *image)
{
@@ -1742,15 +1845,26 @@ gimp_image_get_display_name (GimpImage *image)
private = GIMP_IMAGE_GET_PRIVATE (image);
if (! private->display_name)
{
const gchar *uri = gimp_image_get_uri_or_untitled (image);
private->display_name = file_utils_uri_display_basename (uri);
}
private->display_name = gimp_image_format_display_uri (image, TRUE);
return private->display_name;
}
const gchar *
gimp_image_get_display_path (GimpImage *image)
{
GimpImagePrivate *private;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
private = GIMP_IMAGE_GET_PRIVATE (image);
if (! private->display_path)
private->display_path = gimp_image_format_display_uri (image, FALSE);
return private->display_path;
}
void
gimp_image_set_load_proc (GimpImage *image,
GimpPlugInProcedure *proc)
@@ -1785,6 +1899,23 @@ gimp_image_get_save_proc (const GimpImage *image)
return GIMP_IMAGE_GET_PRIVATE (image)->save_proc;
}
void
gimp_image_set_export_proc (GimpImage *image,
GimpPlugInProcedure *proc)
{
g_return_if_fail (GIMP_IS_IMAGE (image));
GIMP_IMAGE_GET_PRIVATE (image)->export_proc = proc;
}
GimpPlugInProcedure *
gimp_image_get_export_proc (const GimpImage *image)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
return GIMP_IMAGE_GET_PRIVATE (image)->export_proc;
}
void
gimp_image_set_resolution (GimpImage *image,
gdouble xresolution,
@@ -1971,6 +2102,27 @@ gimp_image_mask_changed (GimpImage *image)
g_signal_emit (image, gimp_image_signals[MASK_CHANGED], 0);
}
void
gimp_image_take_mask (GimpImage *image,
GimpChannel *mask)
{
GimpImagePrivate *private;
g_return_if_fail (GIMP_IS_IMAGE (image));
g_return_if_fail (GIMP_IS_SELECTION (mask));
private = GIMP_IMAGE_GET_PRIVATE (image);
if (private->selection_mask)
g_object_unref (private->selection_mask);
private->selection_mask = g_object_ref_sink (mask);
g_signal_connect (private->selection_mask, "update",
G_CALLBACK (gimp_image_mask_update),
image);
}
/* image components */
@@ -3704,9 +3856,6 @@ gimp_image_remove_layer (GimpImage *image,
g_list_free (children);
}
if (! new_active && private->layer_stack)
new_active = private->layer_stack->data;
new_active =
GIMP_LAYER (gimp_item_tree_remove_item (private->layers,
GIMP_ITEM (layer),

View File

@@ -191,6 +191,7 @@ void gimp_image_set_filename (GimpImage *image,
gchar * gimp_image_get_filename (const GimpImage *image);
const gchar * gimp_image_get_display_name (GimpImage *image);
const gchar * gimp_image_get_display_path (GimpImage *image);
void gimp_image_set_load_proc (GimpImage *image,
GimpPlugInProcedure *proc);
@@ -200,6 +201,9 @@ void gimp_image_set_save_proc (GimpImage *image,
GimpPlugInProcedure * gimp_image_get_save_proc (const GimpImage *image);
void gimp_image_saved (GimpImage *image,
const gchar *uri);
void gimp_image_set_export_proc (GimpImage *image,
GimpPlugInProcedure *proc);
GimpPlugInProcedure * gimp_image_get_export_proc (const GimpImage *image);
void gimp_image_exported (GimpImage *image,
const gchar *uri);

View File

@@ -314,7 +314,7 @@ gimp_imagefile_update (GimpImagefile *imagefile)
}
}
void
gboolean
gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
GimpContext *context,
GimpProgress *progress,
@@ -325,12 +325,12 @@ gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
GimpThumbnail *thumbnail;
GimpThumbState image_state;
g_return_if_fail (GIMP_IS_IMAGEFILE (imagefile));
g_return_if_fail (GIMP_IS_CONTEXT (context));
g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress));
g_return_val_if_fail (GIMP_IS_IMAGEFILE (imagefile), FALSE);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE);
g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), FALSE);
if (size < 1)
return;
return TRUE;
private = GET_PRIVATE (imagefile);
@@ -402,11 +402,19 @@ gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
if (! success)
{
gimp_message_literal (private->gimp,
G_OBJECT (progress), GIMP_MESSAGE_ERROR,
error->message);
G_OBJECT (progress), GIMP_MESSAGE_ERROR,
error->message);
g_clear_error (&error);
g_object_set (thumbnail,
"thumb-state", GIMP_THUMB_STATE_FAILED,
NULL);
}
return success;
}
return TRUE;
}
/* The weak version doesn't ref the imagefile but deals gracefully
@@ -440,7 +448,16 @@ gimp_imagefile_create_thumbnail_weak (GimpImagefile *imagefile,
g_object_add_weak_pointer (G_OBJECT (imagefile), (gpointer) &imagefile);
gimp_imagefile_create_thumbnail (local, context, progress, size, replace);
if (! gimp_imagefile_create_thumbnail (local, context, progress, size, replace))
{
/* The weak version works on a local copy so the thumbnail status
* of the actual image is not properly updated in case of creation
* failure, thus it would end up in a generic GIMP_THUMB_STATE_NOT_FOUND,
* which is less informative. */
g_object_set (private->thumbnail,
"thumb-state", GIMP_THUMB_STATE_FAILED,
NULL);
}
if (imagefile)
{
@@ -545,6 +562,11 @@ gimp_imagefile_info_changed (GimpImagefile *imagefile)
private->description = NULL;
}
if (private->icon)
{
g_object_unref (GET_PRIVATE (imagefile)->icon);
private->icon = NULL;
}
g_signal_emit (imagefile, gimp_imagefile_signals[INFO_CHANGED], 0);
}

View File

@@ -64,7 +64,7 @@ GIcon * gimp_imagefile_get_gicon (GimpImagefile *imagefile);
void gimp_imagefile_set_mime_type (GimpImagefile *imagefile,
const gchar *mime_type);
void gimp_imagefile_update (GimpImagefile *imagefile);
void gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
gboolean gimp_imagefile_create_thumbnail (GimpImagefile *imagefile,
GimpContext *context,
GimpProgress *progress,
gint size,

View File

@@ -115,7 +115,7 @@ gimp_image_map_config_set_property (GObject *object,
t = config->time;
tm = *localtime (&t);
strftime (buf, sizeof (buf), "%Y-%m-%d %T", &tm);
strftime (buf, sizeof (buf), "%Y-%m-%d %H:%M:%S", &tm);
name = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
gimp_object_set_name (GIMP_OBJECT (config), name);

View File

@@ -415,9 +415,12 @@ gimp_image_undo_pop (GimpUndo *undo,
colormap = g_memdup (gimp_image_get_colormap (image),
GIMP_IMAGE_COLORMAP_SIZE);
gimp_image_set_colormap (image,
image_undo->colormap, image_undo->num_colors,
FALSE);
if (image_undo->colormap)
gimp_image_set_colormap (image,
image_undo->colormap, image_undo->num_colors,
FALSE);
else
gimp_image_unset_colormap (image, FALSE);
if (image_undo->colormap)
g_free (image_undo->colormap);

View File

@@ -70,7 +70,7 @@ gimp_item_toggle_exclusive_visible (GimpItem *item,
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_UNDO_STACK,
GIMP_UNDO_GROUP_ITEM_VISIBILITY);
if (undo && (g_object_get_data (G_OBJECT (undo), "exclusive-item") ==
if (undo && (g_object_get_data (G_OBJECT (undo), "exclusive-visible-item") ==
(gpointer) item))
push_undo = FALSE;
@@ -84,7 +84,7 @@ gimp_item_toggle_exclusive_visible (GimpItem *item,
GIMP_UNDO_GROUP_ITEM_VISIBILITY);
if (undo)
g_object_set_data (G_OBJECT (undo), "exclusive-item",
g_object_set_data (G_OBJECT (undo), "exclusive-visible-item",
(gpointer) item);
}
@@ -125,6 +125,93 @@ gimp_item_toggle_exclusive_visible (GimpItem *item,
g_list_free (ancestry);
}
void
gimp_item_toggle_exclusive_linked (GimpItem *item,
GimpContext *context)
{
GList *on = NULL;
GList *off = NULL;
GList *list;
g_return_if_fail (GIMP_IS_ITEM (item));
g_return_if_fail (gimp_item_is_attached (item));
g_return_if_fail (GIMP_IS_CONTEXT (context));
for (list = gimp_item_get_container_iter (item);
list;
list = g_list_next (list))
{
GimpItem *other = list->data;
if (other != item)
{
if (gimp_item_get_linked (other))
on = g_list_prepend (on, other);
else
off = g_list_prepend (off, other);
}
}
if (on || off || ! gimp_item_get_linked (item))
{
GimpImage *image = gimp_item_get_image (item);
GimpUndo *undo;
gboolean push_undo = TRUE;
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_UNDO_STACK,
GIMP_UNDO_GROUP_ITEM_LINKED);
if (undo && (g_object_get_data (G_OBJECT (undo), "exclusive-linked-item") ==
(gpointer) item))
push_undo = FALSE;
if (push_undo)
{
if (gimp_image_undo_group_start (image,
GIMP_UNDO_GROUP_ITEM_LINKED,
_("Set Item Exclusive Linked")))
{
undo = gimp_image_undo_can_compress (image, GIMP_TYPE_UNDO_STACK,
GIMP_UNDO_GROUP_ITEM_LINKED);
if (undo)
g_object_set_data (G_OBJECT (undo), "exclusive-linked-item",
(gpointer) item);
}
gimp_image_undo_push_item_linked (image, NULL, item);
for (list = on; list; list = g_list_next (list))
gimp_image_undo_push_item_linked (image, NULL, list->data);
for (list = off; list; list = g_list_next (list))
gimp_image_undo_push_item_linked (image, NULL, list->data);
gimp_image_undo_group_end (image);
}
else
{
gimp_undo_refresh_preview (undo, context);
}
if (off || ! gimp_item_get_linked (item))
{
gimp_item_set_linked (item, TRUE, FALSE);
for (list = off; list; list = g_list_next (list))
gimp_item_set_linked (list->data, TRUE, FALSE);
}
else
{
for (list = on; list; list = g_list_next (list))
gimp_item_set_linked (list->data, FALSE, FALSE);
}
g_list_free (on);
g_list_free (off);
}
}
/* private functions */

View File

@@ -24,6 +24,8 @@
void gimp_item_toggle_exclusive_visible (GimpItem *item,
GimpContext *context);
void gimp_item_toggle_exclusive_linked (GimpItem *item,
GimpContext *context);
#endif /* __GIMP_ITEM_EXCLUSIVE_H__ */

View File

@@ -24,11 +24,14 @@
#include "gimpcontext.h"
#include "gimpimage.h"
#include "gimpimage-item-list.h"
#include "gimpimage-undo.h"
#include "gimpitem.h"
#include "gimpitem-linked.h"
#include "gimplist.h"
#include "gimpprogress.h"
#include "gimp-intl.h"
/* public functions */
@@ -38,22 +41,25 @@ gimp_item_linked_translate (GimpItem *item,
gint offset_y,
gboolean push_undo)
{
GList *list;
GimpImage *image;
GList *items;
g_return_if_fail (GIMP_IS_ITEM (item));
g_return_if_fail (gimp_item_get_linked (item) == TRUE);
g_return_if_fail (gimp_item_is_attached (item));
list = gimp_image_item_list_get_list (gimp_item_get_image (item), item,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
image = gimp_item_get_image (item);
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
items = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
gimp_image_item_list_translate (gimp_item_get_image (item), list,
items = gimp_image_item_list_filter (items);
gimp_image_item_list_translate (gimp_item_get_image (item), items,
offset_x, offset_y, push_undo);
g_list_free (list);
g_list_free (items);
}
void
@@ -63,23 +69,25 @@ gimp_item_linked_flip (GimpItem *item,
gdouble axis,
gboolean clip_result)
{
GList *list;
GimpImage *image;
GList *items;
g_return_if_fail (GIMP_IS_ITEM (item));
g_return_if_fail (GIMP_IS_CONTEXT (context));
g_return_if_fail (gimp_item_get_linked (item) == TRUE);
g_return_if_fail (gimp_item_is_attached (item));
list = gimp_image_item_list_get_list (gimp_item_get_image (item), item,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
image = gimp_item_get_image (item);
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
items = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
items = gimp_image_item_list_filter (items);
gimp_image_item_list_flip (gimp_item_get_image (item), list, context,
gimp_image_item_list_flip (image, items, context,
flip_type, axis, clip_result);
g_list_free (list);
g_list_free (items);
}
void
@@ -90,35 +98,42 @@ gimp_item_linked_rotate (GimpItem *item,
gdouble center_y,
gboolean clip_result)
{
GList *list;
GimpImage *image;
GList *items;
GList *channels;
g_return_if_fail (GIMP_IS_ITEM (item));
g_return_if_fail (GIMP_IS_CONTEXT (context));
g_return_if_fail (gimp_item_get_linked (item) == TRUE);
g_return_if_fail (gimp_item_is_attached (item));
list = gimp_image_item_list_get_list (gimp_item_get_image (item), item,
GIMP_ITEM_TYPE_LAYERS |
GIMP_ITEM_TYPE_VECTORS,
GIMP_ITEM_SET_LINKED);
image = gimp_item_get_image (item);
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
items = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_LAYERS |
GIMP_ITEM_TYPE_VECTORS,
GIMP_ITEM_SET_LINKED);
items = gimp_image_item_list_filter (items);
gimp_image_item_list_rotate (gimp_item_get_image (item), list, context,
channels = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_CHANNELS,
GIMP_ITEM_SET_LINKED);
channels = gimp_image_item_list_filter (channels);
if (items && channels)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_TRANSFORM,
C_("undo-type", "Rotate Items"));
gimp_image_item_list_rotate (image, items, context,
rotate_type, center_x, center_y, clip_result);
g_list_free (list);
list = gimp_image_item_list_get_list (gimp_item_get_image (item), item,
GIMP_ITEM_TYPE_CHANNELS,
GIMP_ITEM_SET_LINKED);
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
gimp_image_item_list_rotate (gimp_item_get_image (item), list, context,
gimp_image_item_list_rotate (image, channels, context,
rotate_type, center_x, center_y, TRUE);
g_list_free (list);
if (items && channels)
gimp_image_undo_group_end (image);
g_list_free (items);
g_list_free (channels);
}
void
@@ -131,7 +146,8 @@ gimp_item_linked_transform (GimpItem *item,
GimpTransformResize clip_result,
GimpProgress *progress)
{
GList *list;
GimpImage *image;
GList *items;
g_return_if_fail (GIMP_IS_ITEM (item));
g_return_if_fail (GIMP_IS_CONTEXT (context));
@@ -139,16 +155,17 @@ gimp_item_linked_transform (GimpItem *item,
g_return_if_fail (gimp_item_is_attached (item));
g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress));
list = gimp_image_item_list_get_list (gimp_item_get_image (item), item,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
image = gimp_item_get_image (item);
list = gimp_image_item_list_filter (item, list, TRUE, FALSE);
items = gimp_image_item_list_get_list (image,
GIMP_ITEM_TYPE_ALL,
GIMP_ITEM_SET_LINKED);
items = gimp_image_item_list_filter (items);
gimp_image_item_list_transform (gimp_item_get_image (item), list, context,
gimp_image_item_list_transform (image, items, context,
matrix, direction,
interpolation_type, recursion_level,
clip_result, progress);
g_list_free (list);
g_list_free (items);
}

View File

@@ -43,6 +43,8 @@
#include "gimpprogress.h"
#include "gimpstrokeoptions.h"
#include "paint/gimppaintoptions.h"
#include "gimp-intl.h"
@@ -1250,8 +1252,8 @@ gimp_item_scale_by_factors (GimpItem *item,
return FALSE;
}
new_offset_x = ROUND (w_factor * (gdouble) private->offset_x);
new_offset_y = ROUND (h_factor * (gdouble) private->offset_y);
new_offset_x = SIGNED_ROUND (w_factor * (gdouble) private->offset_x);
new_offset_y = SIGNED_ROUND (h_factor * (gdouble) private->offset_y);
new_width = ROUND (w_factor * (gdouble) gimp_item_get_width (item));
new_height = ROUND (h_factor * (gdouble) gimp_item_get_height (item));
@@ -1475,7 +1477,7 @@ gimp_item_stroke (GimpItem *item,
GimpDrawable *drawable,
GimpContext *context,
GimpStrokeOptions *stroke_options,
gboolean use_default_values,
GimpPaintOptions *paint_options,
gboolean push_undo,
GimpProgress *progress,
GError **error)
@@ -1489,6 +1491,8 @@ gimp_item_stroke (GimpItem *item,
g_return_val_if_fail (gimp_item_is_attached (GIMP_ITEM (drawable)), FALSE);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE);
g_return_val_if_fail (GIMP_IS_STROKE_OPTIONS (stroke_options), FALSE);
g_return_val_if_fail (paint_options == NULL ||
GIMP_IS_PAINT_OPTIONS (paint_options), FALSE);
g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -1498,7 +1502,7 @@ gimp_item_stroke (GimpItem *item,
{
GimpImage *image = gimp_item_get_image (item);
gimp_stroke_options_prepare (stroke_options, context, use_default_values);
gimp_stroke_options_prepare (stroke_options, context, paint_options);
if (push_undo)
gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_PAINT,

View File

@@ -240,7 +240,7 @@ gboolean gimp_item_stroke (GimpItem *item,
GimpDrawable *drawable,
GimpContext *context,
GimpStrokeOptions *stroke_options,
gboolean use_default_values,
GimpPaintOptions *paint_options,
gboolean push_undo,
GimpProgress *progress,
GError **error);

View File

@@ -692,15 +692,16 @@ gimp_layer_scale (GimpItem *item,
{
GimpLayer *layer = GIMP_LAYER (item);
GIMP_ITEM_CLASS (parent_class)->scale (item, new_width, new_height,
new_offset_x, new_offset_y,
interpolation_type, progress);
/* scale mask first, see bug 733839 */
if (layer->mask)
gimp_item_scale (GIMP_ITEM (layer->mask),
new_width, new_height,
new_offset_x, new_offset_y,
interpolation_type, progress);
GIMP_ITEM_CLASS (parent_class)->scale (item, new_width, new_height,
new_offset_x, new_offset_y,
interpolation_type, progress);
}
static void
@@ -988,7 +989,7 @@ gimp_layer_get_opacity_at (GimpPickable *pickable,
if (x >= 0 && x < gimp_item_get_width (GIMP_ITEM (layer)) &&
y >= 0 && y < gimp_item_get_height (GIMP_ITEM (layer)) &&
gimp_item_get_visible (GIMP_ITEM (layer)))
gimp_item_is_visible (GIMP_ITEM (layer)))
{
/* If the point is inside, and the layer has no
* alpha channel, success!

View File

@@ -195,8 +195,8 @@ gimp_pattern_clipboard_buffer_changed (Gimp *gimp,
PixelRegion bufferPR;
PixelRegion maskPR;
width = MIN (gimp_buffer_get_width (gimp->global_buffer), 512);
height = MIN (gimp_buffer_get_height (gimp->global_buffer), 512);
width = MIN (gimp_buffer_get_width (gimp->global_buffer), 1024);
height = MIN (gimp_buffer_get_height (gimp->global_buffer), 1024);
bytes = gimp_buffer_get_bytes (gimp->global_buffer);
pattern->mask = temp_buf_new (width, height, bytes, 0, 0, NULL);

View File

@@ -31,7 +31,6 @@
#include "config/gimpcoreconfig.h"
#include "gimp.h"
#include "gimpbrush.h"
#include "gimpcontext.h"
#include "gimpdashpattern.h"
#include "gimpmarshal.h"
@@ -545,12 +544,14 @@ gimp_stroke_options_take_dash_pattern (GimpStrokeOptions *options,
void
gimp_stroke_options_prepare (GimpStrokeOptions *options,
GimpContext *context,
gboolean use_default_values)
GimpPaintOptions *paint_options)
{
GimpStrokeOptionsPrivate *private;
g_return_if_fail (GIMP_IS_STROKE_OPTIONS (options));
g_return_if_fail (GIMP_IS_CONTEXT (context));
g_return_if_fail (paint_options == NULL ||
GIMP_IS_PAINT_OPTIONS (paint_options));
private = GET_PRIVATE (options);
@@ -561,29 +562,11 @@ gimp_stroke_options_prepare (GimpStrokeOptions *options,
case GIMP_STROKE_METHOD_PAINT_CORE:
{
GimpPaintInfo *paint_info = GIMP_CONTEXT (options)->paint_info;
GimpPaintOptions *paint_options;
GimpPaintInfo *paint_info = GIMP_CONTEXT (options)->paint_info;
if (use_default_values)
if (paint_options)
{
GimpBrush *brush;
gdouble brush_size;
gint height;
gint width;
paint_options = gimp_paint_options_new (paint_info);
brush = gimp_context_get_brush (context);
if (GIMP_IS_BRUSH (brush))
{
gimp_brush_transform_size (brush, 1.0, 1.0, 0.0, &height, &width);
brush_size = MAX (height, width);
g_object_set (paint_options,
"brush-size", brush_size,
NULL);
}
g_return_if_fail (paint_info == paint_options->paint_info);
/* undefine the paint-relevant context properties and get them
* from the passed context
@@ -624,7 +607,6 @@ gimp_stroke_options_prepare (GimpStrokeOptions *options,
}
g_object_set (options, "paint-options", paint_options, NULL);
g_object_unref (paint_options);
}
break;

View File

@@ -74,7 +74,7 @@ void gimp_stroke_options_take_dash_pattern (GimpStrokeOptions
void gimp_stroke_options_prepare (GimpStrokeOptions *options,
GimpContext *context,
gboolean use_default_values);
GimpPaintOptions *paint_options);
void gimp_stroke_options_finish (GimpStrokeOptions *options);

View File

@@ -246,7 +246,7 @@ gimp_tag_compare_func (const void *p1,
/**
* gimp_tag_compare_with_string:
* @tag: a #GimpTag object.
* @tag_string: pointer to right-hand #GimpTag object.
* @tag_string: the string to compare to.
*
* Compares tag and a string according to tag comparison rules. Similar to
* gimp_tag_compare_func(), but can be used without creating temporary tag
@@ -276,6 +276,42 @@ gimp_tag_compare_with_string (GimpTag *tag,
return result;
}
/**
* gimp_tag_has_prefix:
* @tag: a #GimpTag object.
* @prefix_string: the prefix to compare to.
*
* Compares tag and a prefix according to tag comparison rules. Similar to
* gimp_tag_compare_with_string(), but does not work on the collate key
* because that can't be matched partially.
*
* Return value: wheher #tag starts with @prefix_string.
**/
gboolean
gimp_tag_has_prefix (GimpTag *tag,
const gchar *prefix_string)
{
gchar *case_folded1;
gchar *case_folded2;
gboolean has_prefix;
g_return_val_if_fail (GIMP_IS_TAG (tag), FALSE);
g_return_val_if_fail (prefix_string != NULL, FALSE);
case_folded1 = g_utf8_casefold (g_quark_to_string (tag->tag), -1);
case_folded2 = g_utf8_casefold (prefix_string, -1);
has_prefix = g_str_has_prefix (case_folded1, case_folded2);
g_free (case_folded1);
g_free (case_folded2);
g_printerr ("'%s' has prefix '%s': %d\n",
g_quark_to_string (tag->tag), prefix_string, has_prefix);
return has_prefix;
}
/**
* gimp_tag_string_make_valid:
* @tag_string: a text string.

View File

@@ -68,6 +68,8 @@ gint gimp_tag_compare_func (const void *p1,
const void *p2);
gint gimp_tag_compare_with_string (GimpTag *tag,
const gchar *tag_string);
gboolean gimp_tag_has_prefix (GimpTag *tag,
const gchar *prefix_string);
gchar * gimp_tag_string_make_valid (const gchar *tag_string);
gboolean gimp_tag_is_tag_separator (gunichar c);

View File

@@ -153,6 +153,8 @@ gimp_tagged_remove_tag (GimpTagged *tagged,
}
g_object_unref (tag_ref);
return;
}
}
}

View File

@@ -138,7 +138,7 @@ gimp_tool_info_finalize (GObject *object)
if (tool_info->help)
{
g_free (tool_info->help);
tool_info->blurb = NULL;
tool_info->help = NULL;
}
if (tool_info->menu_label)

View File

@@ -19,6 +19,7 @@
#include <glib-object.h>
#include "libgimpbase/gimpbase.h"
#include "libgimpconfig/gimpconfig.h"
#include "core-types.h"
@@ -27,6 +28,8 @@
#include "gimptoolpreset.h"
#include "gimptoolpreset-load.h"
#include "gimp-intl.h"
GList *
gimp_tool_preset_load (GimpContext *context,
@@ -48,7 +51,16 @@ gimp_tool_preset_load (GimpContext *context,
filename,
NULL, error))
{
return g_list_prepend (NULL, tool_preset);
if (GIMP_IS_CONTEXT (tool_preset->tool_options))
{
return g_list_prepend (NULL, tool_preset);
}
else
{
g_set_error (error, GIMP_CONFIG_ERROR, GIMP_CONFIG_ERROR_PARSE,
_("Error while parsing '%s'"),
gimp_filename_to_utf8 (filename));
}
}
g_object_unref (tool_preset);

View File

@@ -374,6 +374,20 @@ gimp_tool_preset_deserialize_property (GimpConfig *config,
"gimp", tool_preset->gimp,
NULL);
/* Initialize all GimpContext object properties that can be
* used by presets with some non-NULL object, so loading a
* broken preset won't leave us with NULL objects that have
* bad effects. See bug #742159.
*/
gimp_context_copy_properties (gimp_get_user_context (tool_preset->gimp),
GIMP_CONTEXT (options),
GIMP_CONTEXT_BRUSH_MASK |
GIMP_CONTEXT_DYNAMICS_MASK |
GIMP_CONTEXT_PATTERN_MASK |
GIMP_CONTEXT_GRADIENT_MASK |
GIMP_CONTEXT_PALETTE_MASK |
GIMP_CONTEXT_FONT_MASK);
if (! GIMP_CONFIG_GET_INTERFACE (options)->deserialize (GIMP_CONFIG (options),
scanner, 1,
NULL))

View File

@@ -900,7 +900,7 @@ gimp_viewable_get_pixbuf (GimpViewable *viewable,
if (gdk_pixbuf_get_width (private->preview_pixbuf) == width &&
gdk_pixbuf_get_height (private->preview_pixbuf) == height)
{
return pixbuf;
return private->preview_pixbuf;
}
g_object_unref (private->preview_pixbuf);

View File

@@ -136,18 +136,6 @@ file_open_dialog_response (GtkWidget *open_dialog,
for (list = uris; list; list = g_slist_next (list))
{
gchar *filename = file_utils_filename_from_uri (list->data);
if (filename)
{
gboolean regular = g_file_test (filename, G_FILE_TEST_IS_REGULAR);
g_free (filename);
if (! regular)
continue;
}
if (dialog->open_as_layers)
{
if (! dialog->image)

View File

@@ -54,6 +54,14 @@
#include "gimp-intl.h"
typedef enum
{
CHECK_URI_FAIL,
CHECK_URI_OK,
CHECK_URI_SWITCH_DIALOGS
} CheckUriResult;
/* local function prototypes */
static GtkFileChooserConfirmation
@@ -62,7 +70,7 @@ static GtkFileChooserConfirmation
static void file_save_dialog_response (GtkWidget *save_dialog,
gint response_id,
Gimp *gimp);
static gboolean file_save_dialog_check_uri (GtkWidget *save_dialog,
static CheckUriResult file_save_dialog_check_uri (GtkWidget *save_dialog,
Gimp *gimp,
gchar **ret_uri,
gchar **ret_basename,
@@ -72,7 +80,7 @@ static gboolean file_save_dialog_no_overwrite_confirmation (GimpFileDialog
static gchar * file_save_dialog_get_uri (GimpFileDialog *dialog);
static GSList * file_save_dialog_get_procs (GimpFileDialog *dialog,
Gimp *gimp);
static void file_save_dialog_unknown_ext_msg (GimpFileDialog *dialog,
static gboolean file_save_dialog_switch_dialogs (GimpFileDialog *file_dialog,
Gimp *gimp,
const gchar *basename);
static gboolean file_save_dialog_use_extension (GtkWidget *save_dialog,
@@ -152,7 +160,6 @@ file_save_dialog_response (GtkWidget *save_dialog,
gchar *uri;
gchar *basename;
GimpPlugInProcedure *save_proc;
gulong handler_id;
if (! dialog->export)
{
@@ -175,13 +182,16 @@ file_save_dialog_response (GtkWidget *save_dialog,
return;
}
handler_id = g_signal_connect (dialog, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&dialog);
g_object_ref (dialog);
g_object_ref (dialog->image);
if (file_save_dialog_check_uri (save_dialog, gimp,
&uri, &basename, &save_proc))
switch (file_save_dialog_check_uri (save_dialog, gimp,
&uri, &basename, &save_proc))
{
case CHECK_URI_FAIL:
break;
case CHECK_URI_OK:
gimp_file_dialog_set_sensitive (dialog, FALSE);
if (file_save_dialog_save_image (GIMP_PROGRESS (save_dialog),
@@ -191,6 +201,7 @@ file_save_dialog_response (GtkWidget *save_dialog,
save_proc,
GIMP_RUN_INTERACTIVE,
! dialog->save_a_copy && ! dialog->export,
FALSE,
dialog->export,
FALSE))
{
@@ -214,48 +225,46 @@ file_save_dialog_response (GtkWidget *save_dialog,
/* make sure the menus are updated with the keys we've just set */
gimp_image_flush (dialog->image);
/* Handle close-after-saing */
if (dialog)
/* Handle close-after-saving */
if (dialog->close_after_saving && dialog->display_to_close)
{
GtkWindow *parent;
GimpDisplay *display = GIMP_DISPLAY (dialog->display_to_close);
parent = gtk_window_get_transient_for (GTK_WINDOW (dialog));
if (dialog->close_after_saving)
if (display &&
! gimp_image_is_dirty (gimp_display_get_image (display)))
{
if (GIMP_IS_DISPLAY_SHELL (parent))
{
GimpDisplay *display;
display = GIMP_DISPLAY_SHELL (parent)->display;
if (! gimp_image_is_dirty (gimp_display_get_image (display)))
gimp_display_close (display);
}
gimp_display_close (display);
}
gtk_widget_destroy (save_dialog);
}
gtk_widget_destroy (save_dialog);
}
g_free (uri);
g_free (basename);
if (dialog)
gimp_file_dialog_set_sensitive (dialog, TRUE);
gimp_file_dialog_set_sensitive (dialog, TRUE);
break;
case CHECK_URI_SWITCH_DIALOGS:
dialog->busy = TRUE; /* prevent destruction */
gtk_dialog_response (GTK_DIALOG (dialog), FILE_SAVE_RESPONSE_OTHER_DIALOG);
dialog->busy = FALSE;
gtk_widget_destroy (save_dialog);
break;
}
if (dialog)
g_signal_handler_disconnect (dialog, handler_id);
g_object_unref (dialog->image);
g_object_unref (dialog);
}
/*
* IMPORTANT: When changing this function, keep
* file_save_dialog_no_overwrite_confirmation() up to date. It is difficult to
* move logic to a common place due to how the dialog is implemented
* in GTK+ in combination with how we use it.
/* IMPORTANT: When changing this function, keep
* file_save_dialog_no_overwrite_confirmation() up to date. It is
* difficult to move logic to a common place due to how the dialog is
* implemented in GTK+ in combination with how we use it.
*/
static gboolean
static CheckUriResult
file_save_dialog_check_uri (GtkWidget *save_dialog,
Gimp *gimp,
gchar **ret_uri,
@@ -272,7 +281,7 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
uri = file_save_dialog_get_uri (dialog);
if (! uri)
return FALSE;
return CHECK_URI_FAIL;
basename = file_utils_uri_display_basename (uri);
@@ -304,11 +313,11 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
GIMP_LOG (SAVE_DIALOG, "basename has no '.', trying to add extension");
if (! save_proc)
if (! save_proc && ! dialog->export)
{
ext = "xcf";
}
else if (save_proc->extensions_list)
else if (save_proc && save_proc->extensions_list)
{
ext = save_proc->extensions_list->data;
}
@@ -343,7 +352,7 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
g_free (basename);
return FALSE;
return CHECK_URI_FAIL;
}
else
{
@@ -364,11 +373,18 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
GIMP_LOG (SAVE_DIALOG,
"unable to figure save_proc, bailing out");
file_save_dialog_unknown_ext_msg (dialog, gimp, basename);
if (file_save_dialog_switch_dialogs (dialog, gimp, basename))
{
g_free (uri);
g_free (basename);
return CHECK_URI_SWITCH_DIALOGS;
}
g_free (uri);
g_free (basename);
return FALSE;
return CHECK_URI_FAIL;
}
}
else if (save_proc && ! save_proc->extensions_list)
@@ -397,11 +413,18 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
GIMP_LOG (SAVE_DIALOG,
"basename has no useful extension, bailing out");
file_save_dialog_unknown_ext_msg (dialog, gimp, basename);
if (file_save_dialog_switch_dialogs (dialog, gimp, basename))
{
g_free (uri);
g_free (basename);
return CHECK_URI_SWITCH_DIALOGS;
}
g_free (uri);
g_free (basename);
return FALSE;
return CHECK_URI_FAIL;
}
GIMP_LOG (SAVE_DIALOG, "use URI's proc '%s' so indirect saving works",
@@ -435,7 +458,8 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
"extension at all."));
g_free (uri);
g_free (basename);
return FALSE;
return CHECK_URI_FAIL;
}
else
{
@@ -448,7 +472,8 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
{
g_free (uri);
g_free (basename);
return FALSE;
return CHECK_URI_FAIL;
}
}
}
@@ -468,14 +493,15 @@ file_save_dialog_check_uri (GtkWidget *save_dialog,
if (! save_proc)
{
g_warning ("%s: EEEEEEK", G_STRFUNC);
return FALSE;
return CHECK_URI_FAIL;
}
*ret_uri = uri;
*ret_basename = basename;
*ret_save_proc = save_proc;
return TRUE;
return CHECK_URI_OK;
}
/*
@@ -538,41 +564,120 @@ file_save_dialog_get_procs (GimpFileDialog *dialog,
gimp->plug_in_manager->export_procs);
}
static void
file_save_dialog_unknown_ext_msg (GimpFileDialog *dialog,
Gimp *gimp,
const gchar *basename)
static gboolean
file_save_other_dialog_activated (GtkWidget *label,
const gchar *uri,
GtkDialog *dialog)
{
gtk_dialog_response (dialog, FILE_SAVE_RESPONSE_OTHER_DIALOG);
return TRUE;
}
static gboolean
file_save_dialog_switch_dialogs (GimpFileDialog *file_dialog,
Gimp *gimp,
const gchar *basename)
{
GimpPlugInProcedure *proc_in_other_group;
gboolean switch_dialogs = FALSE;
proc_in_other_group =
file_procedure_find ((dialog->export ?
gimp->plug_in_manager->save_procs :
gimp->plug_in_manager->export_procs),
file_procedure_find (file_dialog->export ?
gimp->plug_in_manager->save_procs :
gimp->plug_in_manager->export_procs,
basename,
NULL);
if (dialog->export && proc_in_other_group)
if (proc_in_other_group)
{
gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_WARNING,
_("You can use this dialog to export to various file formats. "
GtkWidget *dialog;
const gchar *primary;
const gchar *message;
const gchar *link;
if (file_dialog->export)
{
primary = _("The given filename cannot be used for exporting");
message = _("You can use this dialog to export to various file formats. "
"If you want to save the image to the GIMP XCF format, use "
"File→Save instead."));
}
else if (! dialog->export && proc_in_other_group)
{
gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_WARNING,
_("You can use this dialog to save to the GIMP XCF "
"format. Use File→Export to export to other file formats."));
"File→Save instead.");
link = _("Take me to the Save dialog");
}
else
{
primary = _("The given filename cannot be used for saving");
message = _("You can use this dialog to save to the GIMP XCF "
"format. Use File→Export to export to other file formats.");
link = _("Take me to the Export dialog");
}
dialog = gimp_message_dialog_new (_("Extension Mismatch"),
GIMP_STOCK_WARNING,
GTK_WIDGET (file_dialog),
GTK_DIALOG_DESTROY_WITH_PARENT,
gimp_standard_help_func, NULL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
NULL);
gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box,
"%s", primary);
gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box,
"%s", message);
if (! file_dialog->save_a_copy && ! file_dialog->close_after_saving)
{
GtkWidget *label;
gchar *markup;
markup = g_strdup_printf ("<a href=\"other-dialog\">%s</a>", link);
label = gtk_label_new (markup);
g_free (markup);
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (GIMP_MESSAGE_DIALOG (dialog)->box), label,
FALSE, FALSE, 0);
gtk_widget_show (label);
g_signal_connect (label, "activate-link",
G_CALLBACK (file_save_other_dialog_activated),
dialog);
}
gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog),
GTK_RESPONSE_CANCEL, FALSE);
gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog),
GTK_RESPONSE_OK, FALSE);
g_object_ref (dialog);
if (gimp_dialog_run (GIMP_DIALOG (dialog)) == FILE_SAVE_RESPONSE_OTHER_DIALOG)
{
switch_dialogs = TRUE;
}
gtk_widget_destroy (dialog);
g_object_unref (dialog);
gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog),
GTK_RESPONSE_CANCEL, TRUE);
gtk_dialog_set_response_sensitive (GTK_DIALOG (file_dialog),
GTK_RESPONSE_OK, TRUE);
}
else
{
gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_WARNING,
gimp_message (gimp, G_OBJECT (file_dialog), GIMP_MESSAGE_WARNING,
_("The given filename does not have any known "
"file extension. Please enter a known file "
"extension or select a file format from the "
"file format list."));
}
return switch_dialogs;
}
static gboolean
@@ -607,6 +712,8 @@ file_save_dialog_use_extension (GtkWidget *save_dialog,
gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog),
GTK_RESPONSE_CANCEL, FALSE);
gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog),
GTK_RESPONSE_OK, FALSE);
g_object_ref (dialog);
@@ -617,6 +724,8 @@ file_save_dialog_use_extension (GtkWidget *save_dialog,
gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog),
GTK_RESPONSE_CANCEL, TRUE);
gtk_dialog_set_response_sensitive (GTK_DIALOG (save_dialog),
GTK_RESPONSE_OK, TRUE);
return use_name;
}
@@ -629,7 +738,8 @@ file_save_dialog_save_image (GimpProgress *progress,
GimpPlugInProcedure *save_proc,
GimpRunMode run_mode,
gboolean change_saved_state,
gboolean export,
gboolean export_backward,
gboolean export_forward,
gboolean verbose_cancel)
{
GimpPDBStatusType status;
@@ -645,7 +755,9 @@ file_save_dialog_save_image (GimpProgress *progress,
}
status = file_save (gimp, image, progress, uri,
save_proc, run_mode, change_saved_state, export, &error);
save_proc, run_mode,
change_saved_state, export_backward, export_forward,
&error);
switch (status)
{

View File

@@ -19,6 +19,9 @@
#define __FILE_SAVE_DIALOG_H__
#define FILE_SAVE_RESPONSE_OTHER_DIALOG -23
GtkWidget * file_save_dialog_new (Gimp *gimp,
gboolean export);
@@ -29,7 +32,8 @@ gboolean file_save_dialog_save_image (GimpProgress *progress_and_handl
GimpPlugInProcedure *write_proc,
GimpRunMode run_mode,
gboolean save_a_copy,
gboolean export,
gboolean export_backward,
gboolean export_forward,
gboolean verbose_cancel);

View File

@@ -192,11 +192,7 @@ image_new_dialog_set (GtkWidget *widget,
template = gimp_image_new_get_last_template (dialog->context->gimp,
image);
/* make sure the resolution values are copied first (see bug #546924) */
gimp_config_sync (G_OBJECT (template), G_OBJECT (dialog->template),
GIMP_TEMPLATE_PARAM_COPY_FIRST);
gimp_config_sync (G_OBJECT (template), G_OBJECT (dialog->template),
0);
image_new_template_changed (dialog->context, template, dialog);
g_object_unref (template);
}
@@ -246,11 +242,23 @@ image_new_template_changed (GimpContext *context,
GimpTemplate *template,
ImageNewDialog *dialog)
{
gchar *comment;
GimpTemplateEditor *editor;
GtkWidget *chain;
gdouble xres, yres;
gchar *comment;
if (!template)
if (! template)
return;
editor = GIMP_TEMPLATE_EDITOR (dialog->editor);
chain = gimp_template_editor_get_resolution_chain (editor);
xres = gimp_template_get_resolution_x (template);
yres = gimp_template_get_resolution_y (template);
gimp_chain_button_set_active (GIMP_CHAIN_BUTTON (chain),
ABS (xres - yres) < GIMP_MIN_RESOLUTION);
comment = (gchar *) gimp_template_get_comment (template);
if (! comment || ! strlen (comment))

Some files were not shown because too many files have changed in this diff Show More