summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Borges <felipeborges@gnome.org>2017-02-24 10:57:47 +0100
committerFelipe Borges <felipeborges@gnome.org>2017-02-27 16:29:43 +0100
commit89ff6a610e45afacb7db621b2cf7a13a5f885763 (patch)
tree2cdc41b2dc3f85bbb8174d2ffe9e912938d3096d
parent5302047ff1bf3c2d9dffe27d101fa23f7d32d52f (diff)
downloadgnome-control-center-89ff6a610e45afacb7db621b2cf7a13a5f885763.tar.gz
printers: Store PpPrinterEntry instances for individual manipulation
We were actualizing the whole printers collection everytime something should change. These patch introduces a HashTable keyed by the unique printer.name, which allows us to access individual instances of PpPrinterEntry. https://bugzilla.gnome.org/show_bug.cgi?id=779079
-rw-r--r--panels/printers/cc-printers-panel.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c
index 7cc0ec3d6..515932191 100644
--- a/panels/printers/cc-printers-panel.c
+++ b/panels/printers/cc-printers-panel.c
@@ -99,6 +99,8 @@ struct _CcPrintersPanelPrivate
gchar *renamed_printer_name;
+ GHashTable *printer_entries;
+
gpointer dummy;
};
@@ -218,6 +220,8 @@ cc_printers_panel_dispose (GObject *object)
priv->get_all_ppds_cancellable = NULL;
}
+ g_clear_pointer (&priv->printer_entries, g_hash_table_destroy);
+
G_OBJECT_CLASS (cc_printers_panel_parent_class)->dispose (object);
}
@@ -594,6 +598,8 @@ add_printer_entry (CcPrintersPanel *self,
gtk_box_pack_start (GTK_BOX (content), GTK_WIDGET (printer_entry), FALSE, TRUE, 5);
gtk_widget_show_all (content);
+
+ g_hash_table_insert (priv->printer_entries, g_strdup (printer.name), printer_entry);
}
static void
@@ -938,6 +944,11 @@ cc_printers_panel_init (CcPrintersPanel *self)
priv->all_ppds_list = NULL;
+ priv->printer_entries = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ NULL);
+
builder_result = gtk_builder_add_objects_from_resource (priv->builder,
"/org/gnome/control-center/printers/printers.ui",
objects, &error);