Restore previous hovered_offset logic

Co-authored-by: David Kleingeld <davidsk@zed.dev>
This commit is contained in:
Richard Feldman 2025-08-25 10:49:28 -04:00
parent 70918609d8
commit 81578c0d9e
No known key found for this signature in database

View file

@ -298,14 +298,15 @@ pub fn update_inlay_link_and_hover_points(
window: &mut Window,
cx: &mut Context<Editor>,
) {
// For inlay hints, we need to use the exact position where the mouse is
// But we must clip it to valid bounds to avoid panics
let clipped_point = snapshot.clip_point(point_for_position.exact_unclipped, Bias::Left);
let hovered_offset = snapshot.display_point_to_inlay_offset(clipped_point, Bias::Left);
let hovered_offset = if point_for_position.column_overshoot_after_line_end == 0 {
Some(snapshot.display_point_to_inlay_offset(point_for_position.exact_unclipped, Bias::Left))
} else {
None
};
let mut go_to_definition_updated = false;
let mut hover_updated = false;
if let Some(hovered_offset) = hovered_offset {
// Get all visible inlay hints
let visible_hints = editor.visible_inlay_hints(cx);
@ -327,7 +328,8 @@ pub fn update_inlay_link_and_hover_points(
// Extract the hint ID from the inlay
if let InlayId::Hint(_hint_id) = hovered_inlay.id {
if let Some(cached_hint) = inlay_hint_cache.hint_by_id(excerpt_id, hovered_inlay.id) {
if let Some(cached_hint) = inlay_hint_cache.hint_by_id(excerpt_id, hovered_inlay.id)
{
// Check if we should process this hint for hover
let should_process_hint = match cached_hint.resolve_state {
ResolveState::CanResolve(_, _) => {
@ -402,7 +404,8 @@ pub fn update_inlay_link_and_hover_points(
if part.tooltip.is_some() || part.location.is_some() {
// Found the meaningful part - show hover for it
let highlight_start = part_offset + extra_shift_left;
let highlight_end = part_offset + part_len + extra_shift_right;
let highlight_end =
part_offset + part_len + extra_shift_right;
let highlight = InlayHighlight {
inlay: hovered_inlay.id,
@ -451,7 +454,8 @@ pub fn update_inlay_link_and_hover_points(
editor,
InlayHover {
tooltip: HoverBlock {
text: "Loading documentation...".to_string(),
text: "Loading documentation..."
.to_string(),
kind: HoverBlockKind::PlainText,
},
range: highlight.clone(),
@ -588,7 +592,8 @@ pub fn update_inlay_link_and_hover_points(
}
}
if let Some((language_server_id, location)) = &part.location {
if let Some((language_server_id, location)) = &part.location
{
if secondary_held
&& !editor.has_pending_nonempty_selection()
{
@ -619,6 +624,7 @@ pub fn update_inlay_link_and_hover_points(
}
}
}
}
if !go_to_definition_updated {
editor.hide_hovered_link(cx)