|
|
f99e75e |
--- modules/printbackends/cups/gtkprintbackendcups.c 2009-01-01 20:41:58.000000000 +0100
|
|
|
ce5c764 |
+++ modules/printbackends/cups/gtkprintbackendcups.c 2009-01-21 13:54:39.000000000 +0100
|
|
|
ce5c764 |
@@ -1103,6 +1103,7 @@ cups_request_printer_list_cb (GtkPrintBa
|
|
|
ce5c764 |
ipp_t *response;
|
|
|
ce5c764 |
gboolean list_has_changed;
|
|
|
ce5c764 |
GList *removed_printer_checklist;
|
|
|
ce5c764 |
+ gchar *remote_default_printer = NULL;
|
|
|
ce5c764 |
|
|
|
ce5c764 |
GDK_THREADS_ENTER ();
|
|
|
ce5c764 |
|
|
|
ce5c764 |
@@ -1190,6 +1191,7 @@ cups_request_printer_list_cb (GtkPrintBa
|
|
|
ce5c764 |
gboolean is_accepting_jobs = TRUE;
|
|
|
ce5c764 |
gboolean default_printer = FALSE;
|
|
|
ce5c764 |
gboolean got_printer_type = FALSE;
|
|
|
ce5c764 |
+ gboolean remote_printer = FALSE;
|
|
|
ce5c764 |
|
|
|
ce5c764 |
/* Skip leading attributes until we hit a printer...
|
|
|
ce5c764 |
*/
|
|
|
ce5c764 |
@@ -1307,6 +1309,11 @@ cups_request_printer_list_cb (GtkPrintBa
|
|
|
f99e75e |
default_printer = TRUE;
|
|
|
f99e75e |
else
|
|
|
f99e75e |
default_printer = FALSE;
|
|
|
ce5c764 |
+
|
|
|
ce5c764 |
+ if (attr->values[0].integer & 0x00000002)
|
|
|
ce5c764 |
+ remote_printer = TRUE;
|
|
|
ce5c764 |
+ else
|
|
|
ce5c764 |
+ remote_printer = FALSE;
|
|
|
ce5c764 |
}
|
|
|
ce5c764 |
else
|
|
|
ce5c764 |
{
|
|
|
ce5c764 |
@@ -1330,8 +1337,16 @@ cups_request_printer_list_cb (GtkPrintBa
|
|
|
ce5c764 |
{
|
|
|
ce5c764 |
if (default_printer && !cups_backend->got_default_printer)
|
|
|
ce5c764 |
{
|
|
|
ce5c764 |
- cups_backend->got_default_printer = TRUE;
|
|
|
ce5c764 |
- cups_backend->default_printer = g_strdup (printer_name);
|
|
|
ce5c764 |
+ if (!remote_printer)
|
|
|
ce5c764 |
+ {
|
|
|
ce5c764 |
+ cups_backend->got_default_printer = TRUE;
|
|
|
ce5c764 |
+ cups_backend->default_printer = g_strdup (printer_name);
|
|
|
ce5c764 |
+ }
|
|
|
ce5c764 |
+ else
|
|
|
ce5c764 |
+ {
|
|
|
ce5c764 |
+ if (remote_default_printer == NULL)
|
|
|
ce5c764 |
+ remote_default_printer = g_strdup (printer_name);
|
|
|
ce5c764 |
+ }
|
|
|
ce5c764 |
}
|
|
|
ce5c764 |
}
|
|
|
ce5c764 |
else
|
|
|
ce5c764 |
@@ -1552,6 +1567,26 @@ done:
|
|
|
ce5c764 |
|
|
|
ce5c764 |
gtk_print_backend_set_list_done (backend);
|
|
|
ce5c764 |
|
|
|
ce5c764 |
+ if (!cups_backend->got_default_printer && remote_default_printer != NULL)
|
|
|
ce5c764 |
+ {
|
|
|
ce5c764 |
+ cups_backend->default_printer = g_strdup (remote_default_printer);
|
|
|
ce5c764 |
+ cups_backend->got_default_printer = TRUE;
|
|
|
ce5c764 |
+ g_free (remote_default_printer);
|
|
|
ce5c764 |
+
|
|
|
ce5c764 |
+ if (cups_backend->default_printer != NULL)
|
|
|
ce5c764 |
+ {
|
|
|
ce5c764 |
+ GtkPrinter *default_printer = NULL;
|
|
|
ce5c764 |
+ default_printer = gtk_print_backend_find_printer (GTK_PRINT_BACKEND (cups_backend),
|
|
|
ce5c764 |
+ cups_backend->default_printer);
|
|
|
ce5c764 |
+ if (default_printer != NULL)
|
|
|
ce5c764 |
+ {
|
|
|
ce5c764 |
+ gtk_printer_set_is_default (default_printer, TRUE);
|
|
|
ce5c764 |
+ g_signal_emit_by_name (GTK_PRINT_BACKEND (cups_backend),
|
|
|
ce5c764 |
+ "printer-status-changed", default_printer);
|
|
|
ce5c764 |
+ }
|
|
|
ce5c764 |
+ }
|
|
|
ce5c764 |
+ }
|
|
|
ce5c764 |
+
|
|
|
ce5c764 |
GDK_THREADS_LEAVE ();
|
|
|
ce5c764 |
}
|
|
|
ce5c764 |
|