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