choose-tree: Reset top when toggling items

When choose-tree is told to expand/collapse items (especially when first
rendering collapsed to just show sessions), ensure that in addition to
setting the selected item, that the item itself appears on the bottom of the
screen, rather than off screen.

This was causing rendering glitches when a very small tmux window tried to
render a list of items in choose-tree much larger than itself, and the
selected item appeared off screen, and didn't show the selection until the
selection had wrapped around to the top of the screen.
2 files changed
tree: 389503aa617fc5aa8030dfd20114b3d849e07c77
  1. .gitignore
  2. .mailmap
  3. CHANGES
  4. COPYING
  5. FAQ
  6. Makefile.am
  7. README
  8. SYNCING
  9. TODO
  10. arguments.c
  11. array.h
  12. attributes.c
  13. autogen.sh
  14. cfg.c
  15. client.c
  16. clock.c
  17. cmd-attach-session.c
  18. cmd-bind-key.c
  19. cmd-break-pane.c
  20. cmd-capture-pane.c
  21. cmd-choose-buffer.c
  22. cmd-choose-client.c
  23. cmd-choose-list.c
  24. cmd-choose-tree.c
  25. cmd-clear-history.c
  26. cmd-clock-mode.c
  27. cmd-command-prompt.c
  28. cmd-confirm-before.c
  29. cmd-copy-mode.c
  30. cmd-delete-buffer.c
  31. cmd-detach-client.c
  32. cmd-display-message.c
  33. cmd-display-panes.c
  34. cmd-find-window.c
  35. cmd-has-session.c
  36. cmd-if-shell.c
  37. cmd-join-pane.c
  38. cmd-kill-pane.c
  39. cmd-kill-server.c
  40. cmd-kill-session.c
  41. cmd-kill-window.c
  42. cmd-link-window.c
  43. cmd-list-buffers.c
  44. cmd-list-clients.c
  45. cmd-list-commands.c
  46. cmd-list-keys.c
  47. cmd-list-panes.c
  48. cmd-list-sessions.c
  49. cmd-list-windows.c
  50. cmd-list.c
  51. cmd-load-buffer.c
  52. cmd-lock-server.c
  53. cmd-move-window.c
  54. cmd-new-session.c
  55. cmd-new-window.c
  56. cmd-paste-buffer.c
  57. cmd-pipe-pane.c
  58. cmd-queue.c
  59. cmd-refresh-client.c
  60. cmd-rename-session.c
  61. cmd-rename-window.c
  62. cmd-resize-pane.c
  63. cmd-respawn-pane.c
  64. cmd-respawn-window.c
  65. cmd-rotate-window.c
  66. cmd-run-shell.c
  67. cmd-save-buffer.c
  68. cmd-select-layout.c
  69. cmd-select-pane.c
  70. cmd-select-window.c
  71. cmd-send-keys.c
  72. cmd-server-info.c
  73. cmd-set-buffer.c
  74. cmd-set-environment.c
  75. cmd-set-option.c
  76. cmd-show-environment.c
  77. cmd-show-messages.c
  78. cmd-show-options.c
  79. cmd-source-file.c
  80. cmd-split-window.c
  81. cmd-start-server.c
  82. cmd-string.c
  83. cmd-suspend-client.c
  84. cmd-swap-pane.c
  85. cmd-swap-window.c
  86. cmd-switch-client.c
  87. cmd-unbind-key.c
  88. cmd-unlink-window.c
  89. cmd-wait-for.c
  90. cmd.c
  91. colour.c
  92. compat.h
  93. compat/
  94. configure.ac
  95. control-notify.c
  96. control.c
  97. environ.c
  98. examples/
  99. format.c
  100. grid-cell.c
  101. grid-view.c
  102. grid.c
  103. input-keys.c
  104. input.c
  105. job.c
  106. key-bindings.c
  107. key-string.c
  108. layout-custom.c
  109. layout-set.c
  110. layout.c
  111. log.c
  112. mdoc2man.awk
  113. mode-key.c
  114. names.c
  115. notify.c
  116. options-table.c
  117. options.c
  118. osdep-aix.c
  119. osdep-darwin.c
  120. osdep-dragonfly.c
  121. osdep-freebsd.c
  122. osdep-hpux.c
  123. osdep-linux.c
  124. osdep-netbsd.c
  125. osdep-openbsd.c
  126. osdep-sunos.c
  127. osdep-unknown.c
  128. paste.c
  129. resize.c
  130. screen-redraw.c
  131. screen-write.c
  132. screen.c
  133. server-client.c
  134. server-fn.c
  135. server-window.c
  136. server.c
  137. session.c
  138. signal.c
  139. status.c
  140. tmux.1
  141. tmux.c
  142. tmux.h
  143. tools/
  144. tty-acs.c
  145. tty-keys.c
  146. tty-term.c
  147. tty.c
  148. utf8.c
  149. window-choose.c
  150. window-clock.c
  151. window-copy.c
  152. window.c
  153. www/
  154. xmalloc.c
  155. xterm-keys.c