(self, event: events.MouseMove)
| 1628 | tooltip.update(tooltip_content) |
| 1629 | |
| 1630 | def _handle_mouse_move(self, event: events.MouseMove) -> None: |
| 1631 | hover_widget: Widget | None = None |
| 1632 | try: |
| 1633 | if self.app.mouse_captured: |
| 1634 | widget = self.app.mouse_captured |
| 1635 | region = self.find_widget(widget).region |
| 1636 | else: |
| 1637 | (widget, region), hover = self.get_hover_widgets_at(event.x, event.y) |
| 1638 | if hover is not None: |
| 1639 | hover_widget = hover[0] |
| 1640 | except errors.NoWidget: |
| 1641 | self.app._set_mouse_over(None, None) |
| 1642 | if self._tooltip_timer is not None: |
| 1643 | self._tooltip_timer.stop() |
| 1644 | if not self.app._disable_tooltips: |
| 1645 | try: |
| 1646 | self.get_child_by_type(Tooltip).display = False |
| 1647 | except NoMatches: |
| 1648 | pass |
| 1649 | else: |
| 1650 | self.app._set_mouse_over(widget, hover_widget) |
| 1651 | self.update_pointer_shape() |
| 1652 | widget.hover_style = event.style |
| 1653 | if widget is self: |
| 1654 | self.post_message(event) |
| 1655 | else: |
| 1656 | mouse_event = self._translate_mouse_move_event(event, widget, region) |
| 1657 | mouse_event._set_forwarded() |
| 1658 | widget._forward_event(mouse_event) |
| 1659 | |
| 1660 | if not self.app._disable_tooltips: |
| 1661 | try: |
| 1662 | tooltip = self.get_child_by_type(Tooltip) |
| 1663 | except NoMatches: |
| 1664 | pass |
| 1665 | else: |
| 1666 | if self._tooltip_widget != widget or not tooltip.display: |
| 1667 | self._tooltip_widget = widget |
| 1668 | if self._tooltip_timer is not None: |
| 1669 | self._tooltip_timer.stop() |
| 1670 | |
| 1671 | self._tooltip_timer = self.set_timer( |
| 1672 | self.app.TOOLTIP_DELAY, |
| 1673 | partial(self._handle_tooltip_timer, widget), |
| 1674 | name="tooltip-timer", |
| 1675 | ) |
| 1676 | else: |
| 1677 | tooltip.display = False |
| 1678 | self.screen.update_pointer_shape() |
| 1679 | |
| 1680 | @staticmethod |
| 1681 | def _translate_mouse_move_event( |
no test coverage detected