ZIm/crates
Andrew Lygin 9d9bce08a7
Fix scroll thumb (#10667)
Editor scrollbar has several issues that show up on large files:

- The thumb scrolls beyond the window.
- When dragged, the thumb goes out of sync with the mouse pointer.
- When the scrollbar trunk is clicked, the thumb jumps incorrectly.


https://github.com/zed-industries/zed/assets/2101250/320dba59-a526-4e68-99b3-1186271ba839

The reason is that the scrollbar now has two modes:
1. The "basic mode" for small files, when the thumb height correctly
represents the visible area, i.e. the top of the thumb matches the top
visible row (let's call it top-to-top sync), and the bottom of the thumb
matches the bottom visible row.
2. The "extended mode" for large files, when thumb becomes too small and
we have to impose minimal height to it. In this mode we have a vertical
offset of the first row position inside the scrollbar, we try to
position the thumb center-to-center with the editor.

...and the second mode is not implemented correctly. Also, mouse event
handlers ignore it. It is possible to fix this implementation, but I'm
not sure if it worth doing because it a) leads to some confusing cases
(for instance, in the extended mode the first row marker is not at the
top of the scrollbar), and b) differs from what all other editors do.

Here's a previous mentioning of this problem:
https://github.com/zed-industries/zed/pull/9080#pullrequestreview-1927465293

This PR changes the "extended mode", making it synchronize the thumb
top-to-top with the editor. It solves all the mentioned problems and
makes the scroll thumb work the same whay as in other editors.

But if you want to stick to the idea of the center-to-center sync for
large files, I can do that too.

Release Notes:

- Fixed scroll thumb behaviour.

Optionally, include screenshots / media showcasing your addition that
can be included in the release notes.

