summaryrefslogtreecommitdiff
path: root/graphics/gpaint/patches
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/gpaint/patches')
-rw-r--r--graphics/gpaint/patches/01_drawing.patch21
-rw-r--r--graphics/gpaint/patches/02_remove_menu_h_reference.patch16
-rw-r--r--graphics/gpaint/patches/09_fix_menu_entry.patch25
-rw-r--r--graphics/gpaint/patches/10_fix_crash_on_font_select.patch97
-rw-r--r--graphics/gpaint/patches/11_fix_image_rotation.patch110
-rw-r--r--graphics/gpaint/patches/20_fix_line_width_combo.patch352
-rw-r--r--graphics/gpaint/patches/21_fix_crash_on_fill_button_click.patch25
-rw-r--r--graphics/gpaint/patches/22_fix_not_printable_string.patch21
-rw-r--r--graphics/gpaint/patches/23_add_accelerator_keys.patch92
-rw-r--r--graphics/gpaint/patches/24_fix_crash_on_failed_write.patch105
-rw-r--r--graphics/gpaint/patches/25_fix_color_selection.patch79
-rw-r--r--graphics/gpaint/patches/26_fix_toolbar.patch21
12 files changed, 964 insertions, 0 deletions
diff --git a/graphics/gpaint/patches/01_drawing.patch b/graphics/gpaint/patches/01_drawing.patch
new file mode 100644
index 0000000000..9b587f9f92
--- /dev/null
+++ b/graphics/gpaint/patches/01_drawing.patch
@@ -0,0 +1,21 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fixes compiling with recent versions of libgtk
+ Newer versions of Gtk+ don't define the GTK_RESPONSE_DISCARD symbol, so we
+ replace its ocurrence by GTK_RESPONSE_NO to make gpaint build without
+ errors.
+Bug: https://savannah.gnu.org/bugs/index.php?21703
+Forwarded: https://savannah.gnu.org/patch/?7047
+
+Index: b/src/drawing.c
+===================================================================
+--- a/src/drawing.c 2009-12-19 17:11:48.000000000 -0200
++++ b/src/drawing.c 2009-12-19 17:12:10.000000000 -0200
+@@ -427,7 +427,7 @@
+ _("Do you want to save the changes you made to \"%s\"?\nYour changes will be lost if you don't save them."),
+ drawing->filename->str);
+ #ifdef GTK_STOCK_DISCARD
+- gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_DISCARD,GTK_RESPONSE_DISCARD);
++ gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_DISCARD,GTK_RESPONSE_NO);
+ #else
+ gtk_dialog_add_button(GTK_DIALOG(dialog), _("Close _without Saving"), GTK_RESPONSE_NO);
+ #endif /* !GTK_STOCK_DISCARD */
diff --git a/graphics/gpaint/patches/02_remove_menu_h_reference.patch b/graphics/gpaint/patches/02_remove_menu_h_reference.patch
new file mode 100644
index 0000000000..192a457bcc
--- /dev/null
+++ b/graphics/gpaint/patches/02_remove_menu_h_reference.patch
@@ -0,0 +1,16 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Removes reference to non-existent menu.h file
+Forwarded: https://savannah.gnu.org/patch/?7050
+
+Index: b/src/menu.c
+===================================================================
+--- a/src/menu.c 2009-12-19 17:11:48.000000000 -0200
++++ b/src/menu.c 2009-12-19 17:12:10.000000000 -0200
+@@ -34,7 +34,6 @@
+ #include "image.h"
+ #include "image_processing.h"
+ #include "tool_palette.h"
+-#include "menu.h"
+ #include "print.h"
+ #include "file.h"
+ #include "text.h"
diff --git a/graphics/gpaint/patches/09_fix_menu_entry.patch b/graphics/gpaint/patches/09_fix_menu_entry.patch
new file mode 100644
index 0000000000..309a548a66
--- /dev/null
+++ b/graphics/gpaint/patches/09_fix_menu_entry.patch
@@ -0,0 +1,25 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fixes the gpaint.desktop file
+ Change executable and icon filenames according to changes applied in the
+ Debian packaging.
+
+Index: b/gpaint.desktop
+===================================================================
+--- a/gpaint.desktop 2009-12-19 17:11:48.000000000 -0200
++++ b/gpaint.desktop 2009-12-19 17:12:10.000000000 -0200
+@@ -3,11 +3,9 @@
+ Comment=A small-scale painting program for GNOME, the GNU Desktop
+ Comment[fr]=Un petit outil de dessin pour GNOME, le desktop GNU
+ Comment[pt_BR]=Um pequeno programa de desenho para o GNOME, o Desktop GNU
+-TryExec=gpaint-2
+-Exec=gpaint-2
+-Icon=gnome-logo-icon-transparent.png
++TryExec=gpaint
++Exec=gpaint
++Icon=gpaint.svg
+ Terminal=0
+ Type=Application
+-
+-
+-
++Categories=Graphics;2DGraphics;RasterGraphics;
diff --git a/graphics/gpaint/patches/10_fix_crash_on_font_select.patch b/graphics/gpaint/patches/10_fix_crash_on_font_select.patch
new file mode 100644
index 0000000000..868c05a569
--- /dev/null
+++ b/graphics/gpaint/patches/10_fix_crash_on_font_select.patch
@@ -0,0 +1,97 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Avoids crash on font selection
+ Makes the font selection button active only when the text tool is selected,
+ avoiding a crash that would occur if it is clicked without selectiong the
+ text tool.
+Bug-Debian: http://bugs.debian.org/497201
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gpaint/+bug/262889
+Forwarded: https://savannah.gnu.org/patch/?6645
+
+Index: b/gpaint.glade
+===================================================================
+--- a/gpaint.glade 2009-12-19 17:11:48.000000000 -0200
++++ b/gpaint.glade 2009-12-19 17:12:10.000000000 -0200
+@@ -1137,6 +1137,7 @@
+ <child>
+ <widget class="GtkFontButton" id="fontpicker">
+ <property name="visible">True</property>
++ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="show_style">True</property>
+ <property name="show_size">True</property>
+Index: b/src/main.c
+===================================================================
+--- a/src/main.c 2009-12-19 17:11:48.000000000 -0200
++++ b/src/main.c 2009-12-19 17:12:10.000000000 -0200
+@@ -73,6 +73,10 @@
+ tool_palette_set_active_button(main_window, "pen_button");
+ /* make the pen tool the default initial tool so the user can draw right away */
+
++ gpaint_tool *text_tool = tool_palette_get_tool(main_window, "text");
++ widget = lookup_widget(main_window, "fontpicker");
++ text_set_fontpicker(text_tool, widget);
++
+ #if (!defined(HAVE_GTK_PRINT) && !defined(HAVE_GNOME_PRINT))
+ /* disable print menus and buttons if no print support available*/
+ widget = lookup_widget(main_window, "print_button");
+Index: b/src/text.c
+===================================================================
+--- a/src/text.c 2009-12-19 17:11:48.000000000 -0200
++++ b/src/text.c 2009-12-19 17:12:10.000000000 -0200
+@@ -54,6 +54,7 @@
+ GString *textbuf;
+ int max_width;
+ int max_height;
++ GtkFontButton *fontpicker;
+ } gpaint_text;
+
+
+@@ -94,6 +95,7 @@
+ GPAINT_TOOL(text)->commit_change = text_commit_change;
+
+ text->textbuf = g_string_new(0);
++ text->fontpicker = NULL;
+ return GPAINT_TOOL(text);
+ }
+
+@@ -118,6 +120,7 @@
+ g_string_printf(text->textbuf, "");
+ text->timer = g_timeout_add(TEXT_CURSOR_BLINK_RATE,
+ (GtkFunction)(text_handle_timeout), text);
++ gtk_widget_set_sensitive(GTK_WIDGET(text->fontpicker), TRUE);
+ }
+
+ static void
+@@ -145,7 +148,7 @@
+ text_draw_string(text);
+ }
+ text_clear(text);
+-
++ gtk_widget_set_sensitive(GTK_WIDGET(text->fontpicker), FALSE);
+ }
+
+ static gboolean
+@@ -474,6 +477,8 @@
+
+ }
+
+-
+-
+-
++void text_set_fontpicker(gpaint_tool *tool, GtkFontButton *fontpicker)
++{
++ gpaint_text *text = GPAINT_TEXT(tool);
++ text->fontpicker = fontpicker;
++}
+Index: b/src/text.h
+===================================================================
+--- a/src/text.h 2009-12-19 17:11:48.000000000 -0200
++++ b/src/text.h 2009-12-19 17:12:10.000000000 -0200
+@@ -30,6 +30,6 @@
+
+
+ gpaint_tool* text_create(const char *name);
+-
++void text_set_fontpicker(gpaint_tool *tool, GtkFontButton *fontpicker);
+
+ #endif
diff --git a/graphics/gpaint/patches/11_fix_image_rotation.patch b/graphics/gpaint/patches/11_fix_image_rotation.patch
new file mode 100644
index 0000000000..4990b52c28
--- /dev/null
+++ b/graphics/gpaint/patches/11_fix_image_rotation.patch
@@ -0,0 +1,110 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fixes rotation operations
+ Implement the rotation in multiples of 90 degrees using the
+ gdk_pixbuf_rotate_simple function instead of the custom (and broken)
+ rotation algorithm
+Bug-Debian: http://bugs.debian.org/497487
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/262942
+Forwarded: https://savannah.gnu.org/patch/?6643
+
+Index: b/src/drawing.c
+===================================================================
+--- a/src/drawing.c 2009-12-19 17:12:10.000000000 -0200
++++ b/src/drawing.c 2009-12-19 17:12:11.000000000 -0200
+@@ -462,12 +462,23 @@
+ }
+
+ void
+-drawing_rotate(gpaint_drawing *drawing, double degrees)
++drawing_rotate(gpaint_drawing *drawing, int degrees)
+ {
+ gpaint_image *image = drawing_create_image(drawing);
+ if (image)
+ {
+- image_rotate(image, degrees);
++ switch (degrees)
++ {
++ case 0:
++ case 90:
++ case 180:
++ case 270:
++ image_rotate_simple(image, degrees);
++ break;
++ default:
++ image_rotate(image, degrees);
++ break;
++ }
+
+ /* copy rotated image on the pixmap */
+ gdk_pixmap_unref(drawing->backing_pixmap);
+Index: b/src/drawing.h
+===================================================================
+--- a/src/drawing.h 2009-12-19 17:11:48.000000000 -0200
++++ b/src/drawing.h 2009-12-19 17:12:11.000000000 -0200
+@@ -58,6 +58,6 @@
+ void drawing_clear(gpaint_drawing *drawing);
+ void drawing_clear_selection(gpaint_drawing *drawing, gpaint_point_array *points);
+ gboolean drawing_prompt_to_save(gpaint_drawing *drawing);
+-void drawing_rotate(gpaint_drawing *drawing, double degrees);
++void drawing_rotate(gpaint_drawing *drawing, int degrees);
+
+ #endif
+Index: b/src/image.c
+===================================================================
+--- a/src/image.c 2009-12-19 17:11:48.000000000 -0200
++++ b/src/image.c 2009-12-19 17:12:11.000000000 -0200
+@@ -628,6 +628,27 @@
+ return 0;
+ }
+
++int
++image_rotate_simple (gpaint_image *image, int degrees)
++{
++ GdkPixbuf *newpixbuf;
++
++ switch (degrees)
++ {
++ case GDK_PIXBUF_ROTATE_NONE:
++ case GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE:
++ case GDK_PIXBUF_ROTATE_UPSIDEDOWN:
++ case GDK_PIXBUF_ROTATE_CLOCKWISE:
++ newpixbuf = gdk_pixbuf_rotate_simple (image->pixbuf, degrees);
++ gdk_pixbuf_unref (image->pixbuf);
++ image->pixbuf = newpixbuf;
++ return 0;
++ break;
++ default:
++ return 1;
++ }
++}
++
+
+ GdkPixbuf* image_pixbuf(gpaint_image* image) {
+ return image->pixbuf;
+Index: b/src/image.h
+===================================================================
+--- a/src/image.h 2009-12-19 17:11:48.000000000 -0200
++++ b/src/image.h 2009-12-19 17:12:11.000000000 -0200
+@@ -45,5 +45,6 @@
+ int image_flip_x(gpaint_image *image);
+ int image_flip_y(gpaint_image *image);
+ int image_rotate(gpaint_image *image, double radians);
++int image_rotate_simple(gpaint_image *image, int degrees);
+ GdkPixbuf* image_pixbuf(gpaint_image *image);
+ #endif
+Index: b/src/menu.c
+===================================================================
+--- a/src/menu.c 2009-12-19 17:12:10.000000000 -0200
++++ b/src/menu.c 2009-12-19 17:12:11.000000000 -0200
+@@ -486,9 +486,9 @@
+
+ sscanf(name, "rotate_%c%d_menu", &sign, &degrees);
+ debug2("sign = %c degrees = %d", sign, degrees);
+- if (sign=='n')
++ if (sign=='p')
+ {
+- degrees *= -1;
++ degrees = 360 - degrees;
+ }
+ canvas_focus_lost(canvas);
+ drawing_rotate(canvas->drawing, degrees);
diff --git a/graphics/gpaint/patches/20_fix_line_width_combo.patch b/graphics/gpaint/patches/20_fix_line_width_combo.patch
new file mode 100644
index 0000000000..61cabff290
--- /dev/null
+++ b/graphics/gpaint/patches/20_fix_line_width_combo.patch
@@ -0,0 +1,352 @@
+Author: Thomas Viehmann <tv@beamnet.de>
+Description: Fix line width combo box
+ Fixes the line width combo box by puting items in the drop down
+ menu in the gpaint.glade file.
+Bug-Debian: http://bugs.debian.org/497484
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/209173
+Forwarded: https://savannah.gnu.org/patch/?6644
+
+Index: b/gpaint.glade
+===================================================================
+--- a/gpaint.glade 2009-12-19 17:12:10.000000000 -0200
++++ b/gpaint.glade 2009-12-19 17:12:11.000000000 -0200
+@@ -1230,6 +1230,34 @@
+ <property name="column_spacing">0</property>
+
+ <child>
++ <widget class="GtkLabel" id="Line Width">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">line width</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_CENTER</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0.5</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ <signal name="realize" handler="on_small_label_realize"/>
++ </widget>
++ <packing>
++ <property name="left_attach">0</property>
++ <property name="right_attach">1</property>
++ <property name="top_attach">0</property>
++ <property name="bottom_attach">1</property>
++ <property name="x_options"></property>
++ <property name="y_options"></property>
++ </packing>
++ </child>
++ <child>
+ <widget class="GtkCombo" id="line_width_combo">
+ <property name="width_request">60</property>
+ <property name="height_request">25</property>
+@@ -1239,27 +1267,264 @@
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+- <signal name="check_resize" handler="on_line_width_combo_check_resize"/>
+ <signal name="add" handler="on_line_width_combo_add"/>
++ <signal name="check_resize" handler="on_line_width_combo_check_resize"/>
+
+ <child internal-child="entry">
+- <widget class="GtkEntry" id="entry1">
++ <widget class="GtkEntry" id="line_width_combo_combo_entry">
+ <property name="visible">True</property>
++ <property name="tooltip" translatable="yes">line width</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+- <property name="invisible_char">•</property>
++ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
++ <signal name="changed" handler="on_line_width_combo_combo_entry_changed"/>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+- <widget class="GtkList" id="list1">
++ <widget class="GtkList" id="convertwidget1">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget2">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget3">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">1</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget4">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget5">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">2</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget6">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget7">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">3</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget8">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget9">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">4</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget10">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget11">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">5</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget12">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget13">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">6</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget14">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget15">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">7</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget16">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget17">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">8</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
++
++ <child>
++ <widget class="GtkListItem" id="convertwidget18">
++ <property name="visible">True</property>
++
++ <child>
++ <widget class="GtkLabel" id="convertwidget19">
++ <property name="visible">True</property>
++ <property name="label" translatable="yes">9</property>
++ <property name="use_underline">False</property>
++ <property name="use_markup">False</property>
++ <property name="justify">GTK_JUSTIFY_LEFT</property>
++ <property name="wrap">False</property>
++ <property name="selectable">False</property>
++ <property name="xalign">0</property>
++ <property name="yalign">0.5</property>
++ <property name="xpad">0</property>
++ <property name="ypad">0</property>
++ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
++ <property name="width_chars">-1</property>
++ <property name="single_line_mode">False</property>
++ <property name="angle">0</property>
++ </widget>
++ </child>
++ </widget>
++ </child>
+ </widget>
+ </child>
+ </widget>
+@@ -1272,35 +1537,6 @@
+ <property name="y_options"></property>
+ </packing>
+ </child>
+-
+- <child>
+- <widget class="GtkLabel" id="Line Width">
+- <property name="visible">True</property>
+- <property name="label" translatable="yes">line width</property>
+- <property name="use_underline">False</property>
+- <property name="use_markup">False</property>
+- <property name="justify">GTK_JUSTIFY_CENTER</property>
+- <property name="wrap">False</property>
+- <property name="selectable">False</property>
+- <property name="xalign">0.5</property>
+- <property name="yalign">0.5</property>
+- <property name="xpad">0</property>
+- <property name="ypad">0</property>
+- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+- <property name="width_chars">-1</property>
+- <property name="single_line_mode">False</property>
+- <property name="angle">0</property>
+- <signal name="realize" handler="on_small_label_realize"/>
+- </widget>
+- <packing>
+- <property name="left_attach">0</property>
+- <property name="right_attach">1</property>
+- <property name="top_attach">0</property>
+- <property name="bottom_attach">1</property>
+- <property name="x_options"></property>
+- <property name="y_options"></property>
+- </packing>
+- </child>
+ </widget>
+ </child>
+ </widget>
diff --git a/graphics/gpaint/patches/21_fix_crash_on_fill_button_click.patch b/graphics/gpaint/patches/21_fix_crash_on_fill_button_click.patch
new file mode 100644
index 0000000000..132b349030
--- /dev/null
+++ b/graphics/gpaint/patches/21_fix_crash_on_fill_button_click.patch
@@ -0,0 +1,25 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: fix crash on fill button click
+ Avoid crashing when clicking on fill button by checking that
+ tool->canvas->drawing_area is not null before casting it to GtkWidget
+Bug-Debian: http://bugs.debian.org/544162
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/227174
+Bug: https://savannah.gnu.org/bugs/?25117
+Forwarded: https://savannah.gnu.org/patch/?7045
+
+Index: pkg-gpaint/src/text.c
+===================================================================
+--- pkg-gpaint.orig/src/text.c 2009-12-22 21:03:29.000000000 -0200
++++ pkg-gpaint/src/text.c 2009-12-23 13:01:33.000000000 -0200
+@@ -156,7 +156,10 @@
+ {
+ debug_fn();
+ GtkStyle *style;
+- GtkWidget *widget = GTK_WIDGET(tool->canvas->drawing_area);
++ GtkWidget *widget = NULL;
++
++ if ((tool->canvas == NULL) || (tool->canvas->drawing_area == NULL)) return FALSE;
++ widget = GTK_WIDGET(tool->canvas->drawing_area);
+ style = gtk_widget_get_style(widget);
+ g_assert(style);
+
diff --git a/graphics/gpaint/patches/22_fix_not_printable_string.patch b/graphics/gpaint/patches/22_fix_not_printable_string.patch
new file mode 100644
index 0000000000..6e2b98734f
--- /dev/null
+++ b/graphics/gpaint/patches/22_fix_not_printable_string.patch
@@ -0,0 +1,21 @@
+Author: Ying-Chun Liu (PaulLiu) <grandpaul@gmail.com>
+Description: Ignore non-printable characters on text input
+Bug-Debian: http://bugs.debian.org/535217
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/262648
+Bug: https://savannah.gnu.org/bugs/?26923
+Forwarded: https://savannah.gnu.org/patch/?7051
+
+Index: b/src/text.c
+===================================================================
+--- a/src/text.c 2009-12-19 17:12:11.000000000 -0200
++++ b/src/text.c 2009-12-19 17:12:11.000000000 -0200
+@@ -238,7 +238,9 @@
+ }
+ else if (keyevent->string)
+ {
++ if (isprint(keyevent->string[0])) {
+ g_string_append(text->textbuf, keyevent->string);
++ }
+ }
+ else if ((keyevent->keyval >= GDK_space) && (keyevent->keyval < GDK_Shift_L))
+ {
diff --git a/graphics/gpaint/patches/23_add_accelerator_keys.patch b/graphics/gpaint/patches/23_add_accelerator_keys.patch
new file mode 100644
index 0000000000..f53813444c
--- /dev/null
+++ b/graphics/gpaint/patches/23_add_accelerator_keys.patch
@@ -0,0 +1,92 @@
+Author: Matt Wheeler <m@funkyhat.org>
+Description: Add accelerator keys to common functions
+ Add accelerator keys for common operations in gpaint
+Bug-Debian: http://bugs.debian.org/550305
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/444750
+Bug: https://savannah.gnu.org/bugs/?27618
+Forwarded: https://savannah.gnu.org/patch/?7053
+
+Index: b/gpaint.glade
+===================================================================
+--- a/gpaint.glade 2009-12-19 17:12:11.000000000 -0200
++++ b/gpaint.glade 2009-12-19 17:12:11.000000000 -0200
+@@ -341,6 +341,7 @@
+ <property name="label" translatable="yes">_New</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_new_file_menu_activate"/>
++ <accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image25">
+@@ -362,6 +363,7 @@
+ <property name="label" translatable="yes">_Open</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_open_menu_activate"/>
++ <accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image26">
+@@ -383,6 +385,7 @@
+ <property name="label" translatable="yes">_Save</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_menu_activate"/>
++ <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image27">
+@@ -453,6 +456,7 @@
+ <property name="label" translatable="yes">_Print</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_print_menu_activate"/>
++ <accelerator key="P" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image30">
+@@ -480,6 +484,7 @@
+ <property name="label" translatable="yes">_Close</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_close_window_activate"/>
++ <accelerator key="W" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image31">
+@@ -501,6 +506,7 @@
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_quit_menu_activate"/>
++ <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image32">
+@@ -535,6 +541,7 @@
+ <property name="label" translatable="yes">Cu_t</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_cut_menu_activate"/>
++ <accelerator key="X" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image33">
+@@ -556,6 +563,7 @@
+ <property name="label" translatable="yes">_Copy</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_copy_menu_activate"/>
++ <accelerator key="C" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image34">
+@@ -577,6 +585,7 @@
+ <property name="label" translatable="yes">_Paste</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_paste_menu_activate"/>
++ <accelerator key="V" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image35">
+@@ -625,6 +634,7 @@
+ <property name="label" translatable="yes">_Select All</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_select_all_activate"/>
++ <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+ </widget>
+ </child>
+ </widget>
diff --git a/graphics/gpaint/patches/24_fix_crash_on_failed_write.patch b/graphics/gpaint/patches/24_fix_crash_on_failed_write.patch
new file mode 100644
index 0000000000..92be4e8020
--- /dev/null
+++ b/graphics/gpaint/patches/24_fix_crash_on_failed_write.patch
@@ -0,0 +1,105 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fix crash when saving in unsupported format
+ Check if the format chosen by the user is supported before trying to save.
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/386234
+Bug: https://savannah.gnu.org/bugs/?25334
+Forwarded: https://savannah.gnu.org/patch/?7052
+
+Index: b/src/drawing.c
+===================================================================
+--- a/src/drawing.c 2009-12-19 17:12:11.000000000 -0200
++++ b/src/drawing.c 2009-12-19 17:12:12.000000000 -0200
+@@ -262,7 +262,7 @@
+ (error && error->message) ? error->message : "");
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+- g_free(error); /* allocated by gdk-pixbuf library */
++ g_error_free(error); /* allocated by gdk-pixbuf library */
+ }
+ return saved;
+ }
+Index: b/src/image.c
+===================================================================
+--- a/src/image.c 2009-12-19 17:12:11.000000000 -0200
++++ b/src/image.c 2009-12-19 17:12:12.000000000 -0200
+@@ -32,6 +32,7 @@
+ #include <gdk/gdkx.h> /* for gdk_root_parent */
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+
++#define _(String) gettext (String)
+
+ static int cmp_int(const void *a, const void *b);
+ static void fill_polygon(
+@@ -191,13 +192,48 @@
+ return image;
+ }
+
++
++gboolean
++is_writable (GSList *formats, gchar *type)
++{
++ gboolean writable = FALSE;
++
++ while (!writable && formats != NULL)
++ {
++ gchar** extensions = gdk_pixbuf_format_get_extensions((GdkPixbufFormat *)(formats->data));
++ gchar** e = NULL;
++ for (e = extensions; *e; ++e)
++ {
++ if (!strcmp(*e, type))
++ {
++ writable = TRUE;
++ break;
++ }
++ }
++ g_strfreev (extensions);
++ formats = g_slist_next (formats);
++ }
++ return writable;
++}
++
++void add_if_writable (GdkPixbufFormat *data, GSList **list)
++{
++ if (gdk_pixbuf_format_is_writable (data))
++ *list = g_slist_prepend (*list, data);
++}
++
+ int
+ image_write(gpaint_image* image, const gchar* filename, GError **perror)
+ {
+ gboolean saved = FALSE;
+ gchar *ext = NULL;
+ gchar *type = NULL;
+-
++
++ GSList *formats = gdk_pixbuf_get_formats ();
++ GSList *writable_formats = NULL;
++ g_slist_foreach (formats, add_if_writable, &writable_formats);
++ g_slist_free (formats);
++
+ ext = g_strrstr(filename, ".");
+ if (!ext)
+ {
+@@ -214,13 +250,20 @@
+ {
+ type = g_ascii_strdown(ext+1,-1);
+ debug1("type=[%s]",type);
+- saved = gdk_pixbuf_save(image->pixbuf, filename, type, perror, NULL);
++ if (is_writable (writable_formats, type))
++ {
++ saved = gdk_pixbuf_save(image->pixbuf, filename, type, perror, NULL);
++ } else {
++ saved = FALSE;
++ *perror = g_error_new (GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_BAD_OPTION, _("Saving in the '%s' format is not supported by gdk_pixbuf"), type);
++ }
+ g_free(type);
+ }
+ if (!saved && *perror)
+ {
+ g_warning("Could not save image %s: %s\n", filename, (*perror)->message);
+- }
++ }
++ g_slist_free (writable_formats);
+ return saved;
+ }
+
diff --git a/graphics/gpaint/patches/25_fix_color_selection.patch b/graphics/gpaint/patches/25_fix_color_selection.patch
new file mode 100644
index 0000000000..7af4eb2ed1
--- /dev/null
+++ b/graphics/gpaint/patches/25_fix_color_selection.patch
@@ -0,0 +1,79 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fix foreground/background color selection
+ Fixes the foreground/background color selection by checking the GtkColorButton
+ color when the user chooses the color.
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/344237
+Forwarded: https://savannah.gnu.org/patch/index.php?7028
+
+diff --git a/src/callbacks.h b/src/callbacks.h
+index 985dddf..5485329 100644
+--- a/src/callbacks.h
++++ b/src/callbacks.h
+@@ -359,18 +359,10 @@ on_fontpicker_font_set (GtkFontButton *gnomefontpicker,
+
+ void
+ on_foreground_color_picker_color_set (GtkColorButton *gnomecolorpicker,
+- guint arg1,
+- guint arg2,
+- guint arg3,
+- guint arg4,
+ gpointer user_data);
+
+ void
+ on_background_color_picker_color_set (GtkColorButton *gnomecolorpicker,
+- guint arg1,
+- guint arg2,
+- guint arg3,
+- guint arg4,
+ gpointer user_data);
+
+ void
+diff --git a/src/color_palette.c b/src/color_palette.c
+index 9502acc..8c259e7 100644
+--- a/src/color_palette.c
++++ b/src/color_palette.c
+@@ -338,7 +338,7 @@ change_color(gpaint_color_swatch *swatch, gpaint_color_mode mode)
+ g_assert(swatch);
+ canvas = canvas_lookup(swatch->widget);
+ gdk_gc_get_values(swatch->gc, &gcvalues);
+-
++
+ if (mode==FOREGROUND)
+ {
+ change_foreground_color(canvas, &(gcvalues.foreground));
+@@ -362,15 +362,12 @@ change_color(gpaint_color_swatch *swatch, gpaint_color_mode mode)
+ */
+ void
+ on_foreground_color_picker_color_set (GtkColorButton *gnomecolorpicker,
+- guint arg1,
+- guint arg2,
+- guint arg3,
+- guint arg4,
+ gpointer user_data)
+ {
+- GdkColor color = {0, arg1, arg2, arg3};
++ GdkColor color;
+ gpaint_canvas *canvas = canvas_lookup(GTK_WIDGET(gnomecolorpicker));
+
++ gtk_color_button_get_color(gnomecolorpicker, &color);
+ gdk_color_alloc(gdk_colormap_get_system(), &color);
+ change_foreground_color(canvas, &color);
+ }
+@@ -380,15 +377,12 @@ on_foreground_color_picker_color_set (GtkColorButton *gnomecolorpicker,
+ */
+ void
+ on_background_color_picker_color_set (GtkColorButton *gnomecolorpicker,
+- guint arg1,
+- guint arg2,
+- guint arg3,
+- guint arg4,
+ gpointer user_data)
+ {
+- GdkColor color = {0, arg1, arg2, arg3};
++ GdkColor color;
+ gpaint_canvas *canvas = canvas_lookup(GTK_WIDGET(gnomecolorpicker));
+
++ gtk_color_button_get_color(gnomecolorpicker, &color);
+ gdk_color_alloc(gdk_colormap_get_system(), &color);
+ change_background_color(canvas, &color);
+ }
diff --git a/graphics/gpaint/patches/26_fix_toolbar.patch b/graphics/gpaint/patches/26_fix_toolbar.patch
new file mode 100644
index 0000000000..c6fdc63e33
--- /dev/null
+++ b/graphics/gpaint/patches/26_fix_toolbar.patch
@@ -0,0 +1,21 @@
+Author: Goedson Teixeira Paixao <goedson@debian.org>
+Description: Fix toolbar behaviour
+ Do not set a fixed toolbar style so that gpaint follows the style set in
+ the user preferences
+Bug-Debian: http://bugs.debian.org/497488
+Bug-Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gpaint/+bug/127296
+Bug: https://savannah.gnu.org/bugs/?21260
+Forwarded: https://savannah.gnu.org/patch/index.php?7044
+
+Index: pkg-gpaint/gpaint.glade
+===================================================================
+--- pkg-gpaint.orig/gpaint.glade 2009-12-22 20:56:13.000000000 -0200
++++ pkg-gpaint/gpaint.glade 2009-12-22 20:56:33.000000000 -0200
+@@ -1004,7 +1004,6 @@
+ <property name="height_request">55</property>
+ <property name="visible">True</property>
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+- <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+ <property name="tooltips">True</property>
+ <property name="show_arrow">True</property>
+