printing: Avoid missing icons

I've noticed a missing image show up in my print dialog, where
the printer reported "printer-paused" as icon. Rearrange things
so we always fall back to "printer" for printer icons.
This commit is contained in:
Matthias Clasen
2014-10-04 12:10:04 -04:00
parent c0573272f3
commit a03583d14f
2 changed files with 12 additions and 4 deletions

View File

@ -967,15 +967,19 @@ printer_status_cb (GtkPrintBackend *backend,
GtkPrintUnixDialogPrivate *priv = dialog->priv; GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkTreeIter *iter; GtkTreeIter *iter;
GtkTreeSelection *selection; GtkTreeSelection *selection;
GIcon *icon;
iter = g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter"); iter = g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter");
icon = g_themed_icon_new ("printer");
g_themed_icon_prepend_name (G_THEMED_ICON (icon), gtk_printer_get_icon_name (printer));
gtk_list_store_set (GTK_LIST_STORE (priv->printer_list), iter, gtk_list_store_set (GTK_LIST_STORE (priv->printer_list), iter,
PRINTER_LIST_COL_ICON, gtk_printer_get_icon_name (printer), PRINTER_LIST_COL_ICON, icon,
PRINTER_LIST_COL_STATE, gtk_printer_get_state_message (printer), PRINTER_LIST_COL_STATE, gtk_printer_get_state_message (printer),
PRINTER_LIST_COL_JOBS, gtk_printer_get_job_count (printer), PRINTER_LIST_COL_JOBS, gtk_printer_get_job_count (printer),
PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer), PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer),
-1); -1);
g_object_unref (icon);
/* When the pause state change then we need to update sensitive property /* When the pause state change then we need to update sensitive property
* of GTK_RESPONSE_OK button inside of selected_printer_changed function. * of GTK_RESPONSE_OK button inside of selected_printer_changed function.
@ -1000,6 +1004,7 @@ printer_added_cb (GtkPrintBackend *backend,
GtkTreeIter iter, filter_iter; GtkTreeIter iter, filter_iter;
GtkTreeSelection *selection; GtkTreeSelection *selection;
GtkTreePath *path; GtkTreePath *path;
GIcon *icon;
gtk_list_store_append (GTK_LIST_STORE (priv->printer_list), &iter); gtk_list_store_append (GTK_LIST_STORE (priv->printer_list), &iter);
@ -1008,14 +1013,17 @@ printer_added_cb (GtkPrintBackend *backend,
gtk_tree_iter_copy (&iter), gtk_tree_iter_copy (&iter),
(GDestroyNotify) gtk_tree_iter_free); (GDestroyNotify) gtk_tree_iter_free);
icon = g_themed_icon_new ("printer");
g_themed_icon_prepend_name (G_THEMED_ICON (icon), gtk_printer_get_icon_name (printer));
gtk_list_store_set (GTK_LIST_STORE (priv->printer_list), &iter, gtk_list_store_set (GTK_LIST_STORE (priv->printer_list), &iter,
PRINTER_LIST_COL_ICON, gtk_printer_get_icon_name (printer), PRINTER_LIST_COL_ICON, icon,
PRINTER_LIST_COL_NAME, gtk_printer_get_name (printer), PRINTER_LIST_COL_NAME, gtk_printer_get_name (printer),
PRINTER_LIST_COL_STATE, gtk_printer_get_state_message (printer), PRINTER_LIST_COL_STATE, gtk_printer_get_state_message (printer),
PRINTER_LIST_COL_JOBS, gtk_printer_get_job_count (printer), PRINTER_LIST_COL_JOBS, gtk_printer_get_job_count (printer),
PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer), PRINTER_LIST_COL_LOCATION, gtk_printer_get_location (printer),
PRINTER_LIST_COL_PRINTER_OBJ, printer, PRINTER_LIST_COL_PRINTER_OBJ, printer,
-1); -1);
g_object_unref (icon);
gtk_tree_model_filter_convert_child_iter_to_iter (priv->printer_list_filter, gtk_tree_model_filter_convert_child_iter_to_iter (priv->printer_list_filter,
&filter_iter, &iter); &filter_iter, &iter);

View File

@ -25,7 +25,7 @@
<object class="GtkListStore" id="printer_list"> <object class="GtkListStore" id="printer_list">
<columns> <columns>
<!-- column-name icon --> <!-- column-name icon -->
<column type="gchararray"/> <column type="GIcon"/>
<!-- column-name name --> <!-- column-name name -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name state --> <!-- column-name state -->
@ -114,7 +114,7 @@
<child> <child>
<object class="GtkCellRendererPixbuf" id="printer_icon_renderer"/> <object class="GtkCellRendererPixbuf" id="printer_icon_renderer"/>
<attributes> <attributes>
<attribute name="icon-name">0</attribute> <attribute name="gicon">0</attribute>
</attributes> </attributes>
</child> </child>
</object> </object>