- N/A
2024-04-19 23:18:37 +03:00
..
activity_indicator Add auto-update system for extensions (#9890) 2024-03-28 15:41:22 -04:00
anthropic Move lints section to the top of Cargo.toml, to match the others 2024-04-18 15:53:48 -04:00
assets Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
assistant Handle no active editor available (#10503) 2024-04-15 16:53:08 -07:00
audio Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
auto_update Refactor workspace notifications to use explicit NotificationId type (#10342) 2024-04-10 17:21:23 -04:00
breadcrumbs Use buffer font when rendering editor breadcrumbs and diagnostics (#10488) 2024-04-12 12:29:00 -07:00
call WIP: remoting (#10085) 2024-04-11 15:36:35 -06:00
channel Semantic Index (#10329) 2024-04-12 11:40:59 -06:00
cli Windows: Enable clippy deny warnings (#9920) 2024-03-28 11:55:35 -04:00
client Clear credentials state and delete keychain on SignOut request (#10558) 2024-04-16 19:57:38 -06:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
collab_ui markdown preview: Update channel notes when other collaborator changes buffer (#10718) 2024-04-18 14:26:32 +02:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette Encapsulate CommandPaletteFilter and CommandPaletteInterceptor (#9402) 2024-03-15 12:37:25 -04:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Revert "Revert "language: Remove buffer fingerprinting (#9007)"" (#9671) 2024-04-12 18:40:35 +02:00
copilot_ui Refactor workspace notifications to use explicit NotificationId type (#10342) 2024-04-10 17:21:23 -04:00
db Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
diagnostics Increase the context in other multibuffers (#10582) 2024-04-15 14:44:14 -07:00
editor Fix scroll thumb (#10667) 2024-04-19 23:18:37 +03:00
extension Extract Vue extension (#10486) 2024-04-12 14:39:27 -04:00
extension_api Improve extension API documentation (#10322) 2024-04-09 10:38:29 -04:00
extension_cli Add git blame (#8889) 2024-03-28 18:32:11 +01:00
extensions_ui Disable extension entries when the corresponding dev extension is installed (#10580) 2024-04-15 16:27:54 -04:00
feature_flags WIP: remoting (#10085) 2024-04-11 15:36:35 -06:00
feedback Refactor workspace notifications to use explicit NotificationId type (#10342) 2024-04-10 17:21:23 -04:00
file_finder Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
file_icons tasks: Use icons instead of secondary text in a modal (#10264) 2024-04-08 11:41:54 +02:00
fs fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
fsevent Add rs-notify implementation of fs::watch (#9040) 2024-03-08 22:18:44 -08:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Add pull requests to git blame tooltip (#10784) 2024-04-19 18:54:20 +02:00
go_to_line Line numbers short mode (#10354) 2024-04-10 12:08:07 +02:00
google_ai Fix licensing errors 2024-03-20 15:52:02 +01:00
gpui Fix stutter while dragging something over an element that stops event propagation (#10737) 2024-04-19 13:29:13 +02:00
gpui_macros gpui-macros: Hide autogenerated action types/functions (#10417) 2024-04-11 15:38:47 +02:00
headless WIP: remoting (#10085) 2024-04-11 15:36:35 -06:00
image_viewer Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
language Always provide default task context (#10764) 2024-04-19 10:51:50 +03:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
languages Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
live_kit_client Add a schema to extensions, to prevent installing extensions on too old of a Zed version (#9599) 2024-03-20 17:33:26 -04:00
live_kit_server Merge prost dependecies (#9522) 2024-03-18 20:33:20 -06:00
lsp lsp: Do not set error/result fields if they're missing. (#10610) 2024-04-16 14:27:12 +02:00
markdown_preview Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
media Revert "Revert "Revert dependency updates in #9836 (#10089)"" 2024-04-02 13:12:38 -06:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer vim: Don’t allow edits in the read-only state (#10404) 2024-04-11 18:19:49 -06:00
node_runtime Allow extensions to define more of the methods in the LspAdapter trait (#9554) 2024-03-20 12:47:04 -07:00
notifications Fix mention notifications are not updated after message change and not removed after a message is deleted (#9847) 2024-04-02 20:40:00 -06:00
open_ai Semantic Index (#10329) 2024-04-12 11:40:59 -06:00
outline Restore --all-targets for clippy (#9346) 2024-03-14 12:39:45 -04:00
picker tab_switcher: Add tab close buttons (#9968) 2024-04-03 17:28:51 +02:00
prettier Fix prettier-plugin-organize-imports plugin removes used imports (#9598) 2024-03-21 08:23:15 +01:00
project Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
project_panel fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Do not show tooltip for editor controls if clicked (#10679) 2024-04-17 13:20:47 +02:00
recent_projects Remove if-not-else patterns (#10402) 2024-04-11 03:48:06 -04:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
rich_text chat panel: Add timestamp in tooltip to edited message (#10444) 2024-04-12 14:26:41 +02:00
rope Revert "Revert "language: Remove buffer fingerprinting (#9007)"" (#9671) 2024-04-12 18:40:35 +02:00
rpc git blame: Parse permalinks client side (#10714) 2024-04-18 12:36:22 +02:00
search Select buffer search query on follow-up cmd-f (#10745) 2024-04-19 01:43:33 +03:00
semantic_index Move lints section to the top of Cargo.toml, to match the others 2024-04-18 15:53:48 -04:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
settings Remove if-not-else patterns (#10402) 2024-04-11 03:48:06 -04:00
snippet Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez Remove if-not-else patterns (#10402) 2024-04-11 03:48:06 -04:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Enable clippy::eq_op (#9369) 2024-03-14 17:05:07 -04:00
storybook windows: Support compiling with MinGW toolchain (part 2) (#9843) 2024-03-28 10:40:07 -07:00
sum_tree Fuse iterator supplied to SumTree::from_iter (#10571) 2024-04-15 20:09:43 +02:00
tab_switcher Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
task Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
tasks_ui Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
telemetry_events Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
terminal Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
terminal_view Properly pass nested script arguments for tasks (#10776) 2024-04-19 16:24:35 +03:00
text Improve the ergonomics of creating local buffers (#10347) 2024-04-10 08:32:51 -06:00
theme Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
theme_importer themes: Add pane_group.border color (#9986) 2024-04-01 12:07:26 -04:00
theme_selector Add support for applying theme after extension is installed (#9529) 2024-03-20 11:13:58 -04:00
time_format Inline git blame (#10398) 2024-04-15 14:21:52 +02:00
ui Add pull requests to git blame tooltip (#10784) 2024-04-19 18:54:20 +02:00
ui_text_field Update TextField (#10415) 2024-04-11 10:03:36 -04:00
util git blame: Display GitHub avatars in blame tooltips, if available (#10767) 2024-04-19 15:15:19 +02:00
vcs_menu fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
vim More vim-like regexes (#10577) 2024-04-15 14:26:05 -06:00
welcome Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
workspace Add "Open in Terminal" context menu entries for project panel, editor and tab context menus (#10741) 2024-04-19 01:43:46 +03:00
worktree fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
zed v0.133.x dev 2024-04-17 13:05:26 -04:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00