mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-25 19:31:38 +03:00
2f892e3523
This introduces multiple improvements to the drop targets. ## Hitbox shape Currently, hitboxes are rectangles, where the vertical ones reach all the way to the ends, which reduces the space for the horizontal ones, making the hitboxes a bit awkward in the corners. This new approach just determines the closest side. Visual representation: ![Frame 3](https://github.com/zed-industries/zed/assets/1282767/1cd2ca31-d9d4-41dd-87fb-1a8fbb8b7fcc) ## Hitbox size The width of the hitbox was currently always 8 rem all around. In setups with many columns or rows, or when the font size was very large, this could potentially overlap the center hitbox, not allowing to drop a tab without another split. Now the width of the hitboxes are a fraction of the smaller size of its parents width and height. This makes sure the hitboxes have the same width all around, but never fully block the center hitbox. I've also made this value configurable through the new `drop_target_size` config which takes a `f32` fraction and is set to 0.2 by default. Not sure if this is worth mentioning, but this technically allows to remove the split hitboxes all together by setting it to `0.0`, or removing the center hitbox by setting it to any value `>=0.5`. Not that this is necessary, but it would be possible now. ## Larger visualization The visual overlay when using one of the side hitboxes were also `8em` wide. Since their logical size now changed, and it can't currently be represented with GPUI (without abusing the `canvas` element), I made the visual feedback take half of the width or height of the available space, just like how other editors do this. Also, the opacity/alpha value set by a theme is currently ignored. This change now respects the themes opacity for it! ## Respect alpha value Currently, the alpha value of `drop_target.background` is ignored. Even the default themes set a value that is overwritten by a hard coded value. I have removed this hard coded value and it now respects the alpha value. This change affects existing themes, see https://github.com/zed-industries/zed/pull/10643#issuecomment-2059641528 ## ~~No more lag while dragging over gutter~~ Extracted into #10737 ~~It looks like the editor had a small optimization to drop events when hovering the gutter. This also happens while dragging a tab over the gutter, and causes some stuttering. Please correct me if this wasn't just a small optimization, but I could not derive a different reason for this code to exist.~~ Here is a video that tries to show all those changes with a before on the left, and the after on the right: https://github.com/zed-industries/zed/assets/1282767/f97f3420-513f-410f-a1c8-7966429ad348 Release Notes: - Added `drop_target_size` setting. This should be a fractional percent (e.g., `0.5`). - Improved the hitboxes for drop targets. - Updated drop targets to respect the alpha channel of the `drop_target.background` color. |
||
---|---|---|
.. | ||
contexts | ||
fonts | ||
icons | ||
keymaps | ||
settings | ||
sounds | ||
themes |