Skip to content

Rewrite backend with GObject / widget subclassing

Felix Häcker requested to merge wip/haecker-felix/gtk4-listview-gobject into main

This MR implements several new GObject based types. They're replacing the Rust messaging passing approach.

GTK Widgets

  • SoukPackageRow
    • package
  • SoukPackageTile
    • package

Transaction

  • SoukTransaction
    • package
    • action
    • state
  • SoukTransactionMode [enum]
  • SoukTransactionState
    • message
    • percentage
    • mode

Package

  • SoukPackage
    • kind
    • name
    • arch
    • branch
    • remote
    • remote_info
    • installed_info
    • transaction_action
    • transaction_state
  • SoukPackageAction [enum]
  • SoukPackageKind [enum]
  • SoukInstalledInfo
    • commit
    • installed_size
    • deploy_dir
  • SoukRemoteInfo
    • commit
    • installed_size
    • download_size

Flatpak Backend

  • SoukFlatpakBackend
    • installed_packages
    • new_transaction [signal]

There are still few open tasks, but I think it's better to implement them in a follow-up MR, since this MR would be get too big otherwise.

  • The search / listview perfomancy is poor. This needs benchmarking Fixed! (Of course there's always room for further improvements ^^)
  • There's a memory leak somewhere. Also probably in the search code. Fixed!
  • SoukFlatpakBackend::reload_installed_packages() takes a long time, and is the reason of the high startup times of Souk
Edited by Felix Häcker

Merge request reports