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:
Marek Kasik 2011-04-13 18:14:13 +02:00
parent 9fe696c663
commit 75cfa6db4d

View file

@ -511,7 +511,30 @@ printer_selection_changed_cb (GtkTreeSelection *selection,
priv->current_dest = id;
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);
if (priv->current_dest >= 0 &&
@ -838,18 +861,6 @@ printer_selection_changed_cb (GtkTreeSelection *selection,
}
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
@ -975,8 +986,18 @@ actualize_printers_list (CcPrintersPanel *self)
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));
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)
{
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;
if (job_state == IPP_JOB_HELD)
{
widget = (GtkWidget*)
gtk_builder_get_object (priv->builder, "job-release-button");
gtk_widget_set_sensitive (widget, TRUE);
}
gtk_widget_set_sensitive (widget, job_state == IPP_JOB_HELD);
if (job_state == IPP_JOB_PENDING)
{
widget = (GtkWidget*)
gtk_builder_get_object (priv->builder, "job-hold-button");
gtk_widget_set_sensitive (widget, TRUE);
}
gtk_widget_set_sensitive (widget, job_state == IPP_JOB_PENDING);
if (job_state < IPP_JOB_CANCELED)
{
widget = (GtkWidget*)
gtk_builder_get_object (priv->builder, "job-cancel-button");
gtk_widget_set_sensitive (widget, TRUE);
}
gtk_widget_set_sensitive (widget, job_state < IPP_JOB_CANCELED);
}
}