Skip to content
  • Marek Kašík's avatar
    printers: Update GtkListBox of printers consecutively · dfbe1fae
    Marek Kašík authored and Felipe Borges's avatar Felipe Borges committed
    Goal of this commit is to not overwhelm UI when a lot of printers is added
    to CUPS. You can reproduce this situation when you add e.g. 30 printers using
    lpadmin. Th UI stops to respond for some time.
    
    To do so, the printer entries are not deleted every time there is a request
    for updating of the list of printers but only new printer entries are added
    and printer entries of deleted printers are removed. Other printer
    entries are just updated by new method pp_printer_entry_update().
    Which, by the way, is almost whole taken from pp_printer_entry_new().
    
    This needed to add sort function for the list of printer entries. It sorts
    printers according to their names not taking case into account.
    
    In the similar manner, the filter function was extended to not show printers
    which are being deleted. This needs a list of names of deleted printers
    which we keep until they are really deleted.
    One important thing here is the "reference" object which points to the panel
    itself via its "self" key. We pass this object to the pp_printer_delete_async()'s
    callback so it knows whether it can remove the printer's name from the list
    of deleted printers (once the panel is being destroyed it clears the key itself).
    dfbe1fae