printers: Cache pointer to devices-treeview

Store device-treeview in PpNewPrinterDialogPrivate so we
don't need to search for it each time we need it.

https://bugzilla.gnome.org/show_bug.cgi?id=749830
This commit is contained in:
Marek Kasik 2015-07-17 11:32:57 +02:00
parent c26553ed3e
commit 68e92988a8

View file

@ -87,6 +87,8 @@ struct _PpNewPrinterDialogPrivate
GList *devices; GList *devices;
GList *local_cups_devices; GList *local_cups_devices;
GtkTreeView *treeview;
cups_dest_t *dests; cups_dest_t *dests;
gint num_of_dests; gint num_of_dests;
@ -329,15 +331,10 @@ authenticate_samba_server (GtkButton *button,
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
AuthSMBData *data; AuthSMBData *data;
GtkWidget *treeview;
PpSamba *samba_host; PpSamba *samba_host;
gchar *server_name = NULL; gchar *server_name = NULL;
treeview = WID ("devices-treeview"); if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (priv->treeview), &model, &iter))
if (treeview &&
gtk_tree_selection_get_selected (
gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)), &model, &iter))
{ {
gtk_tree_model_get (model, &iter, gtk_tree_model_get (model, &iter,
DEVICE_NAME_COLUMN, &server_name, DEVICE_NAME_COLUMN, &server_name,
@ -395,6 +392,8 @@ pp_new_printer_dialog_init (PpNewPrinterDialog *dialog)
/* Construct dialog */ /* Construct dialog */
priv->dialog = WID ("dialog"); priv->dialog = WID ("dialog");
priv->treeview = GTK_TREE_VIEW (WID ("devices-treeview"));
/* Connect signals */ /* Connect signals */
g_signal_connect (priv->dialog, "response", G_CALLBACK (new_printer_dialog_response_cb), dialog); g_signal_connect (priv->dialog, "response", G_CALLBACK (new_printer_dialog_response_cb), dialog);
@ -478,17 +477,12 @@ device_selection_changed_cb (GtkTreeSelection *selection,
PpNewPrinterDialogPrivate *priv = dialog->priv; PpNewPrinterDialogPrivate *priv = dialog->priv;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget *treeview = NULL;
GtkWidget *widget; GtkWidget *widget;
GtkWidget *notebook; GtkWidget *notebook;
gboolean authentication_needed; gboolean authentication_needed;
gboolean selected; gboolean selected;
treeview = WID ("devices-treeview"); selected = gtk_tree_selection_get_selected (gtk_tree_view_get_selection (priv->treeview),
if (treeview)
{
selected = gtk_tree_selection_get_selected (
gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
&model, &model,
&iter); &iter);
@ -511,7 +505,6 @@ device_selection_changed_cb (GtkTreeSelection *selection,
else else
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0); gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
} }
}
} }
static void static void
@ -1585,15 +1578,12 @@ actualize_devices_list (PpNewPrinterDialog *dialog)
GtkTreeSelection *selection; GtkTreeSelection *selection;
PpPrintDevice *device; PpPrintDevice *device;
GtkListStore *store; GtkListStore *store;
GtkTreeView *treeview;
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget *widget; GtkWidget *widget;
gboolean no_device = TRUE; gboolean no_device = TRUE;
GList *item; GList *item;
gchar *description; gchar *description;
treeview = GTK_TREE_VIEW (WID ("devices-treeview"));
store = GTK_LIST_STORE (gtk_builder_get_object (priv->builder, "devices-liststore")); store = GTK_LIST_STORE (gtk_builder_get_object (priv->builder, "devices-liststore"));
gtk_list_store_clear (store); gtk_list_store_clear (store);
@ -1673,7 +1663,7 @@ actualize_devices_list (PpNewPrinterDialog *dialog)
if (!no_device && if (!no_device &&
gtk_tree_model_get_iter_first ((GtkTreeModel *) store, &iter) && gtk_tree_model_get_iter_first ((GtkTreeModel *) store, &iter) &&
(selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview))) != NULL) (selection = gtk_tree_view_get_selection (priv->treeview)) != NULL)
gtk_tree_selection_select_iter (selection, &iter); gtk_tree_selection_select_iter (selection, &iter);
update_spinner_state (dialog); update_spinner_state (dialog);
@ -1740,17 +1730,12 @@ cell_data_func (GtkTreeViewColumn *tree_column,
{ {
PpNewPrinterDialog *dialog = (PpNewPrinterDialog *) user_data; PpNewPrinterDialog *dialog = (PpNewPrinterDialog *) user_data;
PpNewPrinterDialogPrivate *priv = dialog->priv; PpNewPrinterDialogPrivate *priv = dialog->priv;
GtkWidget *treeview;
gboolean selected = FALSE; gboolean selected = FALSE;
gchar *name = NULL; gchar *name = NULL;
gchar *description = NULL; gchar *description = NULL;
gchar *text; gchar *text;
treeview = WID ("devices-treeview"); selected = gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (priv->treeview), iter);
if (treeview != NULL)
selected = gtk_tree_selection_iter_is_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
iter);
gtk_tree_model_get (tree_model, iter, gtk_tree_model_get (tree_model, iter,
DEVICE_DISPLAY_NAME_COLUMN, &name, DEVICE_DISPLAY_NAME_COLUMN, &name,
@ -1792,18 +1777,15 @@ populate_devices_list (PpNewPrinterDialog *dialog)
{ {
PpNewPrinterDialogPrivate *priv = dialog->priv; PpNewPrinterDialogPrivate *priv = dialog->priv;
GtkTreeViewColumn *column; GtkTreeViewColumn *column;
GtkWidget *treeview;
PpSamba *samba; PpSamba *samba;
GEmblem *emblem; GEmblem *emblem;
PpCups *cups; PpCups *cups;
GIcon *icon, *emblem_icon; GIcon *icon, *emblem_icon;
treeview = WID ("devices-treeview"); g_signal_connect (gtk_tree_view_get_selection (priv->treeview),
g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
"changed", G_CALLBACK (device_selection_changed_cb), dialog); "changed", G_CALLBACK (device_selection_changed_cb), dialog);
g_signal_connect (treeview, g_signal_connect (priv->treeview,
"row-activated", G_CALLBACK (row_activated_cb), dialog); "row-activated", G_CALLBACK (row_activated_cb), dialog);
priv->local_printer_icon = g_themed_icon_new ("printer"); priv->local_printer_icon = g_themed_icon_new ("printer");
@ -1827,7 +1809,7 @@ populate_devices_list (PpNewPrinterDialog *dialog)
"gicon", DEVICE_GICON_COLUMN, NULL); "gicon", DEVICE_GICON_COLUMN, NULL);
gtk_tree_view_column_set_max_width (column, -1); gtk_tree_view_column_set_max_width (column, -1);
gtk_tree_view_column_set_min_width (column, 80); gtk_tree_view_column_set_min_width (column, 80);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_append_column (priv->treeview, column);
priv->text_renderer = gtk_cell_renderer_text_new (); priv->text_renderer = gtk_cell_renderer_text_new ();
@ -1835,7 +1817,7 @@ populate_devices_list (PpNewPrinterDialog *dialog)
NULL); NULL);
gtk_tree_view_column_set_cell_data_func (column, priv->text_renderer, cell_data_func, gtk_tree_view_column_set_cell_data_func (column, priv->text_renderer, cell_data_func,
dialog, NULL); dialog, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); gtk_tree_view_append_column (priv->treeview, column);
cups = pp_cups_new (); cups = pp_cups_new ();
pp_cups_get_dests_async (cups, priv->cancellable, cups_get_dests_cb, dialog); pp_cups_get_dests_async (cups, priv->cancellable, cups_get_dests_cb, dialog);
@ -1977,7 +1959,6 @@ new_printer_dialog_response_cb (GtkDialog *_dialog,
PpPrintDevice *tmp; PpPrintDevice *tmp;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget *treeview;
GList *list_iter; GList *list_iter;
gchar *device_name = NULL; gchar *device_name = NULL;
@ -1988,10 +1969,7 @@ new_printer_dialog_response_cb (GtkDialog *_dialog,
g_cancellable_cancel (priv->cancellable); g_cancellable_cancel (priv->cancellable);
g_clear_object (&priv->cancellable); g_clear_object (&priv->cancellable);
treeview = WID ("devices-treeview"); if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (priv->treeview), &model, &iter))
if (treeview &&
gtk_tree_selection_get_selected (
gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)), &model, &iter))
{ {
gtk_tree_model_get (model, &iter, gtk_tree_model_get (model, &iter,
DEVICE_NAME_COLUMN, &device_name, DEVICE_NAME_COLUMN, &device_name,