From 29d0ac8db57daf64d99d92c0e162a395982c265f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 3 Oct 2006 15:05:05 +0000 Subject: [PATCH] Complete the fix for bug 357280. 2006-10-03 Matthias Clasen * modules/printbackends/cups/gtkprintbackendcups.c: Complete the fix for bug 357280. --- ChangeLog | 5 +++ .../printbackends/cups/gtkprintbackendcups.c | 33 ++++++++++++++----- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 09ee56f55f..a3bb85a6ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-10-03 Matthias Clasen + + * modules/printbackends/cups/gtkprintbackendcups.c: Complete + the fix for bug 357280. + 2006-10-02 Behdad Esfahbod * gdk-pixbuf/Makefile.am: diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c index 041ab51beb..809733d39f 100644 --- a/modules/printbackends/cups/gtkprintbackendcups.c +++ b/modules/printbackends/cups/gtkprintbackendcups.c @@ -49,6 +49,7 @@ #include "gtkcupsutils.h" #include "gtkdebug.h" + typedef struct _GtkPrintBackendCupsClass GtkPrintBackendCupsClass; #define GTK_PRINT_BACKEND_CUPS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PRINT_BACKEND_CUPS, GtkPrintBackendCupsClass)) @@ -1664,6 +1665,16 @@ value_is_off (const char *value) strcasecmp (value, "False") == 0); } +static char * +ppd_group_name (ppd_group_t *group) +{ +#if CUPS_VERSION_MAJOR > 1 || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR > 1) || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR == 1 && CUPS_VERSION_PATCH >= 18) + return group->name; +#else + return group->text; +#endif +} + static int available_choices (ppd_file_t *ppd, ppd_option_t *option, @@ -1687,16 +1698,17 @@ available_choices (ppd_file_t *ppd, conflicts = g_new0 (char, option->num_choices); installed_options = NULL; -#if CUPS_VERSION_MAJOR > 1 || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR > 1) || (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR == 1 && CUPS_VERSION_PATCH >= 18) for (i = 0; i < ppd->num_groups; i++) { - if (strcmp (ppd->groups[i].name, "InstallableOptions") == 0) + char *name; + + name = ppd_group_name (&ppd->groups[i]); + if (strcmp (name, "InstallableOptions") == 0) { installed_options = &ppd->groups[i]; break; } } -#endif for (i = ppd->num_consts, constraint = ppd->consts; i > 0; i--, constraint++) { @@ -2038,21 +2050,24 @@ handle_option (GtkPrinterOptionSet *set, if (option) { - if (STRING_IN_TABLE (toplevel_group->name, + char *name; + + name = ppd_group_name (toplevel_group); + if (STRING_IN_TABLE (name, color_group_whitelist) || STRING_IN_TABLE (ppd_option->keyword, color_option_whitelist)) { option->group = g_strdup ("ColorPage"); } - else if (STRING_IN_TABLE (toplevel_group->name, + else if (STRING_IN_TABLE (name, image_quality_group_whitelist) || STRING_IN_TABLE (ppd_option->keyword, image_quality_option_whitelist)) { option->group = g_strdup ("ImageQualityPage"); } - else if (STRING_IN_TABLE (toplevel_group->name, + else if (STRING_IN_TABLE (name, finishing_group_whitelist) || STRING_IN_TABLE (ppd_option->keyword, finishing_option_whitelist)) @@ -2080,9 +2095,11 @@ handle_group (GtkPrinterOptionSet *set, GtkPrintSettings *settings) { gint i; - + gchar *name; + /* Ignore installable options */ - if (strcmp (toplevel_group->name, "InstallableOptions") == 0) + name = ppd_group_name (toplevel_group); + if (strcmp (name, "InstallableOptions") == 0) return; for (i = 0; i < group->num_options; i++)