1. 17 Sep, 2022 1 commit
    • Gaël Bonithon's avatar
      garcon: Escape '%' when building command from URL desktop files · f33c23d2
      Gaël Bonithon authored
      Since Garcon reduces the case of URL desktop files to the case of a
      classic file with an Exec key of value `exo-open 'URL'`, and there is no
      reliable way to distinguish the two cases from the outside when invoking
      `garcon_menu_item_get_command()`, Garcon must escape the '%' characters
      in the URL as if they appeared in the value of an Exec key.
      
      Fixes: #31
      f33c23d2
  2. 10 Sep, 2022 1 commit
  3. 05 Sep, 2022 9 commits
  4. 16 Jul, 2022 1 commit
  5. 11 Jul, 2022 3 commits
  6. 25 Jun, 2022 1 commit
  7. 10 Jun, 2022 1 commit
  8. 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
  9. 15 May, 2022 6 commits
  10. 13 May, 2022 1 commit
  11. 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
  12. 25 Apr, 2022 2 commits
  13. 24 Apr, 2022 6 commits
  14. 11 Apr, 2022 1 commit
  15. 14 Mar, 2022 1 commit
  16. 11 Mar, 2022 1 commit
  17. 06 Mar, 2022 1 commit
  18. 04 Mar, 2022 1 commit