diff --git a/.cvsignore b/.cvsignore index 789278a..978091f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gimp-2.6.6.tar.bz2 +gimp-2.6.7.tar.bz2 diff --git a/gimp-2.6.6-minimize-dialogs.patch b/gimp-2.6.6-minimize-dialogs.patch new file mode 100644 index 0000000..09a04d2 --- /dev/null +++ b/gimp-2.6.6-minimize-dialogs.patch @@ -0,0 +1,349 @@ +diff -up gimp-2.6.6/app/display/gimpdisplay-foreach.c.minimize-dialogs gimp-2.6.6/app/display/gimpdisplay-foreach.c +--- gimp-2.6.6/app/display/gimpdisplay-foreach.c.minimize-dialogs 2008-11-20 23:43:04.000000000 +0100 ++++ gimp-2.6.6/app/display/gimpdisplay-foreach.c 2009-03-30 14:24:05.145595522 +0200 +@@ -227,6 +227,35 @@ gimp_displays_reconnect (Gimp *gimp + g_list_free (contexts); + } + ++gint ++gimp_displays_get_num_visible (Gimp *gimp) ++{ ++ GList *list; ++ gint visible = 0; ++ ++ g_return_val_if_fail (GIMP_IS_GIMP (gimp), 0); ++ ++ for (list = GIMP_LIST (gimp->displays)->list; ++ list; ++ list = g_list_next (list)) ++ { ++ GimpDisplay *display = list->data; ++ ++ if (GTK_WIDGET_DRAWABLE (display->shell)) ++ { ++ GdkWindowState state = gdk_window_get_state (display->shell->window); ++ ++ if ((state & (GDK_WINDOW_STATE_WITHDRAWN | ++ GDK_WINDOW_STATE_ICONIFIED)) == 0) ++ { ++ visible++; ++ } ++ } ++ } ++ ++ return visible; ++} ++ + void + gimp_displays_set_busy (Gimp *gimp) + { +diff -up gimp-2.6.6/app/display/gimpdisplay-foreach.h.minimize-dialogs gimp-2.6.6/app/display/gimpdisplay-foreach.h +--- gimp-2.6.6/app/display/gimpdisplay-foreach.h.minimize-dialogs 2008-11-20 23:43:04.000000000 +0100 ++++ gimp-2.6.6/app/display/gimpdisplay-foreach.h 2009-03-30 14:24:05.146606054 +0200 +@@ -28,6 +28,8 @@ void gimp_displays_reconnect + GimpImage *old, + GimpImage *new); + ++gint gimp_displays_get_num_visible (Gimp *gimp); ++ + void gimp_displays_set_busy (Gimp *gimp); + void gimp_displays_unset_busy (Gimp *gimp); + +diff -up gimp-2.6.6/app/display/gimpdisplayshell.c.minimize-dialogs gimp-2.6.6/app/display/gimpdisplayshell.c +--- gimp-2.6.6/app/display/gimpdisplayshell.c.minimize-dialogs 2009-03-15 21:57:09.000000000 +0100 ++++ gimp-2.6.6/app/display/gimpdisplayshell.c 2009-03-30 14:24:05.147606111 +0200 +@@ -59,6 +59,7 @@ + + #include "gimpcanvas.h" + #include "gimpdisplay.h" ++#include "gimpdisplay-foreach.h" + #include "gimpdisplayoptions.h" + #include "gimpdisplayshell.h" + #include "gimpdisplayshell-appearance.h" +@@ -615,12 +616,12 @@ gimp_display_shell_window_state_event (G + GdkEventWindowState *event) + { + GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget); ++ Gimp *gimp = shell->display->gimp; + + shell->window_state = event->new_window_state; + + if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) + { +- Gimp *gimp = shell->display->gimp; + GimpActionGroup *group; + gboolean fullscreen; + +@@ -644,6 +645,19 @@ gimp_display_shell_window_state_event (G + + if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) + { ++ gboolean iconified = (event->new_window_state & ++ GDK_WINDOW_STATE_ICONIFIED) != 0; ++ ++ if (iconified) ++ { ++ if (gimp_displays_get_num_visible (gimp) == 0) ++ gimp_dialog_factories_hide_with_display (); ++ } ++ else ++ { ++ gimp_dialog_factories_show_with_display (); ++ } ++ + gimp_display_shell_progress_window_state_changed (shell); + } + +diff -up gimp-2.6.6/app/widgets/gimpdialogfactory.c.minimize-dialogs gimp-2.6.6/app/widgets/gimpdialogfactory.c +--- gimp-2.6.6/app/widgets/gimpdialogfactory.c.minimize-dialogs 2008-11-20 23:43:05.000000000 +0100 ++++ gimp-2.6.6/app/widgets/gimpdialogfactory.c 2009-03-30 14:24:05.148606028 +0200 +@@ -45,6 +45,13 @@ + #include "gimp-log.h" + + ++typedef enum ++{ ++ GIMP_DIALOGS_SHOWN, ++ GIMP_DIALOGS_HIDDEN_EXPLICITLY, /* user used the Tab key to hide dialogs */ ++ GIMP_DIALOGS_HIDDEN_WITH_DISPLAY /* dialogs are hidden with the display */ ++} GimpDialogsState; ++ + enum + { + DOCK_ADDED, +@@ -103,7 +110,7 @@ G_DEFINE_TYPE (GimpDialogFactory, gimp_d + + static guint factory_signals[LAST_SIGNAL] = { 0 }; + +-static gboolean dialogs_shown = TRUE; /* FIXME */ ++static GimpDialogsState dialogs_state = GIMP_DIALOGS_SHOWN; + + + static void +@@ -1079,7 +1086,7 @@ gimp_dialog_factory_hide_dialog (GtkWidg + + gtk_widget_hide (dialog); + +- if (! dialogs_shown) ++ if (dialogs_state != GIMP_DIALOGS_SHOWN) + g_object_set_data (G_OBJECT (dialog), GIMP_DIALOG_VISIBILITY_KEY, + GINT_TO_POINTER (GIMP_DIALOG_VISIBILITY_INVISIBLE)); + } +@@ -1122,30 +1129,66 @@ gimp_dialog_factories_session_clear (voi + NULL); + } + +-void +-gimp_dialog_factories_toggle (void) ++static void ++gimp_dialog_factories_set_state (GimpDialogsState state) + { + GimpDialogFactoryClass *factory_class; + + factory_class = g_type_class_peek (GIMP_TYPE_DIALOG_FACTORY); + +- if (dialogs_shown) ++ dialogs_state = state; ++ ++ if (state == GIMP_DIALOGS_SHOWN) + { +- dialogs_shown = FALSE; + g_hash_table_foreach (factory_class->factories, +- (GHFunc) gimp_dialog_factories_hide_foreach, ++ (GHFunc) gimp_dialog_factories_show_foreach, + NULL); + } + else + { +- dialogs_shown = TRUE; + g_hash_table_foreach (factory_class->factories, +- (GHFunc) gimp_dialog_factories_show_foreach, ++ (GHFunc) gimp_dialog_factories_hide_foreach, + NULL); + } + } + + void ++gimp_dialog_factories_show_with_display (void) ++{ ++ if (dialogs_state == GIMP_DIALOGS_HIDDEN_WITH_DISPLAY) ++ { ++ gimp_dialog_factories_set_state (GIMP_DIALOGS_SHOWN); ++ } ++} ++ ++void ++gimp_dialog_factories_hide_with_display (void) ++{ ++ if (dialogs_state == GIMP_DIALOGS_SHOWN) ++ { ++ gimp_dialog_factories_set_state (GIMP_DIALOGS_HIDDEN_WITH_DISPLAY); ++ } ++} ++ ++void ++gimp_dialog_factories_toggle (void) ++{ ++ switch (dialogs_state) ++ { ++ case GIMP_DIALOGS_SHOWN: ++ gimp_dialog_factories_set_state (GIMP_DIALOGS_HIDDEN_EXPLICITLY); ++ break; ++ ++ case GIMP_DIALOGS_HIDDEN_EXPLICITLY: ++ gimp_dialog_factories_set_state (GIMP_DIALOGS_SHOWN); ++ break; ++ ++ case GIMP_DIALOGS_HIDDEN_WITH_DISPLAY: ++ break; ++ } ++} ++ ++void + gimp_dialog_factories_set_busy (void) + { + GimpDialogFactoryClass *factory_class; +diff -up gimp-2.6.6/app/widgets/gimpdialogfactory.h.minimize-dialogs gimp-2.6.6/app/widgets/gimpdialogfactory.h +--- gimp-2.6.6/app/widgets/gimpdialogfactory.h.minimize-dialogs 2008-11-20 23:43:05.000000000 +0100 ++++ gimp-2.6.6/app/widgets/gimpdialogfactory.h 2009-03-30 14:24:05.149601894 +0200 +@@ -103,74 +103,77 @@ struct _GimpDialogFactoryClass + }; + + +-GType gimp_dialog_factory_get_type (void) G_GNUC_CONST; ++GType gimp_dialog_factory_get_type (void) G_GNUC_CONST; + +-GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, +- GimpContext *context, +- GimpMenuFactory *menu_factory, +- GimpDialogNewFunc new_dock_func, +- gboolean toggle_visibility); +- +-GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name); +- +-void gimp_dialog_factory_set_constructor (GimpDialogFactory *factory, +- GimpDialogConstructor constructor); +- +-void gimp_dialog_factory_register_entry (GimpDialogFactory *factory, +- const gchar *identifier, +- const gchar *name, +- const gchar *blurb, +- const gchar *stock_id, +- const gchar *help_id, +- GimpDialogNewFunc new_func, +- gint view_size, +- gboolean singleton, +- gboolean session_managed, +- gboolean remember_size, +- gboolean remember_if_open); ++GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, ++ GimpContext *context, ++ GimpMenuFactory *menu_factory, ++ GimpDialogNewFunc new_dock_func, ++ gboolean toggle_visibility); ++ ++GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name); ++ ++void gimp_dialog_factory_set_constructor (GimpDialogFactory *factory, ++ GimpDialogConstructor constructor); ++ ++void gimp_dialog_factory_register_entry (GimpDialogFactory *factory, ++ const gchar *identifier, ++ const gchar *name, ++ const gchar *blurb, ++ const gchar *stock_id, ++ const gchar *help_id, ++ GimpDialogNewFunc new_func, ++ gint view_size, ++ gboolean singleton, ++ gboolean session_managed, ++ gboolean remember_size, ++ gboolean remember_if_open); + GimpDialogFactoryEntry * gimp_dialog_factory_find_entry +- (GimpDialogFactory *factory, +- const gchar *identifier); ++ (GimpDialogFactory *factory, ++ const gchar *identifier); + + GimpSessionInfo * gimp_dialog_factory_find_session_info +- (GimpDialogFactory *factory, +- const gchar *identifier); ++ (GimpDialogFactory *factory, ++ const gchar *identifier); + +-GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory, +- GdkScreen *screen, +- const gchar *identifier, +- gint view_size, +- gboolean present); +-GtkWidget * gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory, +- GdkScreen *screen, +- const gchar *identifiers, +- gint view_size); +-GtkWidget * gimp_dialog_factory_dockable_new (GimpDialogFactory *factory, +- GimpDock *dock, +- const gchar *identifier, +- gint view_size); +-GtkWidget * gimp_dialog_factory_dock_new (GimpDialogFactory *factory, +- GdkScreen *screen); +- +-void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, +- GtkWidget *dialog); +-void gimp_dialog_factory_add_foreign (GimpDialogFactory *factory, +- const gchar *identifier, +- GtkWidget *dialog); +-void gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory, +- GtkWidget *dialog); +- +-void gimp_dialog_factory_show_toolbox (GimpDialogFactory *toolbox_factory); +- +-void gimp_dialog_factory_hide_dialog (GtkWidget *dialog); +- +-void gimp_dialog_factories_session_save (GimpConfigWriter *writer); +-void gimp_dialog_factories_session_restore (void); +-void gimp_dialog_factories_session_clear (void); +- +-void gimp_dialog_factories_toggle (void); +-void gimp_dialog_factories_set_busy (void); +-void gimp_dialog_factories_unset_busy (void); ++GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory, ++ GdkScreen *screen, ++ const gchar *identifier, ++ gint view_size, ++ gboolean present); ++GtkWidget * gimp_dialog_factory_dialog_raise (GimpDialogFactory *factory, ++ GdkScreen *screen, ++ const gchar *identifiers, ++ gint view_size); ++GtkWidget * gimp_dialog_factory_dockable_new (GimpDialogFactory *factory, ++ GimpDock *dock, ++ const gchar *identifier, ++ gint view_size); ++GtkWidget * gimp_dialog_factory_dock_new (GimpDialogFactory *factory, ++ GdkScreen *screen); ++ ++void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, ++ GtkWidget *dialog); ++void gimp_dialog_factory_add_foreign (GimpDialogFactory *factory, ++ const gchar *identifier, ++ GtkWidget *dialog); ++void gimp_dialog_factory_remove_dialog (GimpDialogFactory *factory, ++ GtkWidget *dialog); ++ ++void gimp_dialog_factory_show_toolbox (GimpDialogFactory *toolbox_factory); ++ ++void gimp_dialog_factory_hide_dialog (GtkWidget *dialog); ++ ++void gimp_dialog_factories_session_save (GimpConfigWriter *writer); ++void gimp_dialog_factories_session_restore (void); ++void gimp_dialog_factories_session_clear (void); ++ ++void gimp_dialog_factories_show_with_display (void); ++void gimp_dialog_factories_hide_with_display (void); ++void gimp_dialog_factories_toggle (void); ++ ++void gimp_dialog_factories_set_busy (void); ++void gimp_dialog_factories_unset_busy (void); + + GimpDialogFactory * + gimp_dialog_factory_from_widget (GtkWidget *dialog, diff --git a/gimp.spec b/gimp.spec index 09f1a48..25f4351 100644 --- a/gimp.spec +++ b/gimp.spec @@ -19,11 +19,18 @@ %bcond_without gutenprint # convenience: install convenience symlinks %bcond_without convenience +# aalib: build with AAlib (ASCII art gfx library) +%if 0%{?rhel} != 0 +# don't use aalib on RHEL +%bcond_with aalib +%else +%bcond_without aalib +%endif Summary: GNU Image Manipulation Program Name: gimp Epoch: 2 -Version: 2.6.6 +Version: 2.6.7 Release: 1%{?dist} %define binver 2.6 %define gimp_lang_ver 20 @@ -37,7 +44,10 @@ URL: http://www.gimp.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-root-%(%__id_u -n) Obsoletes: gimp-perl < 2:2.0 Obsoletes: gimp < 2:2.6.0-3 +BuildRequires: chrpath >= 0.13-5 +%if %{with aalib} BuildRequires: aalib-devel +%endif BuildRequires: alsa-lib-devel >= 1.0.0 BuildRequires: babl-devel >= 0.0.22 BuildRequires: cairo-devel >= 1.4.10 @@ -70,7 +80,11 @@ BuildRequires: poppler-devel >= 0.4.1 BuildRequires: python-devel BuildRequires: pygtk2-devel >= 2.10.4 BuildRequires: pygobject2-devel +%if 0%{?fedora}%{?rhel} == 0 || 0%{?fedora} > 10 || 0%{?rhel} > 5 +BuildRequires: webkitgtk-devel >= 1.0.0 +%else BuildRequires: WebKit-gtk-devel >= 1.0.0 +%endif %if %{with modular_x} BuildRequires: libX11-devel BuildRequires: libXmu-devel @@ -106,8 +120,14 @@ Provides: gimp-%{_arch} = %{?epoch:%{epoch}:}%{version}-%{release} Source0: ftp://ftp.gimp.org/pub/gimp/v%{binver}/gimp-%{version}.tar.bz2 Source1: gimp-plugin-mgr.in +# distro specific: use xdg-open instead of firefox as web browser Patch0: gimp-2.6.2-xdg-open.patch +# http://bugzilla.gnome.org/show_bug.cgi?id=559081 +# "JPEG Save dialog preview should adjust size units" Patch1: gimp-2.6.2-jpeg-units.patch +# http://bugzilla.gnome.org/show_bug.cgi?id=556896 +# "Dialogs don't get minimized with single image window" +Patch2: gimp-2.6.6-minimize-dialogs.patch %description GIMP (GNU Image Manipulation Program) is a powerful image composition and @@ -180,6 +200,7 @@ build the print plugin: %{with print} prefer gutenprint over (external) gimp-print plugin: %{with gutenprint} %endif +build ASCII art plugin %{with aalib} EOF @@ -187,11 +208,13 @@ EOF %setup -q -n gimp-%{version} %patch0 -p1 -b .xdg-open %patch1 -p1 -b .jpeg-units +%patch2 -p1 -b .minimize-dialogs %build -if [ ! -f configure ]; then - ./autogen.sh --quiet $MYARCH_FLAGS --prefix=%{_prefix} -fi +# if [ ! -f configure ]; then +# ./autogen.sh --quiet $MYARCH_FLAGS --prefix=%{_prefix} +# fi + # Use PIC/PIE because gimp is likely to deal with files coming from untrusted # sources CFLAGS='-fPIC %optflags -fno-strict-aliasing' @@ -225,7 +248,11 @@ LDFLAGS='-pie' --without-lcms \ %endif --enable-gimp-console \ +%if %{with aalib} --with-aa \ +%else + --without-aa \ +%endif %ifos linux --with-linux-input \ %endif @@ -244,6 +271,9 @@ rm -rf %{buildroot} # makeinstall macro won't work here - libexec is overriden make DESTDIR=%{buildroot} install +# remove rpaths +find %buildroot -type f -print0 | xargs -0 -L 20 chrpath --delete --keepgoing 2>/dev/null || : + %ifos linux # remove .la files find %buildroot -name \*.la -exec %__rm -f {} \; @@ -469,6 +499,104 @@ fi %{_libdir}/gimp/%{interfacever}/plug-ins/help-browser %changelog +* Fri Aug 14 2009 Nils Philippsen - 2:2.6.7-1 +- version 2.6.7 + + Overview of Changes from GIMP 2.6.6 to GIMP 2.6.7 + ================================================= + + * Bugs fixed: + + 591017 - Tablet pan is not working as fast as it should + 577581 - Crashes when using any colors tool/function on Windows + 589667 - GIMP crashes when clicking GEGL Operation on Windows + 569833 - file-jpeg-save erroneous with small quality values + 590638 - Changing palettes from list to grid view loses "locked to dock" + status + 589674 - "Send by Email" does not update "Filename" + 589674 - "Send by Email" does not update "Filename" + 586851 - Transparent BMP files fail to load + 589205 - help-browser uses deprecated (and sometimes broken) webkit call + 582821 - 'Sphere Designer' does not reset correctly... + 570353 - first time open of .svg file ignores the requested units + 555777 - Export to MNG animation fails + 577301 - Dithering with transparency is broken for "positioned" method + 493778 - metadata plug-in crashes on some images + 567466 - PNG comment not found if more than 1 tEXt chunks + 585665 - Exporting to PSD with a blank text layer creates a corrupt file + 586316 - Levels tool does not adjust output levels correctly if input + levels are changed + 569661 - Import from PDF throws errors when entering resolution in + pixels per millimetre + 567262 - Black pixels appear in "Spread" filter preview + 554658 - Path Dialog: Path preview pics not to see constantly + 167604 - gimp_gradient_get_color_at() may return out-of-bounds values + 567393 - Rectangle select tool size shrinks to 0 if size is larger than + the image and the up or down arrow is pressed + 587543 - crash when invoking certain actions by keyboard shortcut + 563029 - Closing maximized image doesn't restore document window size + 585488 - Perspective transformation on a layer with a mask causes crash + 586008 - GIMP crashes when right-click canceling a drawing action initiated + outside layer boundaries + 584345 - when printing, the number of copies should be reset to 1 + 557061 - Alpha to Logo + 472644 - Rotate with clipping crops the whole layer + 577575 - transform tool fills underlying extracted area wrongly + 555738 - Image display is wrong after undoing canvas size + 577024 - help-browser plugin crashes when used with webkit 1.1.3 + 555025 - Action GEGL box widgets weirdness + + * Updated and new translations: + + Czech (cs) + Danish (da) + German (de) + Spanish (es) + Basque (eu) + Finnish (fi) + Hungarian (hu) + Italian (it) + Gujarati (gu) + Japanese (ja) + Kannada (kn) + Marathi (mr) + Norwegian bokmål (nb) + Oriya (or) + Portuguese (pt) + Romanian (ro) + Sinhala (si) + Swedish (sv) + Simplified Chinese (zh_CN) + Traditional Chinese - Hong Kong (zh_HK) + Traditional Chinese - Taiwan (zh_TW) + +- remove obsolete gegl-babl-versions-check, help-browser-webkit patches +- comment/explain patches + +* Fri Jul 24 2009 Nils Philippsen - 2:2.6.6-8 +- rebuild with chrpath >= 0.13-5 (#513419) + +* Thu Jul 16 2009 Nils Philippsen - 2:2.6.6-7 +- rebuild against gegl-0.1 (#510209) + +* Mon Jun 29 2009 Nils Philippsen - 2:2.6.6-6 +- really fix help browser crash with new WebKit versions (#508301) + +* Sat Jun 27 2009 Nils Philippsen - 2:2.6.6-5 +- fix help browser crash with new WebKit versions (#508301) +- BR: webkitgtk-devel from F-11 on + +* Fri Jun 05 2009 Nils Philippsen - 2:2.6.6-4 +- don't build against aalib on RHEL +- use backported patch to correctly check gegl/babl versions + +* Tue Apr 14 2009 Nils Philippsen - 2:2.6.6-3 +- remove rpaths from binaries (#495670) + +* Mon Mar 30 2009 Nils Philippsen - 2:2.6.6-2 +- minimize dialogs with single image window (#492796, backported from trunk, + original patch by Sven Neumann) + * Wed Mar 18 2009 Nils Philippsen - 2:2.6.6-1 - version 2.6.6 diff --git a/sources b/sources index bd19884..5c7b444 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -23d880dd09cd62c936ed04666a53f8e4 gimp-2.6.6.tar.bz2 +77ed86a8de9b48587efb24f2b115ad38 gimp-2.6.7.tar.bz2