fix(3d-view): 二维/三维分析切换时取消前视图选中

三维分析选中切片后切到二维分析,残留的selected_使InteractionManager::onWheel
持续消费滚轮(二维下无法缩放),且切回三维仍残留高亮。setMode2D进入二维时清切片
选中+高亮,并经onSliceSelectionChanged("")联动清三维分析列表选中行与异常高亮。
与VtkSceneView::setAnalysisMode2D离开二维时clearMapLineSelection清足迹选中相对称。
This commit is contained in:
gaozheng 2026-06-26 23:43:26 +08:00
parent d5e3522bfa
commit 9b4f172809
1 changed files with 11 additions and 0 deletions

View File

@ -263,6 +263,17 @@ void InteractionManager::closeAll() {
PickInteractorStyle* InteractionManager::pickStyle() const { return style_; } PickInteractorStyle* InteractionManager::pickStyle() const { return style_; }
void InteractionManager::setMode2D(bool is2D) { void InteractionManager::setMode2D(bool is2D) {
// 进入二维分析:主动取消「三维前视图」的所有选中。否则残留的选中切片会让 onWheel 持续消费滚轮
// (二维下无法缩放),且切回三维仍残留高亮。清 selected_ + 切片高亮;再经 onSliceSelectionChanged("")
// 联动清三维分析列表选中行与异常高亮app 层接线)。与 VtkSceneView::setAnalysisMode2D 离开二维时
// clearMapLineSelection 清足迹选中相对称。
if (is2D) {
if (selected_ >= 0) {
selected_ = -1;
updateSelectionVisual(); // 清切片高亮(切回三维不残留选中)
}
if (onSliceSelectionChanged) onSliceSelectionChanged(std::string{});
}
// 切片属三维内容:二维分析隐藏(不销毁→切回零重建)、三维分析显示。 // 切片属三维内容:二维分析隐藏(不销毁→切回零重建)、三维分析显示。
for (auto& s : slices_) for (auto& s : slices_)
if (s) s->setVisible(!is2D); if (s) s->setVisible(!is2D);