From b8620d1164bb6fd5a882b416fef1b3f0ef8f3c1d Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 4 Apr 2024 12:42:32 +0200 Subject: [PATCH 1/4] TopBar: Use RemoveChild() instead of Reparent() during of remove of buttons from TopBar. Note: Under OSX Reparent() causes a crash. [SPE-2210] --- src/slic3r/GUI/TopBar.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/TopBar.cpp b/src/slic3r/GUI/TopBar.cpp index 0355f9fd45..d47eb7884b 100644 --- a/src/slic3r/GUI/TopBar.cpp +++ b/src/slic3r/GUI/TopBar.cpp @@ -493,7 +493,9 @@ void TopBarItemsCtrl::RemovePage(size_t n) ScalableButton* btn = m_pageButtons[n]; m_pageButtons.erase(m_pageButtons.begin() + n); m_buttons_sizer->Remove(n); - btn->Reparent(nullptr); + + // Under OSX call of btn->Reparent(nullptr) causes a crash, so as a workaround use RemoveChild() instead + this->RemoveChild(btn); btn->Destroy(); m_sizer->Layout(); } From 9a97be24332ab971e528e5ce03d8f52224acf8fc Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 4 Apr 2024 12:46:28 +0200 Subject: [PATCH 2/4] GcodeViewer: Fixed a crash on change of application color mode or (OSX specific) on a moving between displays [SPE-2211] --- src/slic3r/GUI/MainFrame.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index e09329ce98..3d91d4f68a 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1187,8 +1187,10 @@ void MainFrame::on_sys_color_changed() for (auto tab : wxGetApp().tabs_list) tab->sys_color_changed(); - m_connect_webview->sys_color_changed(); - m_printer_webview->sys_color_changed(); + if (m_connect_webview) + m_connect_webview->sys_color_changed(); + if (m_printer_webview) + m_printer_webview->sys_color_changed(); MenuFactory::sys_color_changed(m_menubar); From a672b9587c731808b218b420d2623bb0024afa70 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 4 Apr 2024 12:51:39 +0200 Subject: [PATCH 3/4] Follow-up ada1fc37: Revert "Configuration" menu in GcodeViewer --- src/slic3r/GUI/MainFrame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 3d91d4f68a..cff0a02e71 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1751,7 +1751,7 @@ void MainFrame::init_menubar_as_gcodeviewer() m_menubar->Append(fileMenu, _L("&File")); if (viewMenu != nullptr) m_menubar->Append(viewMenu, _L("&View")); // Add additional menus from C++ -// wxGetApp().add_config_menu(m_menubar); + m_menubar->Append(wxGetApp().get_config_menu(), _L("&Configuration")); m_menubar->Append(helpMenu, _L("&Help")); SetMenuBar(m_menubar); From 22d3ad65907c128316d77897259f965c50850a5e Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 4 Apr 2024 14:32:07 +0200 Subject: [PATCH 4/4] Fixed show "Physical Printer" tab in TopBar after adding of the physical printer --- src/slic3r/GUI/MainFrame.cpp | 2 +- src/slic3r/GUI/PresetComboBoxes.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index cff0a02e71..608ef1e407 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -887,7 +887,7 @@ void MainFrame::add_printer_webview_tab(const wxString& url) } m_printer_webview_added = true; // add as the last (rightmost) panel - dynamic_cast(m_tabpanel)->AddPage(m_printer_webview, L"Physical Printer", "", false); + dynamic_cast(m_tabpanel)->AddPage(m_printer_webview, _L("Physical Printer"), "", false); m_printer_webview->set_default_url(url); m_printer_webview->load_default_url_delayed(); } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index bcd79ed69e..1bff52c8e9 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -380,8 +380,10 @@ void PresetComboBox::edit_physical_printer() void PresetComboBox::add_physical_printer() { - if (PhysicalPrinterDialog(this->GetParent(), wxEmptyString).ShowModal() == wxID_OK) + if (PhysicalPrinterDialog(this->GetParent(), wxEmptyString).ShowModal() == wxID_OK) { update(); + wxGetApp().show_printer_webview_tab(); + } } void PresetComboBox::open_physical_printer_url() @@ -782,9 +784,7 @@ void PlaterPresetComboBox::show_add_menu() append_menu_item(menu, wxID_ANY, _L("Add physical printer"), "", [this](wxCommandEvent&) { - PhysicalPrinterDialog dlg(this->GetParent(), wxEmptyString); - if (dlg.ShowModal() == wxID_OK) - update(); + add_physical_printer(); }, "edit_uni", menu, []() { return true; }, wxGetApp().plater()); wxGetApp().plater()->PopupMenu(menu);