New upstream version 2.10.34

This commit is contained in:
Jeremy Bicha
2023-03-01 18:41:57 -05:00
354 changed files with 51356 additions and 34829 deletions

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am.
# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -317,6 +317,8 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AA_LIBS = @AA_LIBS@
@ -366,8 +368,6 @@ CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
CPP_FOR_BUILD = @CPP_FOR_BUILD@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
@ -386,10 +386,8 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
FILECMD = @FILECMD@
FILE_AA = @FILE_AA@
FILE_EXR = @FILE_EXR@
FILE_HEIF = @FILE_HEIF@
@ -438,6 +436,7 @@ GIMP_PKGCONFIG_VERSION = @GIMP_PKGCONFIG_VERSION@
GIMP_PLUGINS = @GIMP_PLUGINS@
GIMP_PLUGIN_VERSION = @GIMP_PLUGIN_VERSION@
GIMP_REAL_VERSION = @GIMP_REAL_VERSION@
GIMP_RELEASE = @GIMP_RELEASE@
GIMP_SYSCONF_VERSION = @GIMP_SYSCONF_VERSION@
GIMP_TOOL_VERSION = @GIMP_TOOL_VERSION@
GIMP_UNSTABLE = @GIMP_UNSTABLE@
@ -1181,6 +1180,7 @@ cscopelist-am: $(am__tagged_files)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am

View File

@ -274,17 +274,21 @@ gimp_display_shell_canvas_expose (GtkWidget *widget,
/* ignore events on overlays */
if (eevent->window == gtk_widget_get_window (widget))
{
cairo_t *cr;
GimpImage *image = gimp_display_get_image (shell->display);
cairo_t *cr;
cr = gdk_cairo_create (gtk_widget_get_window (shell->canvas));
gdk_cairo_region (cr, eevent->region);
cairo_clip (cr);
if (gimp_display_get_image (shell->display))
/* If we are currently converting the image, it might be in inconsistent
* state and should not be redrawn.
*/
if (image != NULL && ! gimp_image_get_converting (image))
{
gimp_display_shell_canvas_draw_image (shell, cr);
}
else
else if (image == NULL)
{
gimp_display_shell_canvas_draw_drop_zone (shell, cr);
}

View File

@ -75,6 +75,15 @@ gimp_display_shell_render (GimpDisplayShell *shell,
g_return_if_fail (scale > 0.0);
image = gimp_display_get_image (shell->display);
/* While converting, the render can be wrong; but worse, we rely on allocated
* data which might be the wrong size and this was a crash we had which was
* hard to diagnose as it doesn't always crash immediately (see discussions in
* #9136). This is why this assert is important. We want to make sure we never
* call this when the shell's image is in the inconsistent "converting" state.
*/
g_return_if_fail (! gimp_image_get_converting (image));
buffer = gimp_pickable_get_buffer (
gimp_display_shell_get_pickable (shell));
#ifdef USE_NODE_BLIT

View File

@ -55,6 +55,9 @@
/* spacing between the icon and the statusbar label */
#define ICON_SPACING 2
/* width/height of the statusbar icon rect */
#define ICON_SIZE 16
/* timeout (in milliseconds) for temporary statusbar messages */
#define MESSAGE_TIMEOUT 8000
@ -1342,7 +1345,7 @@ gimp_statusbar_label_expose (GtkWidget *widget,
/* the rectangle width is negative when rendering right-to-left */
x += PANGO_PIXELS (rect.x) + (rect.width < 0 ?
PANGO_PIXELS (rect.width) : 0);
y += PANGO_PIXELS (rect.y);
y += PANGO_PIXELS (rect.y / ICON_SIZE);
gdk_cairo_set_source_pixbuf (cr, statusbar->icon, x, y);
cairo_paint (cr);
@ -1734,7 +1737,7 @@ gimp_statusbar_load_icon (GimpStatusbar *statusbar,
if (icon)
return g_object_ref (icon);
icon = gimp_widget_load_icon (statusbar->label, icon_name, 16);
icon = gimp_widget_load_icon (statusbar->label, icon_name, ICON_SIZE);
/* this is not optimal but so what */
if (g_hash_table_size (statusbar->icon_hash) > 16)

View File

@ -548,10 +548,11 @@ gimp_tool_handle_grid_button_press (GimpToolWidget *widget,
GdkModifierType state,
GimpButtonPressType press_type)
{
GimpToolHandleGrid *grid = GIMP_TOOL_HANDLE_GRID (widget);
GimpToolHandleGridPrivate *private = grid->private;
gint n_handles = private->n_handles;
gint active_handle = private->handle - 1;
GimpToolHandleGrid *grid = GIMP_TOOL_HANDLE_GRID (widget);
GimpToolHandleGridPrivate *private = grid->private;
gint n_handles = private->n_handles;
gint active_handle = private->handle - 1;
GimpCanvasItem *dragged_handle = NULL;
switch (private->handle_mode)
{
@ -591,9 +592,23 @@ gimp_tool_handle_grid_button_press (GimpToolWidget *widget,
g_object_notify (G_OBJECT (grid), "n-handles");
}
else if (active_handle >= 0 &&
active_handle < 4)
{
/* existing handle is being dragged. don't set dragged_handle for
* newly-created handles, otherwise their snap offset will be wrong
*/
dragged_handle = private->handles[private->handle];
}
break;
case GIMP_HANDLE_MODE_MOVE:
if (active_handle >= 0 &&
active_handle < 4)
{
/* existing handle is being dragged */
dragged_handle = private->handles[private->handle];
}
/* check for valid position and calculating of OX0...OY3 is
* done on button release
*/
@ -627,6 +642,22 @@ gimp_tool_handle_grid_button_press (GimpToolWidget *widget,
break;
}
/* ensure dragged handles snap to guides based on the handle center, not where
* the cursor grabbed them
*/
if (dragged_handle)
{
gdouble x, y;
gimp_canvas_handle_get_position (dragged_handle,
&x,
&y);
gimp_tool_widget_set_snap_offsets (widget,
SIGNED_ROUND (x - coords->x),
SIGNED_ROUND (y - coords->y),
0, 0);
}
private->last_x = coords->x;
private->last_y = coords->y;