• Allison Karlitskaya's avatar
    Introduce GtkMenuTracker · 5617b584
    Allison Karlitskaya authored
    GtkMenuTracker folds a nested structure of sections in a GMenuModel into
    a single linear menu, which it expresses to its user by means of 'insert
    item at position' and 'remove item at position' callbacks.
    
    The logic for where to insert separators and how to handle action
    namespaces is contained within the tracker, removing the need to have
    this logic duplicated in the 3 or 4 places that consume GMenuModel.
    
    In comparison with the previous code, the tracker no longer completely
    destroys and rebuilds menus every time a single change occurs.  As a
    result, the new gtkmenu testcase now runs in approximately 3 seconds
    instead of ~60 before.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=696468
    5617b584
gtkmodelmenuitem.h 1.91 KB