]> Pileus Git - ~andy/gtk/blobdiff - modules/printbackends/cups/gtkprintbackendcups.c
Check whether a resolution has been set in GtkPrintSettings
[~andy/gtk] / modules / printbackends / cups / gtkprintbackendcups.c
index 5bb14eb9f4116f17b42bc59c2ddc4ca436eed799..2e1e1a9da82895fb1bfb8f25097dd0a8689ca227 100644 (file)
@@ -2235,7 +2235,6 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
                      GtkCupsResult       *result,
                      GetPPDData          *data)
 {
-  ipp_t *response;
   GtkPrinter *printer;
 
   GDK_THREADS_ENTER ();
@@ -2264,8 +2263,6 @@ cups_request_ppd_cb (GtkPrintBackendCups *print_backend,
       goto done;
     }
 
-  response = gtk_cups_result_get_response (result);
-
   /* let ppdOpenFd take over the ownership of the open file */
   g_io_channel_seek_position (data->ppd_io, 0, G_SEEK_SET, NULL);
   data->printer->ppd_file = ppdOpenFd (dup (g_io_channel_unix_get_fd (data->ppd_io)));
@@ -4094,23 +4091,29 @@ set_option_from_settings (GtkPrinterOption *option,
        gtk_printer_option_set (option, cups_value);
       else
        {
-         int res = gtk_print_settings_get_resolution (settings);
-         int res_x = gtk_print_settings_get_resolution_x (settings);
-         int res_y = gtk_print_settings_get_resolution_y (settings);
+         if (gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION, -1) != -1 ||
+             gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_X, -1) != -1 ||
+             gtk_print_settings_get_int_with_default (settings, GTK_PRINT_SETTINGS_RESOLUTION_Y, -1) != -1 ||
+             option->value == NULL || option->value[0] == '\0')
+           {
+              int res = gtk_print_settings_get_resolution (settings);
+              int res_x = gtk_print_settings_get_resolution_x (settings);
+              int res_y = gtk_print_settings_get_resolution_y (settings);
 
-          if (res_x != res_y)
-            {
-             value = g_strdup_printf ("%dx%ddpi", res_x, res_y);
-             gtk_printer_option_set (option, value);
-             g_free (value);
+              if (res_x != res_y)
+                {
+                  value = g_strdup_printf ("%dx%ddpi", res_x, res_y);
+                  gtk_printer_option_set (option, value);
+                  g_free (value);
+                }
+              else if (res != 0)
+                {
+                  value = g_strdup_printf ("%ddpi", res);
+                  gtk_printer_option_set (option, value);
+                  g_free (value);
+                }
             }
-          else if (res != 0)
-           {
-             value = g_strdup_printf ("%ddpi", res);
-             gtk_printer_option_set (option, value);
-             g_free (value);
-           }
-       }
+        }
     }
   else if (strcmp (option->name, "gtk-paper-type") == 0)
     map_settings_to_option (option, media_type_map, G_N_ELEMENTS (media_type_map),