diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2008-09-12 03:46:13 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2008-09-12 03:46:13 +0000 |
commit | d61669e6d306519b57f8114221d68e68bcd956ff (patch) | |
tree | e333d7a17b64445c536cd042b0b3b4f77e1dd3be | |
parent | 3083a903d16ee77e7fd27f7d96f0abf9fbd2d2ae (diff) | |
download | gtk+-d61669e6d306519b57f8114221d68e68bcd956ff.tar.gz |
Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page
email
* gtk/gtkprintoperation.c: Clamp page ranges to correct ranges.
Patch by Marek Kasik
svn path=/branches/gtk-2-12/; revision=21358
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | gtk/gtkprintoperation.c | 42 |
2 files changed, 62 insertions, 0 deletions
@@ -2,6 +2,26 @@ Merged from trunk: + Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page + email + + * gtk/gtkprintoperation.c: Clamp page ranges to correct ranges. + Patch by Marek Kasik + +2008-09-11 Matthias Clasen <mclasen@redhat.com> + + Merged from trunk: + + Bug 543545 – GtkAssistant crashes when gtk_widget_hide() is called + inside "apply" signal handler + + * gtk/gtkassistant.c: Don't emit signals with extra parameters. + Patch by Antti Kaijanmäki + +2008-09-11 Matthias Clasen <mclasen@redhat.com> + + Merged from trunk: + Bug 542523 - GtkTextTag should handle setting properties to NULL * gtk/gtktexttag.c (gtk_text_tag_set_property): Unset the color when diff --git a/gtk/gtkprintoperation.c b/gtk/gtkprintoperation.c index 63d69bbcfa..3269c84ccf 100644 --- a/gtk/gtkprintoperation.c +++ b/gtk/gtkprintoperation.c @@ -1919,6 +1919,46 @@ find_range (PrintPagesData *data) } } +static void +clamp_page_ranges (PrintPagesData *data) +{ + GtkPrintOperationPrivate *priv; + gint num_of_correct_ranges; + gint i; + + priv = data->op->priv; + + num_of_correct_ranges = 0; + + for (i = 0; i < data->num_ranges; i++) + if ((data->ranges[i].start >= 0) && + (data->ranges[i].start < priv->nr_of_pages) && + (data->ranges[i].end >= 0) && + (data->ranges[i].end < priv->nr_of_pages)) + { + data->ranges[num_of_correct_ranges] = data->ranges[i]; + num_of_correct_ranges++; + } + else if ((data->ranges[i].start >= 0) && + (data->ranges[i].start < priv->nr_of_pages) && + (data->ranges[i].end >= priv->nr_of_pages)) + { + data->ranges[i].end = priv->nr_of_pages - 1; + data->ranges[num_of_correct_ranges] = data->ranges[i]; + num_of_correct_ranges++; + } + else if ((data->ranges[i].end >= 0) && + (data->ranges[i].end < priv->nr_of_pages) && + (data->ranges[i].start < 0)) + { + data->ranges[i].start = 0; + data->ranges[num_of_correct_ranges] = data->ranges[i]; + num_of_correct_ranges++; + } + + data->num_ranges = num_of_correct_ranges; +} + static gboolean increment_page_sequence (PrintPagesData *data) { @@ -2132,6 +2172,8 @@ print_pages_idle (gpointer user_data) data->ranges[0].end = priv->nr_of_pages - 1; } + clamp_page_ranges (data); + if (priv->manual_reverse) { data->range = data->num_ranges - 1; |