Commit 7c6d74dc authored by Ari Pollak's avatar Ari Pollak

Imported Upstream version 2.8.18

parent 66d1b776
This diff is collapsed.
...@@ -64,6 +64,7 @@ EXTRA_DIST = \ ...@@ -64,6 +64,7 @@ EXTRA_DIST = \
NEWS.pre-2-2 \ NEWS.pre-2-2 \
NEWS.pre-2-4 \ NEWS.pre-2-4 \
NEWS.pre-2-6 \ NEWS.pre-2-6 \
NEWS.pre-2-8 \
README \ README \
README.i18n \ README.i18n \
authors.dtd \ authors.dtd \
......
This diff is collapsed.
...@@ -7,6 +7,56 @@ This is the stable branch of GIMP. No new features are being added ...@@ -7,6 +7,56 @@ This is the stable branch of GIMP. No new features are being added
here, just bug-fixes. here, just bug-fixes.
Overview of Changes from GIMP 2.8.16 to GIMP 2.8.18
===================================================
Core:
- Initialize fontconfig cache in separate thread to keep GUI
responsive on first startup
- Properly recognize layer masks as deactivated, e.g. for moving layers
- Create $XDG_DATA_HOME if it doesn't exist
- (CVE-2016-4994) Multiple Use-After-Free when parsing XCF channel
and layer properties
- Fix progress access to prevent crash on rapid sequence of commands
- Fix crash in gimp-gradient-segment-range-move
GUI:
- Disable color picker buttons on OS X to prevent a GUI lockup
- Disable "new-style" full-screen mode on OS X to prevent a crash
- Pulsing progress bar in splash screen to indicate unknown durations
- Fix gamut warning color for lcms display filter
- Fix unbolding of bold font on edit
- Prevent accidental renaming of wrong adjacent item
Installer:
- Change compression settings to decrease size by 20%
- Add Catalan, Danish, French, Dutch
Plug-ins:
- Fix crash on sRGB JPEG image drag & drop
- Fix ambiguous octal-escaped output of c-source
- Fix KISS CEL export
- Fix progress bar for file-compressor
- Make Script-Fu regex match return proper character indexes for
Unicode characters
- Fix Script-Fu modulo for large numbers
General:
- Documentation updates
- Bug fixes
- Translation updates
Overview of Changes from GIMP 2.8.14 to GIMP 2.8.16 Overview of Changes from GIMP 2.8.14 to GIMP 2.8.16
=================================================== ===================================================
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -30,6 +30,11 @@ ...@@ -30,6 +30,11 @@
_("Copyright © 1995-%s\n" \ _("Copyright © 1995-%s\n" \
"Spencer Kimball, Peter Mattis and the GIMP Development Team") "Spencer Kimball, Peter Mattis and the GIMP Development Team")
/* TRANSLATORS: do not end the license URL with a dot, because it would
* be in the link. Because of technical limitations, make sure the URL
* ends with a space, a newline or is end of text.
* Cf. bug 762282.
*/
#define GIMP_LICENSE \ #define GIMP_LICENSE \
_("GIMP is free software: you can redistribute it and/or modify it " \ _("GIMP is free software: you can redistribute it and/or modify it " \
"under the terms of the GNU General Public License as published by " \ "under the terms of the GNU General Public License as published by " \
...@@ -42,7 +47,7 @@ ...@@ -42,7 +47,7 @@
"GNU General Public License for more details." \ "GNU General Public License for more details." \
"\n\n" \ "\n\n" \
"You should have received a copy of the GNU General Public License " \ "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__ */ #endif /* __ABOUT_H__ */
This diff is collapsed.
...@@ -529,7 +529,7 @@ action_select_value (GimpActionSelectType select_type, ...@@ -529,7 +529,7 @@ action_select_value (GimpActionSelectType select_type,
value = max - (min - value); value = max - (min - value);
while (value > max) while (value > max)
value = min + (max - value); value = min + (value - max);
} }
else else
{ {
......
...@@ -527,6 +527,8 @@ file_open_dialog_show (Gimp *gimp, ...@@ -527,6 +527,8 @@ file_open_dialog_show (Gimp *gimp,
if (uri) if (uri)
gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), uri); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), uri);
gtk_window_set_title (GTK_WINDOW (dialog), title);
gimp_file_dialog_set_open_image (GIMP_FILE_DIALOG (dialog), gimp_file_dialog_set_open_image (GIMP_FILE_DIALOG (dialog),
image, open_as_layers); image, open_as_layers);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -122,7 +122,11 @@ gimp_xml_parser_parse_fd (GimpXmlParser *parser, ...@@ -122,7 +122,11 @@ gimp_xml_parser_parse_fd (GimpXmlParser *parser,
g_return_val_if_fail (parser != NULL, FALSE); g_return_val_if_fail (parser != NULL, FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
#ifdef G_OS_WIN32
io = g_io_channel_win32_new_fd (fd);
#else
io = g_io_channel_unix_new (fd); io = g_io_channel_unix_new (fd);
#endif
success = gimp_xml_parser_parse_io_channel (parser, io, error); success = gimp_xml_parser_parse_io_channel (parser, io, error);
......
This diff is collapsed.
...@@ -975,7 +975,7 @@ gimp_restore (Gimp *gimp, ...@@ -975,7 +975,7 @@ gimp_restore (Gimp *gimp,
/* initialize the list of fonts */ /* initialize the list of fonts */
status_callback (NULL, _("Fonts (this may take a while)"), 0.6); status_callback (NULL, _("Fonts (this may take a while)"), 0.6);
if (! gimp->no_fonts) if (! gimp->no_fonts)
gimp_fonts_load (gimp); gimp_fonts_load_with_status (gimp, status_callback);
/* initialize the list of gimp tool presets if we have a GUI */ /* initialize the list of gimp tool presets if we have a GUI */
if (! gimp->no_interface) if (! gimp->no_interface)
......
...@@ -1854,7 +1854,7 @@ gimp_gradient_segment_range_move (GimpGradient *gradient, ...@@ -1854,7 +1854,7 @@ gimp_gradient_segment_range_move (GimpGradient *gradient,
gimp_data_freeze (GIMP_DATA (gradient)); gimp_data_freeze (GIMP_DATA (gradient));
if (! range_l) if (! range_r)
range_r = gimp_gradient_segment_get_last (range_l); range_r = gimp_gradient_segment_get_last (range_l);
/* First or last segments in gradient? */ /* First or last segments in gradient? */
......
...@@ -984,39 +984,42 @@ gimp_layer_get_opacity_at (GimpPickable *pickable, ...@@ -984,39 +984,42 @@ gimp_layer_get_opacity_at (GimpPickable *pickable,
gint y) gint y)
{ {
GimpLayer *layer = GIMP_LAYER (pickable); GimpLayer *layer = GIMP_LAYER (pickable);
Tile *tile;
gint val = 0; gint val = 0;
if (x >= 0 && x < gimp_item_get_width (GIMP_ITEM (layer)) && if (x >= 0 && x < gimp_item_get_width (GIMP_ITEM (layer)) &&
y >= 0 && y < gimp_item_get_height (GIMP_ITEM (layer)) && y >= 0 && y < gimp_item_get_height (GIMP_ITEM (layer)) &&
gimp_item_is_visible (GIMP_ITEM (layer))) gimp_item_is_visible (GIMP_ITEM (layer)))
{ {
/* If the point is inside, and the layer has no GimpLayerMask *mask;
* alpha channel, success!
*/
if (! gimp_drawable_has_alpha (GIMP_DRAWABLE (layer))) if (! gimp_drawable_has_alpha (GIMP_DRAWABLE (layer)))
return OPAQUE_OPACITY; {
val = OPAQUE_OPACITY;
}
else
{
Tile *tile;
/* Otherwise, determine if the alpha value at tile = tile_manager_get_tile (gimp_drawable_get_tiles (GIMP_DRAWABLE (layer)),
* the given point is non-zero x, y, TRUE, FALSE);
*/
tile = tile_manager_get_tile (gimp_drawable_get_tiles (GIMP_DRAWABLE (layer)),
x, y, TRUE, FALSE);
val = * ((const guchar *) tile_data_pointer (tile, x, y) + val = * ((const guchar *) tile_data_pointer (tile, x, y) +
tile_bpp (tile) - 1); tile_bpp (tile) - 1);
if (layer->mask) tile_release (tile, FALSE);
}
if ((mask = gimp_layer_get_mask (layer)) &&
gimp_layer_mask_get_apply (mask))
{ {
gint mask_val; gint mask_val;
mask_val = gimp_pickable_get_opacity_at (GIMP_PICKABLE (layer->mask), mask_val = gimp_pickable_get_opacity_at (GIMP_PICKABLE (mask),
x, y); x, y);
val = val * mask_val / 255; val = val * mask_val / 255;
} }
tile_release (tile, FALSE);
} }
return val; return val;
......
This diff is collapsed.
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
if PLATFORM_OSX
xobjective_c = "-xobjective-c"
endif
AM_CPPFLAGS = \ AM_CPPFLAGS = \
-DG_LOG_DOMAIN=\"Gimp-Display\" -DG_LOG_DOMAIN=\"Gimp-Display\"
...@@ -10,7 +14,8 @@ INCLUDES = \ ...@@ -10,7 +14,8 @@ INCLUDES = \
-I$(top_srcdir)/app \ -I$(top_srcdir)/app \
$(GEGL_CFLAGS) \ $(GEGL_CFLAGS) \
$(GTK_CFLAGS) \ $(GTK_CFLAGS) \
-I$(includedir) -I$(includedir) \
$(xobjective_c)
noinst_LIBRARIES = libappdisplay.a noinst_LIBRARIES = libappdisplay.a
......
This diff is collapsed.
/* GIMP - The GNU Image Manipulation Program Copyright (C) 1995 /* GIMP - The GNU Image Manipulation Program Copyright (C) 1995
* Spencer Kimball and Peter Mattis * Spencer Kimball and Peter Mattis
* *
* gimpcanvaspolygon.h * gimpcanvaspath.h
* Copyright (C) 2010 Michael Natterer <mitch@gimp.org> * Copyright (C) 2010 Michael Natterer <mitch@gimp.org>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef __GIMP_CANVAS_POLYGON_H__ #ifndef __GIMP_CANVAS_PATH_H__
#define __GIMP_CANVAS_PATH_H__ #define __GIMP_CANVAS_PATH_H__
......
...@@ -20,6 +20,11 @@ ...@@ -20,6 +20,11 @@
#include <gegl.h> #include <gegl.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#ifdef GDK_WINDOWING_QUARTZ
#import <AppKit/AppKit.h>
#include <gdk/gdkquartz.h>
#endif /* !GDK_WINDOWING_QUARTZ */
#include "libgimpmath/gimpmath.h" #include "libgimpmath/gimpmath.h"
#include "libgimpwidgets/gimpwidgets.h" #include "libgimpwidgets/gimpwidgets.h"
...@@ -144,6 +149,7 @@ static void gimp_image_window_get_property (GObject *obj ...@@ -144,6 +149,7 @@ static void gimp_image_window_get_property (GObject *obj
GValue *value, GValue *value,
GParamSpec *pspec); GParamSpec *pspec);
static void gimp_image_window_map (GtkWidget *widget);
static gboolean gimp_image_window_delete_event (GtkWidget *widget, static gboolean gimp_image_window_delete_event (GtkWidget *widget,
GdkEventAny *event); GdkEventAny *event);
static gboolean gimp_image_window_configure_event (GtkWidget *widget, static gboolean gimp_image_window_configure_event (GtkWidget *widget,
...@@ -247,6 +253,7 @@ gimp_image_window_class_init (GimpImageWindowClass *klass) ...@@ -247,6 +253,7 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
object_class->set_property = gimp_image_window_set_property; object_class->set_property = gimp_image_window_set_property;
object_class->get_property = gimp_image_window_get_property; object_class->get_property = gimp_image_window_get_property;
widget_class->map = gimp_image_window_map;
widget_class->delete_event = gimp_image_window_delete_event; widget_class->delete_event = gimp_image_window_delete_event;
widget_class->configure_event = gimp_image_window_configure_event; widget_class->configure_event = gimp_image_window_configure_event;
widget_class->window_state_event = gimp_image_window_window_state_event; widget_class->window_state_event = gimp_image_window_window_state_event;
...@@ -521,6 +528,34 @@ gimp_image_window_get_property (GObject *object, ...@@ -521,6 +528,34 @@ gimp_image_window_get_property (GObject *object,
} }
} }
static void
gimp_image_window_map (GtkWidget *widget)
{
#ifdef GDK_WINDOWING_QUARTZ
GdkWindow *gdk_window;
NSWindow *ns_window;
#endif /* !GDK_WINDOWING_QUARTZ */
GTK_WIDGET_CLASS (parent_class)->map (widget);
#ifdef GDK_WINDOWING_QUARTZ
gdk_window = gtk_widget_get_window (GTK_WIDGET (widget));
ns_window = gdk_quartz_window_get_nswindow (gdk_window);
/* Disable the new-style full screen mode. For now only the "old-style"
* full screen mode, via the "View" menu, is supported. In the future, and
* as soon as GTK+ has proper support for this, we will migrate to the
* new-style full screen mode.
*/
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
ns_window.collectionBehavior |= NSWindowCollectionBehaviorFullScreenAuxiliary;
#else
/* Hard code the define ... */
ns_window.collectionBehavior |= 1 << 8;
#endif
#endif /* !GDK_WINDOWING_QUARTZ */
}
static gboolean static gboolean
gimp_image_window_delete_event (GtkWidget *widget, gimp_image_window_delete_event (GtkWidget *widget,
GdkEventAny *event) GdkEventAny *event)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.