diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7b944f414c..9845a1804a 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1714,10 +1714,15 @@ Sidebar::Sidebar(Plater *parent) p->editing_filament = -1; if (p->combo_printer->switch_to_tab()) p->editing_filament = 0; - // ORCA clicking edit button not triggers wxEVT_KILL_FOCUS wxEVT_LEAVE_WINDOW make changes manually to prevent stucked colors when opening printer settings - p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); - p->btn_edit_printer->Hide(); - p->panel_printer_preset->Layout(); + // ORCA: FIX crash on wxGTK, directly modifying UI (self->Hide() / parent->Layout()) inside a button event can crash because callbacks are not re-entrant, leaving widgets in an inconsistent state + wxGetApp().CallAfter([this, panel_color]() { + // ORCA clicking edit button not triggers wxEVT_KILL_FOCUS wxEVT_LEAVE_WINDOW make changes manually to prevent stucked colors when opening printer settings + if (!p || !p->panel_printer_preset || !p->btn_edit_printer) + return; + p->panel_printer_preset->SetBorderColor(panel_color.bd_normal); + p->btn_edit_printer->Hide(); + p->panel_printer_preset->Layout(); + }); }); ScalableBitmap bitmap_printer(p->panel_printer_preset, "printer_placeholder", PRINTER_THUMBNAIL_SIZE.GetHeight());