Skip to content
  1. Apr 17, 2024
  2. Apr 14, 2024
  3. Apr 05, 2024
  4. Mar 31, 2024
  5. Mar 30, 2024
  6. Mar 26, 2024
  7. Mar 25, 2024
  8. Mar 22, 2024
  9. Mar 19, 2024
  10. Mar 17, 2024
  11. Mar 15, 2024
  12. Mar 14, 2024
  13. Mar 13, 2024
  14. Mar 10, 2024
  15. Mar 03, 2024
    • Zander Brown's avatar
      a11y: Fix the build · e31607ba
      Zander Brown authored
      Since `WITH_A11Y` is always defined, a `defined()` check leads to link
      errors when `WITH_A11Y == 0`.
      
      Likewise `GTK_ACCESSIBLE_ROLE_TERMINAL` was only introduced in 4.13.9,
      thus `WITH_A11Y == 1` can fail despite passing the configure check for
      4.13.
      
      See: gtk@64316ab1
      Fix: c8d7967f
      e31607ba
  16. Mar 02, 2024
  17. Feb 29, 2024
    • Christian Hergert's avatar
      a11y: implement GtkAccessibleText · c8d7967f
      Christian Hergert authored
      This is an initial implementaiton of GtkAccessibleText which was added
      to GTK for 4.14. It attempts to implement things in a very similar
      fashion to the previous code for GTK 3 although considerable effort was
      made to simplify and improve readability as to how it works.
      
      Currently, this supports reading back what you type and what has changed
      on screen. It is not yet 1:1 what the GTK 3 a11y implementation did
      because ATK was doing many other things (including proxying keyboard
      keys) to the other side of the a11y bus. That appears to improve
      readback by screen readers in the form of "backspace" and what character
      was deleted.
      
      I expect things to get closer to 1:1 but that work is going to have to
      be done inside of GTK itself first and should not require much if
      anything here.
      
      A new VteTerminal:enable-a11y feature flag property has been added
      because I'm concerned about enabling this by default until the a11y bus
      learns to be more lazy. Currently there is no way to "do nothing" until
      a peer (e.g. screenreader) is interested in the contents.
      
      Ideally, we would have a short-circuit like is currently implemented
      by checking vte_terminal_get_enable_a11y() to avoid any sort of
      contents calculation when there are no a11y observers.
      
      It also allows disabling the GTK 3 a11y implementation just to keep
      some symmetry between the APIs.
      
      Currently, this does not implement "text-scrolled" like the GTK 3
      implementation does as I'm not sure yet if there is a benefit.
      
      Fixes: #2753
      c8d7967f
  18. Feb 28, 2024
  19. Feb 27, 2024
    • Christian Hergert's avatar
      ringview: inline get_bidirow() · 9afff233
      Christian Hergert authored
      This is called frequently during Terminal::draw() and reduces overhead
      there on release builds a decent amount. I didn't quanitfy exactly without
      bidi patches applied, but it approaches double digits.
      9afff233
    • Christian Hergert's avatar
      bidi: inline log2vis() and vis2log() · 81888fed
      Christian Hergert authored
      These are called frequently during drawing. Inlining the fast path is
      extremely useful here to keep that overhead low.
      
      Hoist it into the caller for roughly a 4.5% reduction in drawing time
      using scrolling a large file in vim as the test case.
      81888fed
    • Christian Hergert's avatar
      terminal: inline hot path of cell_is_selected_log() · b6e8f8d1
      Christian Hergert authored
      This function appears to be called a lot, especially during high scrolling
      scenarios (such as ctrl+f/ctrl+b in vim). There is a typical fast path
      which is that ring is updated and there is no selection. Hoist that into
      the callers and leave the selection case behind a function call.
      
      This shaves about 1.5% of application samples off time spent in
      Terminal::draw().
      b6e8f8d1
    • Christian Hergert's avatar
      terminal: annotate unlikely paths in determine_colors() · cafd0e13
      Christian Hergert authored
      This gets called extremly often so ensuring that we keep the common path
      tight is important. This is good for about 2% of application samples
      in the case of scrolling with ctrl+f/ctrl+b in vim.
      cafd0e13
    • Christian Hergert's avatar
      terminal: remove determine_colors() invisible check · b748432e
      Christian Hergert authored
      This is called very frequently.
      
      The invisible check, which should be unnecessary, is about 2.8% of
      application samples in a tight scrolling loop with vim doing
      ctrl+f/ctrl+b.
      b748432e
  20. Feb 24, 2024
  21. Feb 23, 2024
  22. Feb 22, 2024
  23. Feb 21, 2024