MCPcopy Create free account
hub / github.com/emilk/egui_plot / handle_hover

Method handle_hover

egui_plot/src/plot.rs:1546–1611  ·  view source on GitHub ↗
(
        &self,
        ui: &Ui,
        pointer: Pos2,
        shapes: &mut Vec<Shape>,
        plot_ui: &PlotUi<'_>,
        transform: &PlotTransform,
        show_xy: Vec2b,
    )

Source from the content-addressed store, hash-verified

1544 }
1545
1546 fn handle_hover(
1547 &self,
1548 ui: &Ui,
1549 pointer: Pos2,
1550 shapes: &mut Vec<Shape>,
1551 plot_ui: &PlotUi<'_>,
1552 transform: &PlotTransform,
1553 show_xy: Vec2b,
1554 ) -> (Vec<Cursor>, Option<Id>) {
1555 if !show_xy.any() {
1556 return (Vec::new(), None);
1557 }
1558
1559 let interact_radius_sq = ui.style().interaction.interact_radius.powi(2);
1560
1561 let mut candidates = plot_ui
1562 .items
1563 .iter()
1564 .filter(|entry| entry.allow_hover())
1565 .filter_map(|item| {
1566 let item = &**item;
1567 let closest = item.find_closest(pointer, transform);
1568
1569 Some(item).zip(closest)
1570 });
1571
1572 // Since many items can have same distance,
1573 // and dist_sq can be zero for some items (e.g. rectangle)
1574 // we pick topmost item within interact radius
1575 let topmost = candidates.rfind(|(_, elem)| elem.dist_sq <= interact_radius_sq);
1576
1577 let plot = crate::PlotConfig {
1578 ui,
1579 transform,
1580 show_x: show_xy.x,
1581 show_y: show_xy.y,
1582 show_crosshair: self.show_crosshair,
1583 };
1584
1585 let mut cursors = Vec::new();
1586
1587 let hovered_plot_item_id = if let Some((item, elem)) = topmost {
1588 item.on_hover(
1589 &plot_ui.response,
1590 elem,
1591 shapes,
1592 &mut cursors,
1593 &plot,
1594 &self.label_formatter,
1595 );
1596 Some(item.id())
1597 } else {
1598 let value = transform.value_from_position(pointer);
1599 items::rulers_and_tooltip_at_value(
1600 &plot_ui.response,
1601 value,
1602 None,
1603 &plot,

Callers 1

collect_shapesMethod · 0.80

Calls 7

value_from_positionMethod · 0.80
styleMethod · 0.45
allow_hoverMethod · 0.45
find_closestMethod · 0.45
on_hoverMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected