- Plater: use Add() instead of wxArrayString(size_t, wxString) ctor
- Search: change sep from std::wstring to wxString for concatenation
- SendMultiMachinePage: replace wxList::Node* with compatibility_iterator
(Node type removed in wx 3.3 with wxUSE_STD_CONTAINERS=ON)
- PhysicalPrinterDialog: disambiguate set_values() call with explicit
std::vector<std::string> (wxArrayString now also matches initializer list)
- Preferences: use ToStdString() instead of mb_str() for std::string comparison
- Plater: use wxString::FromUTF8() for wxArrayString constructor argument
In wx 3.3 with wxUSE_STD_CONTAINERS=ON, wxString is backed by
std::wstring, so direct concatenation of const char[] with
std::wstring or wxUniCharRef fails. Fix by splitting compound
concatenations into separate += operations on wxString, or by
wrapping the left operand in wxString() to use its operator+.
Files fixed:
- AuxiliaryDataViewModel.cpp: split "\\" + wxString/wstring chains
- AboutDialog.cpp: split std::string("\n") + wxUniCharRef
- Auxiliary.cpp: wrap dir.wstring() in wxString(), split "/" + wstring
In wxWidgets 3.3, wxBitmapComboBoxBase::OnAddBitmap changed its
parameter from const wxBitmap& to const wxBitmapBundle&, and m_bitmaps
was replaced by m_bitmapbundles. Update OnAddBitmap signature and
OnDrawItem to use wxBitmapBundle, extracting wxBitmap via
GetBitmap(GetDefaultSize()) where needed.
- Wrap GetToolTipCtrl() call in GUI_App.cpp with #if wxVERSION_NUMBER < 3300
guard, as this API may not be accessible in wxWidgets 3.3. The dark tooltip
theming is cosmetic and non-critical.
- Add explicit #include <wx/utils.h> to 7 source files that use functions from
that header (wxGetMousePosition, wxLaunchDefaultBrowser, wxGetDisplaySize,
wxBell) but relied on transitive includes. This preempts breakage from
wxWidgets 3.3 reducing transitive includes.
Files with wx/utils.h added: BBLTopbar.cpp, CreatePresetsDialog.cpp,
CameraPopup.cpp, GLCanvas3D.cpp, GCodeViewer.cpp, GUI_ObjectList.cpp,
FilamentMapPanel.cpp.
Skipped BindDialog.cpp and FilamentPickerDialog.cpp as they already include
wx/wx.h which provides wx/utils.h transitively.
Part of wxWidgets 3.1.5 -> 3.3.2 upgrade.
In wxWidgets 3.3, wxWindow::Raise() no longer implies Show(). Add
explicit Show() before Raise() in two event handlers that activate the
main frame from another instance (load model, start download), and swap
the Show/Raise order in bring_instance_forward() so Show() precedes
Raise().
wxTRANSPARENT_WINDOW is removed in wxWidgets 3.3. Remove all 3
occurrences in MainFrame.cpp:
- ResizeEdgePanel constructor: already uses wxBG_STYLE_TRANSPARENT
via SetBackgroundStyle(), so the flag was redundant
- slice_panel and print_panel: drop the style parameter entirely
(defaults to 0)
wxWidgets 3.2+ asserts on invalid sizer flag combinations where
wxEXPAND (which fills the entire space in the secondary direction)
is combined with wxALIGN_* flags (which are meaningless when expanding).
Remove the conflicting wxALIGN_* flags from all 112 occurrences across
21 files, keeping wxEXPAND and any non-conflicting flags intact.
Since we now target wxWidgets 3.3, all wxCHECK_VERSION(3,1,N) checks
are always true. Remove the guards keeping only the true branches:
- I18N.hpp: Remove version guard around _wxGetTranslation_ctx macro
- ExtraRenderers.hpp, GUI_App.hpp: Simplify SUPPORTS_MARKUP to check
only wxUSE_MARKUP (version check always true)
- ConfigWizard.cpp: Remove manual wxArrayInt comparison fallback
- SendSystemInfoDialog.cpp: Simplify display scaling guard to _WIN32 only
- GUI_Utils.cpp: Remove IsDark() fallback using luma approximation
- wxinit.h: Remove legacy wxEVT_BUTTON and wxEVT_HTML_LINK_CLICKED
compat macros (these event names exist natively in wx 3.3)
wxWidgets 3.3 requires macOS 10.11+, making the 10.9.5-specific crash
workaround in OpenGLManager impossible to trigger. Remove:
- OSInfo struct and s_os_info static member from the header
- OS version recording in init_glcontext()
- Conditional wxGLContext deletion in the destructor (now always deletes)
- Unused #include <wx/platinfo.h>
The MacDarkMode.hpp include is retained as mac_max_scaling_factor() is
still used by GLInfo::get_max_tex_size().
wxWidgets 3.1+ accepts const argv arrays (const wchar_t* const* and
const char* const*) in wxExecute(), making the const_casts unnecessary.
Remove all 14 const_cast<char**>/const_cast<wchar_t**> wrappers around
wxExecute calls and their associated FIXME comments across GUI.cpp,
NotificationManager.cpp, and Downloader.cpp.
Remove scale_win_font() and scale_controls_fonts() functions along
with the #if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) guard in
rescale(). Since wx >= 3.1.3 is now guaranteed, this code could
never execute and the functions had no other callers.
Since we now target wxWidgets 3.3, the custom DPI change event
workaround (DpiChangedEvent, EVT_DPI_CHANGED_SLICER,
register_win32_dpi_event) is dead code. wxWidgets 3.1.3+ provides
native wxEVT_DPI_CHANGED / wxDPIChangedEvent which is already
wired up in the "true" branch of the version guards.
Removes:
- DpiChangedEvent struct and EVT_DPI_CHANGED_SLICER declaration/definition
- register_win32_dpi_event() function and its call site
- All associated #if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3) guards
Flushing volumes only apply to SEMM and BBL printers. Multi-tool printers don't perform filament purging between tool changes, so the zero-volume warning was being incorrectly triggered.
## FIXES
• Corrects area height on windows while using 125% and 175% scaling. it
shows scrollbar when it incorrectly set. i have used directly size of
combobox this time instead static number
## IMPROVEMENTS
• Removes restriction for restarting orca when setting changed
Previously, wipe tower behavior was determined by checking if the printer
was a QIDI vendor. This introduces a configurable enum (Type 1 / Type 2)
so any printer can select its wipe tower implementation. BBL printers
remain hardcoded to Type 1. Qidi profiles default to Type 1.
The wipe tower config position (wipe_tower_x/y) could be outside the
plate boundary (e.g. default y=250 on a 200mm printer). No constraint
was applied at slice time, so the tower was generated out-of-bounds.
std::map::at() throws std::out_of_range when option.category or
"Basic information" is not present in the tab's category_icon_map,
crashing the app. Replace with a safe find()-based helper lambda
that falls back to an empty string (no icon) when the key is missing.
* fix crash on Linux when clicking Assemble gizmo
* some qol changes for dev
* Revert "some qol changes for dev"
This reverts commit ffe321370b16e61d75e6ca84944480c6827ec79a.
In CLI mode, PartPlateList is constructed with a NULL plater pointer
(OrcaSlicer.cpp:3612). When set_shapes() calls PartPlate::set_shape(),
it unconditionally executes render data preparation code that
dereferences the null plater through calls like generate_print_polygon()
→ wxGetApp().plater(), causing a segmentation fault (exit code 139).
This adds a null check on m_plater in PartPlate::set_shape() to skip
the render-only code block that generates logo triangles, print/exclude
polygons, gridlines, icon vertices, and plate name textures.
These rendering operations are not needed in CLI mode and this change
has no impact on GUI mode where m_plater is always valid.