From 867888458abdc029cbf31b6058edfefe30a20722 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期四, 12 二月 2026 16:38:24 +0800
Subject: [PATCH] 1.修复重启后,由于PJ不是列队中,导致无法创建调度任务的问题。 2.修复CPjPage2点Port2的物料类型,Port1也跟着变的问题。

---
 SourceCode/Bond/Servo/CCjPage2.cpp |   33 ++++++++++-----------------------
 1 files changed, 10 insertions(+), 23 deletions(-)

diff --git a/SourceCode/Bond/Servo/CCjPage2.cpp b/SourceCode/Bond/Servo/CCjPage2.cpp
index 7a79783..2102cd8 100644
--- a/SourceCode/Bond/Servo/CCjPage2.cpp
+++ b/SourceCode/Bond/Servo/CCjPage2.cpp
@@ -440,43 +440,29 @@
         m_grid.SetPortAllocated(p, !checked, _T(""));
         GetDlgItem(btnID[p])->EnableWindow(checked);
     }
-    // Keep one material type across all selected ports.
-    int syncMat = CCarrierSlotGrid::MAT_G1;
-    bool hasSyncMat = false;
-    for (int p = 0; p < kPortCount && !hasSyncMat; ++p) {
+    // 鐗╂枡绫诲瀷鎸� Port 缁村害鐙珛缁熶竴锛屼笉璺� Port 鑱斿姩銆�
+    for (int p = 0; p < kPortCount; ++p) {
         if (!pCurrent->selectedPorts[p]) continue;
+        int syncMat = m_grid.GetSlotMaterialType(p, 0);
         for (int s = 0; s < kSlotCount; ++s) {
             if (m_grid.GetSlotChecked(p, s)) {
                 syncMat = m_grid.GetSlotMaterialType(p, s);
-                hasSyncMat = true;
                 break;
             }
         }
+        SyncMaterialInPort(p, syncMat);
     }
-    if (!hasSyncMat) {
-        for (int p = 0; p < kPortCount; ++p) {
-            if (!pCurrent->selectedPorts[p]) continue;
-            syncMat = m_grid.GetSlotMaterialType(p, 0);
-            hasSyncMat = true;
-            break;
-        }
-    }
-    SyncMaterialAcrossSelectedPorts(syncMat);
 
     EnsureWarpDefaults(*pCurrent);
 }
 
-void CCjPage2::SyncMaterialAcrossSelectedPorts(int material)
+void CCjPage2::SyncMaterialInPort(int port, int material)
 {
     if (m_pContext == nullptr) return;
-
+    if (port < 0 || port >= kPortCount) return;
     const int mat = NormalizeMaterial(material);
-    PJWarp* pCurrent = (PJWarp*)m_pContext;
-    for (int p = 0; p < kPortCount; ++p) {
-        if (!pCurrent->selectedPorts[p]) continue;
-        for (int s = 0; s < kSlotCount; ++s) {
-            m_grid.SetSlotMaterialType(p, s, mat, FALSE);
-        }
+    for (int s = 0; s < kSlotCount; ++s) {
+        m_grid.SetSlotMaterialType(port, s, mat, FALSE);
     }
 }
 
@@ -531,9 +517,10 @@
 void CCjPage2::OnGridMatChanged(NMHDR* pNMHDR, LRESULT* pResult)
 {
     auto* nm = reinterpret_cast<CSG_MAT_CHANGE*>(pNMHDR);
+    const int port = nm->port;
     const int mat = nm->material; // 1/2
 
-    SyncMaterialAcrossSelectedPorts(mat);
+    SyncMaterialInPort(port, mat);
     ContentChanged(0);
 
     *pResult = 0;

--
Gitblit v1.9.3