printers: Select the last used printer when Printers panel starts
This commit is contained in:
parent
9d61205ef9
commit
21c715edd3
1 changed files with 47 additions and 8 deletions
|
@ -378,6 +378,8 @@ actualize_printers_list (CcPrintersPanel *self)
|
||||||
current_printer_instance = g_strdup (priv->dests[priv->current_dest].instance);
|
current_printer_instance = g_strdup (priv->dests[priv->current_dest].instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (priv->num_jobs > 0)
|
||||||
|
cupsFreeJobs (priv->num_jobs, priv->jobs);
|
||||||
priv->num_dests = cupsGetDests (&priv->dests);
|
priv->num_dests = cupsGetDests (&priv->dests);
|
||||||
priv->current_dest = -1;
|
priv->current_dest = -1;
|
||||||
|
|
||||||
|
@ -444,11 +446,48 @@ actualize_printers_list (CcPrintersPanel *self)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (priv->num_dests > 0 &&
|
cups_job_t *jobs = NULL;
|
||||||
gtk_tree_model_get_iter_first ((GtkTreeModel *) store,
|
int num_jobs = 0;
|
||||||
&selected_iter))
|
|
||||||
|
num_jobs = cupsGetJobs (&jobs, NULL, 1, CUPS_WHICHJOBS_ALL);
|
||||||
|
|
||||||
|
/* Select last used printer */
|
||||||
|
if (num_jobs > 0)
|
||||||
|
{
|
||||||
|
for (i = 0; i < priv->num_dests; i++)
|
||||||
|
if (g_strcmp0 (priv->dests[i].name, jobs[num_jobs - 1].dest) == 0)
|
||||||
|
{
|
||||||
|
priv->current_dest = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cupsFreeJobs (num_jobs, jobs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Select default printer */
|
||||||
|
if (priv->current_dest < 0)
|
||||||
|
{
|
||||||
|
for (i = 0; i < priv->num_dests; i++)
|
||||||
|
if (priv->dests[i].is_default)
|
||||||
|
{
|
||||||
|
priv->current_dest = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Select first printer */
|
||||||
|
if (priv->current_dest < 0 && priv->num_dests > 0)
|
||||||
{
|
{
|
||||||
priv->current_dest = 0;
|
priv->current_dest = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (priv->current_dest >= 0)
|
||||||
|
{
|
||||||
|
GtkTreePath *path = gtk_tree_path_new_from_indices (priv->current_dest, -1);
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter ((GtkTreeModel *) store,
|
||||||
|
&selected_iter,
|
||||||
|
path);
|
||||||
|
|
||||||
gtk_tree_selection_select_iter (
|
gtk_tree_selection_select_iter (
|
||||||
gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
|
gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
|
||||||
&selected_iter);
|
&selected_iter);
|
||||||
|
@ -533,16 +572,16 @@ actualize_jobs_list (CcPrintersPanel *self)
|
||||||
treeview = (GtkTreeView*)
|
treeview = (GtkTreeView*)
|
||||||
gtk_builder_get_object (priv->builder, "job-treeview");
|
gtk_builder_get_object (priv->builder, "job-treeview");
|
||||||
|
|
||||||
|
if (priv->num_jobs > 0)
|
||||||
|
cupsFreeJobs (priv->num_jobs, priv->jobs);
|
||||||
|
priv->num_jobs = -1;
|
||||||
|
priv->jobs = NULL;
|
||||||
|
|
||||||
priv->current_job = -1;
|
priv->current_job = -1;
|
||||||
if (priv->current_dest >= 0 &&
|
if (priv->current_dest >= 0 &&
|
||||||
priv->current_dest < priv->num_dests &&
|
priv->current_dest < priv->num_dests &&
|
||||||
priv->dests != NULL)
|
priv->dests != NULL)
|
||||||
priv->num_jobs = cupsGetJobs (&priv->jobs, priv->dests[priv->current_dest].name, 1, CUPS_WHICHJOBS_ACTIVE);
|
priv->num_jobs = cupsGetJobs (&priv->jobs, priv->dests[priv->current_dest].name, 1, CUPS_WHICHJOBS_ACTIVE);
|
||||||
else
|
|
||||||
{
|
|
||||||
priv->num_jobs = -1;
|
|
||||||
priv->jobs = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
store = gtk_list_store_new (JOB_N_COLUMNS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
store = gtk_list_store_new (JOB_N_COLUMNS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue