diff --git a/app/display/display-types.h b/app/display/display-types.h index fd17145b82..63d9132297 100644 --- a/app/display/display-types.h +++ b/app/display/display-types.h @@ -24,23 +24,6 @@ #include "display/display-enums.h" -#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 9, 15) -#define USE_CAIRO_REGION -#endif - -#ifndef USE_CAIRO_REGION -#define cairo_region_t GdkRegion -#define cairo_rectangle_int_t GdkRectangle -#define cairo_region_destroy gdk_region_destroy -#define cairo_region_union gdk_region_union -#define cairo_region_create_rectangle gdk_region_rectangle -#define cairo_region_union_rectangle gdk_region_union_with_rect -#define cairo_region_get_extents gdk_region_get_clipbox -#define cairo_region_subtract gdk_region_subtract -#define cairo_region_xor gdk_region_xor -#endif - - typedef struct _GimpCanvas GimpCanvas; typedef struct _GimpCanvasItem GimpCanvasItem; typedef struct _GimpCanvasGroup GimpCanvasGroup; diff --git a/app/display/gimpdisplayshell-expose.c b/app/display/gimpdisplayshell-expose.c index 48302d686f..f68f6f2337 100644 --- a/app/display/gimpdisplayshell-expose.c +++ b/app/display/gimpdisplayshell-expose.c @@ -41,37 +41,30 @@ void gimp_display_shell_expose_region (GimpDisplayShell *shell, cairo_region_t *region) { + GdkRegion *gdk_region = gdk_region_new (); + gint n_rectangles; + gint i; + g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell)); g_return_if_fail (region != NULL); if (! gtk_widget_get_realized (shell->canvas)) return; -#ifdef USE_CAIRO_REGION - { - GdkRegion *gdk_region = gdk_region_new (); - gint n_rectangles; - gint i; + n_rectangles = cairo_region_num_rectangles (region); - n_rectangles = cairo_region_num_rectangles (region); + for (i = 0; i < n_rectangles; i++) + { + cairo_rectangle_int_t rectangle; - for (i = 0; i < n_rectangles; i++) - { - cairo_rectangle_int_t rectangle; + cairo_region_get_rectangle (region, i, &rectangle); - cairo_region_get_rectangle (region, i, &rectangle); + gdk_region_union_with_rect (gdk_region, (GdkRectangle *) &rectangle); + } - gdk_region_union_with_rect (gdk_region, (GdkRectangle *) &rectangle); - } - - gdk_window_invalidate_region (gtk_widget_get_window (shell->canvas), - gdk_region, TRUE); - gdk_region_destroy (gdk_region); - } -#else gdk_window_invalidate_region (gtk_widget_get_window (shell->canvas), - region, TRUE); -#endif + gdk_region, TRUE); + gdk_region_destroy (gdk_region); } void diff --git a/app/gui/gui.c b/app/gui/gui.c index fbc00132fd..7da14a9b93 100644 --- a/app/gui/gui.c +++ b/app/gui/gui.c @@ -251,8 +251,8 @@ static gchar * gui_sanity_check (void) { #define GTK_REQUIRED_MAJOR 2 -#define GTK_REQUIRED_MINOR 20 -#define GTK_REQUIRED_MICRO 0 +#define GTK_REQUIRED_MINOR 24 +#define GTK_REQUIRED_MICRO 3 const gchar *mismatch = gtk_check_version (GTK_REQUIRED_MAJOR, GTK_REQUIRED_MINOR, diff --git a/app/sanity.c b/app/sanity.c index 2466f43a6b..d6cd5c2870 100644 --- a/app/sanity.c +++ b/app/sanity.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "libgimpbase/gimpbase.h" @@ -36,6 +37,7 @@ static gchar * sanity_check_cairo (void); static gchar * sanity_check_pango (void); static gchar * sanity_check_fontconfig (void); static gchar * sanity_check_freetype (void); +static gchar * sanity_check_gdk_pixbuf (void); static gchar * sanity_check_babl (void); static gchar * sanity_check_gegl (void); static gchar * sanity_check_filename_encoding (void); @@ -63,6 +65,9 @@ sanity_check (void) if (! abort_message) abort_message = sanity_check_freetype (); + if (! abort_message) + abort_message = sanity_check_gdk_pixbuf (); + if (! abort_message) abort_message = sanity_check_babl (); @@ -158,8 +163,8 @@ static gchar * sanity_check_cairo (void) { #define CAIRO_REQUIRED_MAJOR 1 -#define CAIRO_REQUIRED_MINOR 8 -#define CAIRO_REQUIRED_MICRO 0 +#define CAIRO_REQUIRED_MINOR 10 +#define CAIRO_REQUIRED_MICRO 2 if (cairo_version () < CAIRO_VERSION_ENCODE (CAIRO_REQUIRED_MAJOR, CAIRO_REQUIRED_MINOR, @@ -307,6 +312,36 @@ sanity_check_freetype (void) return NULL; } +static gchar * +sanity_check_gdk_pixbuf (void) +{ +#define GDK_PIXBUF_REQUIRED_MAJOR 2 +#define GDK_PIXBUF_REQUIRED_MINOR 22 +#define GDK_PIXBUF_REQUIRED_MICRO 1 + + if (! sanity_check_version (gdk_pixbuf_major_version, GDK_PIXBUF_REQUIRED_MAJOR, + gdk_pixbuf_minor_version, GDK_PIXBUF_REQUIRED_MINOR, + gdk_pixbuf_micro_version, GDK_PIXBUF_REQUIRED_MICRO)) + { + return g_strdup_printf + ("GdkPixbuf version too old!\n\n" + "GIMP requires GdkPixbuf version %d.%d.%d or later.\n" + "Installed GdkPixbuf version is %d.%d.%d.\n\n" + "Somehow you or your software packager managed\n" + "to install GIMP with an older GdkPixbuf version.\n\n" + "Please upgrade to GdkPixbuf version %d.%d.%d or later.", + GDK_PIXBUF_REQUIRED_MAJOR, GDK_PIXBUF_REQUIRED_MINOR, GDK_PIXBUF_REQUIRED_MICRO, + gdk_pixbuf_major_version, gdk_pixbuf_minor_version, gdk_pixbuf_micro_version, + GDK_PIXBUF_REQUIRED_MAJOR, GDK_PIXBUF_REQUIRED_MINOR, GDK_PIXBUF_REQUIRED_MICRO); + } + +#undef GDK_PIXBUF_REQUIRED_MAJOR +#undef GDK_PIXBUF_REQUIRED_MINOR +#undef GDK_PIXBUF_REQUIRED_MICRO + + return NULL; +} + static gchar * sanity_check_babl (void) { diff --git a/app/widgets/gimpoverlaychild.c b/app/widgets/gimpoverlaychild.c index d01b745589..5355996cde 100644 --- a/app/widgets/gimpoverlaychild.c +++ b/app/widgets/gimpoverlaychild.c @@ -257,14 +257,8 @@ gimp_overlay_child_size_allocate (GimpOverlayBox *box, gdk_window_get_position (child->window, &old_allocation.x, &old_allocation.y); -#if GTK_CHECK_VERSION (2, 24, 0) old_allocation.width = gdk_window_get_width (child->window); old_allocation.height = gdk_window_get_height (child->window); -#else - gdk_drawable_get_size (child->window, - &old_allocation.width, - &old_allocation.height); -#endif gimp_overlay_child_transform_bounds (child, &old_allocation, &old_bounds); diff --git a/app/widgets/gimpspinscale.c b/app/widgets/gimpspinscale.c index ac41bd9df6..2bc8befb7a 100644 --- a/app/widgets/gimpspinscale.c +++ b/app/widgets/gimpspinscale.c @@ -235,12 +235,8 @@ gimp_spin_scale_expose (GtkWidget *widget, gdk_cairo_region (cr, event->region); cairo_clip (cr); -#if GTK_CHECK_VERSION (2, 24, 0) w = gdk_window_get_width (event->window); h = gdk_window_get_height (event->window); -#else - gdk_drawable_get_size (event->window, &w, &h); -#endif cairo_set_line_width (cr, 1.0); @@ -334,11 +330,7 @@ gimp_spin_scale_change_value (GtkWidget *widget, gint width; gdouble value; -#if GTK_CHECK_VERSION (2, 24, 0) width = gdk_window_get_width (text_window); -#else - gdk_drawable_get_size (text_window, &width, NULL); -#endif if (private->relative_change) { diff --git a/app/widgets/gimptagentry.c b/app/widgets/gimptagentry.c index 598be73e00..70e0e8b096 100644 --- a/app/widgets/gimptagentry.c +++ b/app/widgets/gimptagentry.c @@ -1296,13 +1296,8 @@ gimp_tag_entry_expose (GtkWidget *widget, pango_layout_set_attributes (layout, attr_list); pango_attr_list_unref (attr_list); -#if GTK_CHECK_VERSION (2, 24, 0) window_width = gdk_window_get_width (event->window); window_height = gdk_window_get_height (event->window); -#else - gdk_drawable_get_size (GDK_DRAWABLE (event->window), - &window_width, &window_height); -#endif pango_layout_get_size (layout, &layout_width, &layout_height); offset = (window_height - PANGO_PIXELS (layout_height)) / 2; diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c index 8a89fe498d..efdf0ef0ab 100644 --- a/app/widgets/gimpwidgets-utils.c +++ b/app/widgets/gimpwidgets-utils.c @@ -868,8 +868,6 @@ gimp_window_transient_realized (GtkWidget *window, static GdkWindow * gimp_get_foreign_window (guint32 window) { -#if GTK_CHECK_VERSION (2, 24, 0) - #ifdef GDK_WINDOWING_X11 return gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), window); @@ -880,15 +878,6 @@ gimp_get_foreign_window (guint32 window) window); #endif -#else /* ! GTK_CHECK_VERSION (2, 24, 0) */ - -#ifndef GDK_NATIVE_WINDOW_POINTER - return gdk_window_foreign_new_for_display (gdk_display_get_default (), - window); -#endif - -#endif /* GTK_CHECK_VERSION (2, 24, 0) */ - return NULL; } diff --git a/configure.ac b/configure.ac index af72fd6bbd..2e605d89a7 100644 --- a/configure.ac +++ b/configure.ac @@ -43,10 +43,10 @@ m4_define([gimp_full_name], [GNU Image Manipulation Program]) m4_define([babl_required_version], [0.1.4]) m4_define([gegl_required_version], [0.1.6]) m4_define([glib_required_version], [2.28.1]) -m4_define([gtk_required_version], [2.20.0]) -m4_define([gdk_pixbuf_required_version], [gtk_required_version]) -m4_define([cairo_required_version], [1.8.0]) -m4_define([cairo_pdf_required_version], [1.8.0]) +m4_define([gtk_required_version], [2.24.3]) +m4_define([gdk_pixbuf_required_version], [2.22.1]) +m4_define([cairo_required_version], [1.10.2]) +m4_define([cairo_pdf_required_version], [1.10.2]) m4_define([pangocairo_required_version], [1.22.0]) m4_define([fontconfig_required_version], [2.2.0]) m4_define([gtkdoc_required_version], [1.0]) @@ -520,6 +520,14 @@ if test "x$GDK_PIXBUF_CSOURCE" = xno; then AC_MSG_ERROR(Could not find gdk-pixbuf-csource in your PATH) fi +AC_MSG_CHECKING([if GdkPixbuf is version 2.26.0 or newer]) +if $PKG_CONFIG --atleast-version=2.26.0 gdk-pixbuf-2.0; then + have_gdk_pixbuf_2_26=yes +else + have_gdk_pixbuf_2_26=no +fi +AC_MSG_RESULT($have_gdk_pixbuf_2_26) + PKG_CHECK_MODULES(CAIRO, cairo >= cairo_required_version) PKG_CHECK_MODULES(PANGOCAIRO, @@ -1950,7 +1958,11 @@ if test "x$have_glib_2_32" != "xyes"; then fi if test "x$have_gtk_2_26" != "xyes"; then - CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" + CPPFLAGS="${CPPFLAGS} -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" +fi + +if test "x$have_gdk_pixbuf_2_26" != "xyes"; then + CPPFLAGS="${CPPFLAGS} -DGDK_PIXBUF_DISABLE_DEPRECATED" fi if test "x$have_pango_1_32" != "xyes"; then diff --git a/libgimp/gimpui.c b/libgimp/gimpui.c index 2f5d0aa697..c98e15aca3 100644 --- a/libgimp/gimpui.c +++ b/libgimp/gimpui.c @@ -149,8 +149,6 @@ gimp_ui_init (const gchar *prog_name, static GdkWindow * gimp_ui_get_foreign_window (guint32 window) { -#if GTK_CHECK_VERSION (2, 24, 0) - #ifdef GDK_WINDOWING_X11 return gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), window); @@ -161,15 +159,6 @@ gimp_ui_get_foreign_window (guint32 window) window); #endif -#else /* ! GTK_CHECK_VERSION (2, 24, 0) */ - -#ifndef GDK_NATIVE_WINDOW_POINTER - return gdk_window_foreign_new_for_display (gdk_display_get_default (), - window); -#endif - -#endif /* GTK_CHECK_VERSION (2, 24, 0) */ - return NULL; } diff --git a/libgimpwidgets/gimppropwidgets.c b/libgimpwidgets/gimppropwidgets.c index c7eb52c9d2..303b15e003 100644 --- a/libgimpwidgets/gimppropwidgets.c +++ b/libgimpwidgets/gimppropwidgets.c @@ -556,17 +556,10 @@ gimp_prop_boolean_combo_box_new (GObject *config, property_name, &value, NULL); -#if GTK_CHECK_VERSION (2, 24, 0) combo_box = gtk_combo_box_text_new (); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), true_text); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), false_text); -#else - combo_box = gtk_combo_box_new_text (); - - gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), true_text); - gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), false_text); -#endif gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), value ? 0 : 1); diff --git a/libgimpwidgets/gimpruler.c b/libgimpwidgets/gimpruler.c index 74db7fc650..1f79154dc0 100644 --- a/libgimpwidgets/gimpruler.c +++ b/libgimpwidgets/gimpruler.c @@ -404,7 +404,6 @@ gtk_widget_get_translation_to_window (GtkWidget *widget, widget_window = gtk_widget_get_window (widget); -#if GTK_CHECK_VERSION (2, 22, 0) for (w = window; w && w != widget_window; w = gdk_window_get_effective_parent (w)) @@ -416,15 +415,6 @@ gtk_widget_get_translation_to_window (GtkWidget *widget, *x += px; *y += py; } -#else - for (w = window; w && w != widget_window; w = gdk_window_get_parent (w)) - { - int wx, wy; - gdk_window_get_position (w, &wx, &wy); - *x += wx; - *y += wy; - } -#endif if (w == NULL) { diff --git a/plug-ins/common/animation-play.c b/plug-ins/common/animation-play.c index bd6a195587..728c620547 100644 --- a/plug-ins/common/animation-play.c +++ b/plug-ins/common/animation-play.c @@ -649,11 +649,7 @@ build_dialog (GimpImageBaseType basetype, gtk_box_pack_end (GTK_BOX (hbox), progress, TRUE, TRUE, 0); gtk_widget_show (progress); -#if GTK_CHECK_VERSION (2, 24, 0) speedcombo = gtk_combo_box_text_new (); -#else - speedcombo = gtk_combo_box_new_text (); -#endif gtk_box_pack_end (GTK_BOX (hbox), speedcombo, FALSE, FALSE, 0); gtk_widget_show (speedcombo); @@ -663,11 +659,7 @@ build_dialog (GimpImageBaseType basetype, /* list is given in "fps" - frames per second */ text = g_strdup_printf (_("%d fps"), get_fps (index)); -#if GTK_CHECK_VERSION (2, 24, 0) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (speedcombo), text); -#else - gtk_combo_box_append_text (GTK_COMBO_BOX (speedcombo), text); -#endif g_free (text); } @@ -679,11 +671,7 @@ build_dialog (GimpImageBaseType basetype, gimp_help_set_help_data (speedcombo, _("Default framerate"), NULL); -#if GTK_CHECK_VERSION (2, 24, 0) speedcombo = gtk_combo_box_text_new (); -#else - speedcombo = gtk_combo_box_new_text (); -#endif gtk_box_pack_end (GTK_BOX (hbox), speedcombo, FALSE, FALSE, 0); gtk_widget_show (speedcombo); @@ -692,11 +680,7 @@ build_dialog (GimpImageBaseType basetype, gchar *text; text = g_strdup_printf ("%g\303\227", (100 / get_duration_factor (index)) / 100); -#if GTK_CHECK_VERSION (2, 24, 0) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (speedcombo), text); -#else - gtk_combo_box_append_text (GTK_COMBO_BOX (speedcombo), text); -#endif g_free (text); } diff --git a/plug-ins/common/file-gih.c b/plug-ins/common/file-gih.c index 2fd015dc2d..009e510d15 100644 --- a/plug-ins/common/file-gih.c +++ b/plug-ins/common/file-gih.c @@ -1060,20 +1060,11 @@ gih_save_dialog (gint32 image_ID) cellw_adjust.rank0 = cellh_adjust.rank0 = NULL; } -#if GTK_CHECK_VERSION (2, 24, 0) cb = gtk_combo_box_text_new (); -#else - cb = gtk_combo_box_new_text (); -#endif for (j = 0; j < G_N_ELEMENTS (selection_modes); j++) -#if GTK_CHECK_VERSION (2, 24, 0) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb), selection_modes[j]); -#else - gtk_combo_box_append_text (GTK_COMBO_BOX (cb), selection_modes[j]); -#endif - gtk_combo_box_set_active (GTK_COMBO_BOX (cb), 2); /* random */ if (gihparams.selection[i]) diff --git a/plug-ins/common/file-ps.c b/plug-ins/common/file-ps.c index 479c64261e..6b2740d55b 100644 --- a/plug-ins/common/file-ps.c +++ b/plug-ins/common/file-ps.c @@ -3196,7 +3196,6 @@ load_dialog (const gchar *filename, gimp_help_set_help_data (GTK_WIDGET (entry), _("Pages to load (e.g.: 1-4 or 1,3,5-7)"), NULL); -#if GTK_CHECK_VERSION (2, 24, 0) target = gtk_combo_box_text_new (); gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (target), GIMP_PAGE_SELECTOR_TARGET_LAYERS, @@ -3204,13 +3203,6 @@ load_dialog (const gchar *filename, gtk_combo_box_text_insert_text (GTK_COMBO_BOX_TEXT (target), GIMP_PAGE_SELECTOR_TARGET_IMAGES, _("Images")); -#else - target = gtk_combo_box_new_text (); - gtk_combo_box_insert_text (GTK_COMBO_BOX (target), - GIMP_PAGE_SELECTOR_TARGET_LAYERS, _("Layers")); - gtk_combo_box_insert_text (GTK_COMBO_BOX (target), - GIMP_PAGE_SELECTOR_TARGET_IMAGES, _("Images")); -#endif gtk_combo_box_set_active (GTK_COMBO_BOX (target), (int) ps_pagemode); gimp_table_attach_aligned (GTK_TABLE (table), 0, 4, _("Open as"), 0.0, 0.5, diff --git a/plug-ins/common/screenshot.c b/plug-ins/common/screenshot.c index 5b016a5aa1..1022391e17 100644 --- a/plug-ins/common/screenshot.c +++ b/plug-ins/common/screenshot.c @@ -949,12 +949,8 @@ shoot (GdkScreen *screen) return -1; } -#if GTK_CHECK_VERSION (2, 24, 0) rect.width = gdk_window_get_width (window); rect.height = gdk_window_get_height (window); -#else - gdk_drawable_get_size (GDK_DRAWABLE (window), &rect.width, &rect.height); -#endif gdk_window_get_origin (window, &x, &y); rect.x = x; diff --git a/plug-ins/script-fu/script-fu-interface.c b/plug-ins/script-fu/script-fu-interface.c index 0d491429e0..39fddc15fc 100644 --- a/plug-ins/script-fu/script-fu-interface.c +++ b/plug-ins/script-fu/script-fu-interface.c @@ -503,22 +503,13 @@ script_fu_interface (SFScript *script, break; case SF_OPTION: -#if GTK_CHECK_VERSION (2, 24, 0) widget = gtk_combo_box_text_new (); -#else - widget = gtk_combo_box_new_text (); -#endif for (list = arg->default_value.sfa_option.list; list; list = g_slist_next (list)) { -#if GTK_CHECK_VERSION (2, 24, 0) gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), gettext (list->data)); -#else - gtk_combo_box_append_text (GTK_COMBO_BOX (widget), - gettext (list->data)); -#endif } gtk_combo_box_set_active (GTK_COMBO_BOX (widget),