1. 25 Jun, 2022 1 commit
  2. 10 Jun, 2022 1 commit
  3. 08 Jun, 2022 1 commit
    • Gaël Bonithon's avatar
      garcon-gtk: Disconnect reload callback on finalize · 1ea47477
      Gaël Bonithon authored
      GarconMenu and GarconGtkMenu have separate life cycles. Therefore, there
      is no assurance that the GarconMenu is finalized when the GarconGtkMenu
      releases the reference to it upon its own finalization.
      
      Xfdesktop, for example, keeps the same GarconMenu throughout its
      lifecycle, while it creates a new GarconGtkMenu each time its context
      menu is shown.
      
      Fixes: #27
      Related: !18
      1ea47477
  4. 15 May, 2022 6 commits
  5. 13 May, 2022 1 commit
  6. 04 May, 2022 2 commits
    • Gaël Bonithon's avatar
      garcon-gtk: Load GarconMenu asynchronously · d2c7068e
      Gaël Bonithon authored
      This loading makes many disk accesses when reading the `.desktop` files,
      which can take several seconds for only a hundred entries, on machines
      equipped with mechanical disks and when these files have not yet been
      cached.
      
      This way, the loading is done as soon as possible in parallel, and we
      wait until it is finished if necessary during a request to show the
      menu. We can then start populating the GtkMenu synchronously, according
      to the process described in the previous commit message.
      
      Helps: #5, xfce4-panel#485
      Fixes: #3, xfce4-panel#184
      MR: !18
      d2c7068e
    • Gaël Bonithon's avatar
      garcon-gtk: Populate GtkMenus only when shown · d0703ac6
      Gaël Bonithon authored
      When the display of menu item icons is required, the creation of the
      entire application menu, typically, can take several tenths of a second
      or even more than a second on low performance machines. This change
      reduces the latency of the menu display, spreading the load over the
      display of its submenus and thus doing the rest of the work only if
      necessary.
      
      Some of the code in `garcon_gtk_menu_add()` needs to be duplicated to
      test for displayable items in a submenu without entering a recursive
      process. If a submenu has displayable items, it is added as a menu item,
      but is not populated until later, if its display is required.
      
      Unfortunately, for reasons internal to GTK, this process is not easily
      parallelized in a GTask like loading the GarconMenu in the next commit.
      This is why we have no choice but to delay the task by executing it only
      when necessary.
      
      Helps: #5, xfce4-panel#485
      MR: !18
      d0703ac6
  7. 25 Apr, 2022 2 commits
  8. 24 Apr, 2022 6 commits
  9. 11 Apr, 2022 1 commit
  10. 14 Mar, 2022 1 commit
  11. 11 Mar, 2022 1 commit
  12. 06 Mar, 2022 1 commit
  13. 04 Mar, 2022 2 commits
  14. 27 Feb, 2022 1 commit
  15. 19 Feb, 2022 1 commit
  16. 12 Feb, 2022 1 commit
  17. 11 Feb, 2022 1 commit
  18. 08 Feb, 2022 1 commit
  19. 07 Feb, 2022 2 commits
  20. 06 Feb, 2022 1 commit
  21. 04 Feb, 2022 3 commits
  22. 03 Feb, 2022 1 commit
  23. 02 Feb, 2022 1 commit
  24. 01 Feb, 2022 1 commit