printers: Block callback of printer selection when setting treemodel
Don't trigger callback of printer selection when setting treemodel of printers list. Don't actualize jobs list when printer hasn't changed.
This commit is contained in:
parent
9fe696c663
commit
75cfa6db4d
1 changed files with 43 additions and 31 deletions
|
@ -511,7 +511,30 @@ printer_selection_changed_cb (GtkTreeSelection *selection,
|
||||||
|
|
||||||
priv->current_dest = id;
|
priv->current_dest = id;
|
||||||
|
|
||||||
actualize_jobs_list (self);
|
if (!(priv->current_dest >= 0 &&
|
||||||
|
priv->current_dest < priv->num_dests &&
|
||||||
|
priv->dests != NULL &&
|
||||||
|
priv->current_job >= 0 &&
|
||||||
|
priv->current_job < priv->num_jobs &&
|
||||||
|
priv->jobs != NULL &&
|
||||||
|
g_strcmp0 (priv->dests[priv->current_dest].name,
|
||||||
|
priv->jobs[priv->current_job].dest) == 0))
|
||||||
|
{
|
||||||
|
actualize_jobs_list (self);
|
||||||
|
|
||||||
|
widget = (GtkWidget*)
|
||||||
|
gtk_builder_get_object (priv->builder, "job-release-button");
|
||||||
|
gtk_widget_set_sensitive (widget, FALSE);
|
||||||
|
|
||||||
|
widget = (GtkWidget*)
|
||||||
|
gtk_builder_get_object (priv->builder, "job-hold-button");
|
||||||
|
gtk_widget_set_sensitive (widget, FALSE);
|
||||||
|
|
||||||
|
widget = (GtkWidget*)
|
||||||
|
gtk_builder_get_object (priv->builder, "job-cancel-button");
|
||||||
|
gtk_widget_set_sensitive (widget, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
actualize_allowed_users_list (self);
|
actualize_allowed_users_list (self);
|
||||||
|
|
||||||
if (priv->current_dest >= 0 &&
|
if (priv->current_dest >= 0 &&
|
||||||
|
@ -838,18 +861,6 @@ printer_selection_changed_cb (GtkTreeSelection *selection,
|
||||||
}
|
}
|
||||||
|
|
||||||
actualize_sensitivity (self);
|
actualize_sensitivity (self);
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "job-release-button");
|
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "job-hold-button");
|
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "job-cancel-button");
|
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -975,8 +986,18 @@ actualize_printers_list (CcPrintersPanel *self)
|
||||||
g_free (default_icon_name);
|
g_free (default_icon_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_signal_handlers_block_by_func (
|
||||||
|
G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview))),
|
||||||
|
printer_selection_changed_cb,
|
||||||
|
self);
|
||||||
|
|
||||||
gtk_tree_view_set_model (treeview, GTK_TREE_MODEL (store));
|
gtk_tree_view_set_model (treeview, GTK_TREE_MODEL (store));
|
||||||
|
|
||||||
|
g_signal_handlers_unblock_by_func (
|
||||||
|
G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview))),
|
||||||
|
printer_selection_changed_cb,
|
||||||
|
self);
|
||||||
|
|
||||||
if (current_dest >= 0)
|
if (current_dest >= 0)
|
||||||
{
|
{
|
||||||
priv->current_dest = current_dest;
|
priv->current_dest = current_dest;
|
||||||
|
@ -1292,26 +1313,17 @@ job_selection_changed_cb (GtkTreeSelection *selection,
|
||||||
{
|
{
|
||||||
ipp_jstate_t job_state = priv->jobs[priv->current_job].state;
|
ipp_jstate_t job_state = priv->jobs[priv->current_job].state;
|
||||||
|
|
||||||
if (job_state == IPP_JOB_HELD)
|
widget = (GtkWidget*)
|
||||||
{
|
gtk_builder_get_object (priv->builder, "job-release-button");
|
||||||
widget = (GtkWidget*)
|
gtk_widget_set_sensitive (widget, job_state == IPP_JOB_HELD);
|
||||||
gtk_builder_get_object (priv->builder, "job-release-button");
|
|
||||||
gtk_widget_set_sensitive (widget, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (job_state == IPP_JOB_PENDING)
|
widget = (GtkWidget*)
|
||||||
{
|
gtk_builder_get_object (priv->builder, "job-hold-button");
|
||||||
widget = (GtkWidget*)
|
gtk_widget_set_sensitive (widget, job_state == IPP_JOB_PENDING);
|
||||||
gtk_builder_get_object (priv->builder, "job-hold-button");
|
|
||||||
gtk_widget_set_sensitive (widget, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (job_state < IPP_JOB_CANCELED)
|
widget = (GtkWidget*)
|
||||||
{
|
gtk_builder_get_object (priv->builder, "job-cancel-button");
|
||||||
widget = (GtkWidget*)
|
gtk_widget_set_sensitive (widget, job_state < IPP_JOB_CANCELED);
|
||||||
gtk_builder_get_object (priv->builder, "job-cancel-button");
|
|
||||||
gtk_widget_set_sensitive (widget, TRUE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue