diff --git a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp index 70f70dd..c10db5b 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp @@ -905,7 +905,7 @@ bool nmSubWndUtils::saveRsts(iSubWnd* pSubWnd, \ // 外层框架仍按 develop 的方式逐窗口回调。数值代次必须以实际分析窗口 // 作为保存锚点,不能让先到达的 Map 或网格回调改变成果井和根目录。 QVector vecSubWnds = pMainWnd1->getAllSubWndsOf( - pTabWx, "3004", true); + pTabWx, "3004", false); iSubWnd* pSessionAnchor = vecSubWnds.isEmpty() ? pSubWnd : vecSubWnds.first(); ZxDataWell* pDataWell = pSessionAnchor == nullptr @@ -1316,6 +1316,17 @@ void nmSubWndUtils::slotHandleTabChange(int index) } } } + + if(pDataManger != nullptr) { + // 切换分析后必须同步活动数值面板。即使DataManager已经是当前对象, + // 结果井下拉框也可能仍指向后创建的另一个分析面板。 + iDockBaseWx* pWxDockNm1 = pSubWndF->getNmDockWx(0); + nmWxNumericalDesign* pAnalWx = pWxDockNm1 == nullptr + ? nullptr : dynamic_cast(pWxDockNm1->widget()); + if(pAnalWx != nullptr) { + pAnalWx->activateCurrentInstance(); + } + } } } } @@ -1421,7 +1432,7 @@ void nmSubWndUtils::detachMdiFittingPlots(ZxMdiSubWindow* pMdiChild) return; } - QVector vecSubWnds = m_pMainWnd->getAllSubWndsOf(pTabWx, "3004", true); + QVector vecSubWnds = m_pMainWnd->getAllSubWndsOf(pTabWx, "3004", false); // 同一个成果内可能有多个分析,只清理仍占用Map Plot的DataManager。 foreach(iSubWnd* pSubWnd, vecSubWnds) { iSubWndFitting* pSubWndF = dynamic_cast(pSubWnd);