Fix device popup, mapping, and status-parse defects

- Allow mapping to EMPTY trays only from the multi-machine send page and keep
  both panels pickable in the LEFT_AND_RIGHT view
- Guard the error-dialog cloud snapshot against stale callbacks and fall back
  to the local illustration on timeout
- Parse the ipcam storage-check ack and axis/chamber pushes defensively
- Strip fan-control telemetry, initialize the upgrade error code, restore the
  .json filter in the model-id scan
- Fix best-position popup tray lookup, gradient placement, and colour-list
  ownership
- Cover switch binding sets and invalid-track transients in DevMapping tests
This commit is contained in:
SoftFever
2026-07-18 01:46:10 +08:00
parent 12720ccbd8
commit 4683c17f6f
11 changed files with 181 additions and 69 deletions

View File

@@ -1059,8 +1059,7 @@ void AmsMapingPopup::show_reset_button() {
m_reset_btn->Show();
}
// Orca: kept surface for the reverse-direction SelectMachine — this helper (dropped by the reference)
// is still consumed by SelectMachine, so it stays as a permanent compatibility surface.
// Orca: dropped by the reference but still consumed by SelectMachine.
std::vector<TrayData> AmsMapingPopup::parse_ams_mapping(const std::map<std::string, DevAms*, NumericStrCompare>& amsList)
{
std::vector<TrayData> m_tray_data;
@@ -1185,7 +1184,7 @@ void AmsMapingPopup::on_left_down(wxMouseEvent &evt)
}
}
if (item->m_tray_data.type == TrayType::EMPTY) return;
if (item->m_tray_data.type == TrayType::EMPTY && !m_mapping_from_multi_machines) return;
if (m_show_type == ShowType::LEFT_AND_RIGHT_DYNAMIC && devPrinterUtil::IsVirtualSlot(item->m_ams_id)) return;
if ((m_show_type == ShowType::LEFT && item->GetParent()->GetName() == "left") ||