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.
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.
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)
Translate untranslated 'tag' to 'Stichwort' which is the most usual
translation in this domain.
(cherry picked from commit 11fabc84bcb3b4bd2a0524a84e8a97cabc76c9ec)
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)
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)
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)
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.
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
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.
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.
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.
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).
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.
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.
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.
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.
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
Update dependency versions. Fix build errors. Exclude libgcrypt's doc
directory from build, because it introduces new dependencies and we
don't need it.
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.
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!
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.
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)
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)
...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)
...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)
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)
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)
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".
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
Add the missing language files for GEGL and GIMP to the gtk-mac-bundler
configuration.
(cherry picked from commit fb743b5a095d1523f281011a600a2ff2465182e9)
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)
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)
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
+ 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)
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)
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)
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)
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)
Add Jenkins tutorial (first draft). Currently in OpenDocument format for
convenient, platform independent editing, but finally to be replaced
with DocBook version.
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)
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)
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)
...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)
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/
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)
...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)
Do not stay forever in "Creating Preview..." state during
auto-thumbnailing, and fix error showing when creation fails.
(cherry picked from commit 6208d21979)
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)
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)
...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)
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)
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)
...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)
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)
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)
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)
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)
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)
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
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)
...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)
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)
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)
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)
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)
Allow building on NetBSD -current where execinfo.h is present but
backtrace() and backtrace_symbols() are in -lexecinfo.
(cherry picked from commit 4ac3967a5d)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
This reverts commit 48e4cb708e.
Please avoid changing strings on the stable branch unless it's *absolutely*
necessary. Fixing typos on master is enough.
This reverts commit eb3a62c43e.
Please avoid changing strings on the stable branch unless it's *absolutely*
necessary. Fixing typos on master is enough.
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)
Fix this by using a real point-segment distance.
Some artifacts remains though, they must come from somewhere else.
(cherry picked from commit 4caa5a113f)
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)
Ironically, the standardized value is called COMPRESSION_ADOBE_DEFLATE,
while the vendor-specific value is called COMPRESSION_DEFLATE.
(cherry picked from commit 4bc51691e52e5813bb10b3e6e4b1e18cdeab5b6d)
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)
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.
Fix typos in Vectors, Gradients, Dynamics, Buffers,
Document History, Error console dialogs.
Use 'Zeichendynamik' consistently as translation of
'Dynamics'. Make plural forms clearer.
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)
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)
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)
...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)
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)
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)
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)
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)
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.
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)
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)
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)
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)
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)
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)
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.
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)
...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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
...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)
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...
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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.
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]
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Prefer text/uri-list over image/* to make dropping from file managers
always behave like opening the image directly.
(cherry picked from commit 454639f9d9)
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)
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.
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.
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.
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)
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)
Fix GimpSpinScale too: add the needed events ourselves, and handle
motion hints (which the parent classes add) in motion().
(cherry picked from commit 85a099f988)
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)
GimpDisplayShell isn't a GtkWindow (anymore), therefore use
gtk_widget_get_toplevel() to find the actual toplevel window.
(cherry picked from commit 1a4087bd5f)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
(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.
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)
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)
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.
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)
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)
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)
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.
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)
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)
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)
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)
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)
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)
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)
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.
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)
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)
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)
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)
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)
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)
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)
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.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
(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)
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.
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)
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)
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)
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)
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)
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)
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.
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)
specifically in button_release() and when the container changes, we
can badly crash in some situations otherwise.
(cherry picked from commit 27a767ee54)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.