Skip to content

Commit 447cbff

Browse files
fix: Hovering issues (#104)
Co-authored-by: pyansys-ci-bot <[email protected]>
1 parent 7643914 commit 447cbff

File tree

2 files changed

+14
-20
lines changed

2 files changed

+14
-20
lines changed

doc/changelog.d/104.fixed.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fix: Hovering issues

src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py

+13-20
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
# SOFTWARE.
2222
"""Provides a wrapper to aid in plotting."""
2323
from abc import abstractmethod
24-
from enum import Enum
2524

2625
from beartype.typing import Any, Dict, List, Optional, Union
2726
import numpy as np
@@ -59,12 +58,6 @@
5958
from ansys.tools.visualization_interface.utils.logger import logger
6059

6160

62-
class PickingMode(Enum):
63-
"""Enumerate with the available picking modes."""
64-
PICK = "pick"
65-
HOVER = "hover"
66-
67-
6861
class PyVistaBackendInterface(BaseBackend):
6962
"""Provides the interface for the Visualization Interface Tool plotter.
7063
@@ -108,14 +101,12 @@ def __init__(
108101

109102
self._use_trame = use_trame
110103
self._allow_picking = allow_picking
111-
if self._allow_picking:
112-
if allow_hovering:
113-
logger.warning(
114-
"Picking and hovering are incompatible. Picking will take precedence."
115-
)
104+
self._allow_hovering = allow_hovering
105+
if self._allow_picking and self._allow_hovering:
106+
logger.warning(
107+
"Picking and hovering are incompatible. Picking will take precedence."
108+
)
116109
self._allow_hovering = False
117-
else:
118-
self._allow_hovering = allow_hovering
119110
self._pv_off_screen_original = bool(pv.OFF_SCREEN)
120111
self._plot_picked_names = plot_picked_names
121112
# Map that relates PyVista actors with PyAnsys objects
@@ -158,8 +149,8 @@ def __init__(
158149

159150
self._enable_widgets = self._pl._enable_widgets
160151

161-
self._hover_picker = vtkPointPicker()
162-
self._hover_widget = vtkHoverWidget()
152+
self._hover_picker = vtkPointPicker() if self. _allow_hovering else None
153+
self._hover_widget = vtkHoverWidget() if self. _allow_hovering else None
163154
self._added_hover_labels = []
164155

165156
@property
@@ -324,8 +315,10 @@ def hover_callback(self, _widget, event_name) -> None:
324315
renderer = plotter.iren.get_poked_renderer(x, y)
325316
self._hover_picker.Pick(x, y, 0, renderer)
326317
actor = self._hover_picker.GetActor()
327-
if event_name == "TimerEvent" and actor is not None and actor in self._object_to_actors_map:
318+
if actor in self._object_to_actors_map:
328319
custom_object = self._object_to_actors_map[actor]
320+
for label in self._added_hover_labels:
321+
self._pl.scene.remove_actor(label)
329322
label_actor = self._pl.scene.add_point_labels(
330323
[actor.GetCenter()],
331324
[custom_object.name],
@@ -335,7 +328,7 @@ def hover_callback(self, _widget, event_name) -> None:
335328
show_points=False,
336329
)
337330
self._added_hover_labels.append(label_actor)
338-
elif event_name == "EndInteractionEvent":
331+
else:
339332
for label in self._added_hover_labels:
340333
self._pl.scene.remove_actor(label)
341334

@@ -416,8 +409,8 @@ def show(
416409
417410
"""
418411
self.plot(plottable_object, name_filter, **plotting_options)
419-
if self._pl._object_to_actors_map:
420-
self._object_to_actors_map = self._pl._object_to_actors_map
412+
if self._pl.object_to_actors_map:
413+
self._object_to_actors_map = self._pl.object_to_actors_map
421414
else:
422415
logger.warning("No actors were added to the plotter.")
423416

0 commit comments

Comments
 (0)