diff options
author | Felipe Borges <felipeborges@gnome.org> | 2017-02-24 10:57:47 +0100 |
---|---|---|
committer | Felipe Borges <felipeborges@gnome.org> | 2017-02-27 16:29:43 +0100 |
commit | 89ff6a610e45afacb7db621b2cf7a13a5f885763 (patch) | |
tree | 2cdc41b2dc3f85bbb8174d2ffe9e912938d3096d | |
parent | 5302047ff1bf3c2d9dffe27d101fa23f7d32d52f (diff) | |
download | gnome-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.c | 11 |
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); |