FIX:fixed the issue of didn't selecting printer on sending print pages

jira:[none]

Change-Id: Iabafeff76b35d7e95c330a987baee6f3e0254923
(cherry picked from commit c77341acc5ba9c8460e346172c16572cd22017c8)
This commit is contained in:
tao wang
2025-01-07 16:35:26 +08:00
committed by Noisyfox
parent b09a8ef2a9
commit 7f1d86c2bc

View File

@@ -2726,10 +2726,8 @@ _compare_obj_names(MachineObject* obj1, MachineObject* obj2)
static void static void
_collect_sorted_machines(Slic3r::DeviceManager* dev_manager, _collect_sorted_machines(Slic3r::DeviceManager* dev_manager,
std::vector<MachineObject*>& sorted_machine_objs, std::vector<MachineObject*>& sorted_machine_objs,
wxArrayString& sorted_machine_names, wxArrayString& sorted_machine_names)
MachineObject*& best_one)
{ {
best_one = nullptr;
sorted_machine_objs.clear(); sorted_machine_objs.clear();
sorted_machine_names.clear(); sorted_machine_names.clear();
if (!dev_manager) if (!dev_manager)
@@ -2752,10 +2750,6 @@ _collect_sorted_machines(Slic3r::DeviceManager* dev_manager,
{ {
if (obj == cur_selected_obj) if (obj == cur_selected_obj)
{ {
if (obj->printer_type == printer_type && obj->is_avaliable())
{
best_one = cur_selected_obj;;
}
return; return;
} }
@@ -2799,12 +2793,6 @@ _collect_sorted_machines(Slic3r::DeviceManager* dev_manager,
} }
}; };
// make the other as best
if (!best_one && !sorted_machine_objs.empty())
{
best_one = sorted_machine_objs.front();
}
// the shown list, STUDIO-8235 // the shown list, STUDIO-8235
if (cur_selected_obj) if (cur_selected_obj)
{ {
@@ -2828,30 +2816,17 @@ void SelectMachineDialog::update_user_printer()
} }
wxArrayString sorted_machine_names; wxArrayString sorted_machine_names;
MachineObject* best_one = nullptr; _collect_sorted_machines(dev, m_list, sorted_machine_names);
_collect_sorted_machines(dev, m_list, sorted_machine_names, best_one);
if (!best_one) {
dev->load_last_machine();
best_one = dev->get_selected_machine();
}
// update the machine list, and select a default machine // update the machine list, and select a default machine
m_comboBox_printer->Set(sorted_machine_names); m_comboBox_printer->Set(sorted_machine_names);
m_printer_last_select = best_one ? best_one->dev_id : ""; if (!m_list.empty())
if (best_one)
{ {
m_printer_last_select = best_one->dev_id; m_printer_last_select = m_list.front()->dev_id;
for (auto i = 0; i < m_list.size(); i++) m_comboBox_printer->SetSelection(0);
{
if (m_list[i] == best_one)
{
m_comboBox_printer->SetSelection(i);
wxCommandEvent event(wxEVT_COMBOBOX); wxCommandEvent event(wxEVT_COMBOBOX);
event.SetEventObject(m_comboBox_printer); event.SetEventObject(m_comboBox_printer);
wxPostEvent(m_comboBox_printer, event); wxPostEvent(m_comboBox_printer, event);
break;
}
}
} }
else else
{ {