Commit Graph

17223 Commits

Author SHA1 Message Date
SoftFever
ba867cc534 Add Show() before Raise() calls for wxWidgets 3.3 compatibility
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().
2026-03-24 20:57:58 +08:00
SoftFever
026b105dcb Remove wxTRANSPARENT_WINDOW flag for wxWidgets 3.3 compatibility
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)
2026-03-24 20:56:04 +08:00
SoftFever
1065d85dbc Fix wxEXPAND | wxALIGN_* sizer flag conflicts for wxWidgets 3.2+
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.
2026-03-24 20:50:44 +08:00
SoftFever
024d5dc64d Remove wxCHECK_VERSION(3,1,x) guards and legacy wxinit.h macros
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)
2026-03-24 20:44:32 +08:00
SoftFever
5be5185d17 Remove OSX 10.9.5 crash workaround (dead code with wxWidgets 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().
2026-03-24 20:39:45 +08:00
SoftFever
8dcc3cd20d Remove const_cast workarounds for wxExecute (wxWidgets 3.1+)
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.
2026-03-24 20:34:32 +08:00
SoftFever
5f13f0893c Remove remaining pre-3.1.3 DPI dead code in GUI_Utils.hpp
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.
2026-03-24 20:30:40 +08:00
SoftFever
195d22d5cb Remove pre-wxWidgets 3.1.3 DPI fallback code
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
2026-03-24 20:28:12 +08:00
SoftFever
2d7e26292b Update build system for wxWidgets 3.1.5 → 3.3.2 upgrade
- deps/wxWidgets/wxWidgets.cmake: Add GIT_TAG v3.3.2 to track the
  correct branch; remove -DwxUSE_UNICODE=ON (unicode-only in 3.3,
  option removed)
- src/CMakeLists.txt: Bump find_package minimum version from 3.0/3.1
  to 3.3; remove SLIC3R_WX_STABLE conditional (3.0 no longer supported)
- CMakeLists.txt: Remove SLIC3R_WX_STABLE option definition
- scripts/flatpak/com.orcaslicer.OrcaSlicer.yml: Update wxWidgets
  source URL to v3.3.2 branch archive; remove sha256 (placeholder
  TODO); remove -DwxUSE_UNICODE=ON
2026-03-24 20:22:19 +08:00
SoftFever
73be083ac5 update flatpak app id and add migration code (#12879)
* update flatpak app id and add migration code

* tweak some text
2026-03-22 23:49:23 +08:00
Kiss Lorand
c02ccecc3a Follow-up for PR #12773 (#12800)
Adapt language files to PR #12773

- Language files are adapated for the new msgid from PR #12773
- changes from PR #12773 applied to APPLE build also
2026-03-20 22:04:46 +08:00
SoftFever
be5741d822 Security fix: path traversal in 3MF import (#12860) 2026-03-20 17:11:22 +08:00
Aleksandr Dobkin
1cc82873f4 Fix contour extrusion path logic and improve GCode extrusion handling 2026-03-19 01:32:51 -07:00
SoftFever
4314f5d804 Merge branch 'main' into zaa 2026-03-18 18:10:35 +08:00
SoftFever
991464ed95 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:52:24 +08:00
SoftFever
eb5082f37b Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:51:29 +08:00
SoftFever
70b9bedf94 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-18 17:50:39 +08:00
SoftFever
13b08385c8 check precise_z_height and enable_prime_tower conflicts in print validate 2026-03-18 16:59:20 +08:00
SoftFever
bcd89aba5e Skip flushing volume validation for multi-tool printers
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.
2026-03-18 15:39:07 +08:00
SoftFever
62ffbfd33d revist fixes for wipe tower pos issues 2026-03-18 14:42:40 +08:00
SoftFever
6399d88015 Revert "Fix wipe tower loaded outside of plate boundaries (#12191)"
This reverts commit e14e186bb7.
2026-03-17 19:16:09 +08:00
SoftFever
c8070b67d5 Revert "Fix wipe tower placed outside bed boundary on first slice (#12777)"
This reverts commit 494601eea5, reversing
changes made to d28e964e04.
2026-03-17 19:14:50 +08:00
SoftFever
c224b3f94b Ensure slice / print buttons visible on frame (Accordion tabs) (#12772)
Fixes
https://github.com/OrcaSlicer/OrcaSlicer/issues/12723#issuecomment-4033223440

## NOTES
• Icons easy to discern so its not an issue
• User will explore this feature while resizing window so its ok as well
• maybe will add a tooltip while button compacted on future

## PROBLEM
print / slice buttons not visible in frame and not usable. bbl machines
uses much more tabs and issue gets worse

**regular printer on minimum window size**
<img width="766" height="96" alt="Screenshot-20260315014602"
src="https://github.com/user-attachments/assets/965e72d2-64d6-462e-abbf-f3c355783da0"
/>

**bbl printer on minimum size**
<img width="764" height="93" alt="Screenshot-20260315014708"
src="https://github.com/user-attachments/assets/1250afd1-45c3-42d9-bda3-334671ec7dc5"
/>

## SOLUTION
tabs uses only icons to reduce space usage dynamically depends on
available space

**regular printer**

![explorer_PoszqO4wyw](https://github.com/user-attachments/assets/848331ee-0206-41a8-961f-e65e68ca5f56)

**bbl printer with multi device enabled**

![explorer_WznxxHVgIJ](https://github.com/user-attachments/assets/3e3a0414-71c2-436d-be3d-d1f380d5d299)

**worst case scenario without issue. (minimum window width + multi
device + Export sliced plate button)**
<img width="772" height="97" alt="Screenshot-20260315015216"
src="https://github.com/user-attachments/assets/8b21d693-4119-4f91-b16d-d734e4633b87"
/>

**adapts automatically to used layout**

![firefox_W80FMQaHee](https://github.com/user-attachments/assets/3f9eed31-2f8d-4763-8911-bf765175d30d)
2026-03-17 18:34:59 +08:00
SoftFever
9e32aec938 Support longer project names on title and fix window buttons not visible on minimum window size (#12730)
fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12723

tested on windows, ubuntu

## CHANGES
• Created a painted control because AddLabel method has fixed size.
**new control expands and uses all available space**
• removed invisible publish button to get perfect center. i assume this
feature already not in use on orca

## WINDOW BUTTONS NOT VISIBLE ON MINIMUM WINDOW WIDTH
• This issue only exist on windows

**Before**- causes window buttons not fitting to frame. 
**After** - all fits to frame
<img width="759" height="203" alt="Screenshot-20260311141345"
src="https://github.com/user-attachments/assets/99da00ea-48f9-449b-9dd0-0bd023e041d8"
/>

## ADDS SUPPORT FOR LONGER PROJECT NAMES
**Before** - title not showing all name because it has a fixed size with
300px
**After** - shows all name because it uses all available space
<img width="1263" height="216" alt="Screenshot-20260311141612"
src="https://github.com/user-attachments/assets/f0b4d16a-882f-46c0-8918-d0b8a7c34007"
/>

## ELLIPSIZES LONG NAMES WHEN REQURIED
**Before** - method was static

![explorer_6M2Lqu7Sla](https://github.com/user-attachments/assets/b0aedc44-6bb8-4b25-a4e3-8e3fea25fd44)

**After** - supports longer names and ellipsizes end dynamically

![explorer_l92JNSeq3v](https://github.com/user-attachments/assets/aa0b3ff1-c155-46b5-abc8-cf8167db18a7)

## FIXES THIN TITLEBAR ON LINUX
Left windows Right one Linux
**Before - Linux titlebar uses less height for titlebar**
<img width="806" height="84" alt="Screenshot-20260312013547"
src="https://github.com/user-attachments/assets/3507016c-e46b-4fb1-86de-29978ee48e2b"
/>
**After- Heights almost matches**
<img width="819" height="110" alt="Screenshot-20260312013531"
src="https://github.com/user-attachments/assets/3b28d32b-d054-406e-85bc-939609ba1aef"
/>
2026-03-17 18:28:00 +08:00
Aleksandr Dobkin
12232deb7a Fix z-offset handling for ZAA 2026-03-16 13:48:42 -07:00
yw4z
3eac0a86e4 update 2026-03-16 15:10:36 +03:00
SoftFever
ba18b67e12 small tweak 2026-03-16 18:56:17 +08:00
SoftFever
55ddf158e5 Merge branch 'main' into feature/wipetower-option 2026-03-16 17:41:00 +08:00
SoftFever
d7a3091b70 Flow ratio instead flow rate calib (#12773)
# Description

Point II - 5 of #12684


# Screenshots/Recordings/Graphs

<img width="558" height="265" alt="image"
src="https://github.com/user-attachments/assets/fe8212b2-3062-4f21-8912-a9aaa87b3df1"
/>
2026-03-16 17:39:55 +08:00
Aleksandr Dobkin
29e35d77b1 Fix mesh transformation logic PrintObject::contour_z to handle off center cases 2026-03-16 00:56:52 -07:00
SoftFever
14c40d7120 Fix height calculation for preferred filament area height (#12660)
## 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
2026-03-16 15:06:14 +08:00
SoftFever
d0d0440b8e Fix plurals on some GUI strings (#12681)
# Description
Some terms were singular and should be plural, and vice-versa.
2026-03-16 14:53:51 +08:00
SoftFever
8168d0a4e0 fix crash when opening preference dialog 2026-03-16 00:18:39 +08:00
SoftFever
112bec6bd2 Fix calibration dialogs not sizes properly on linux (#12752)
Fixes https://github.com/OrcaSlicer/OrcaSlicer/issues/12737 and
confirmed in here
https://github.com/OrcaSlicer/OrcaSlicer/issues/12737#issuecomment-4050896603

Only occurs on X11. tested on mint

`v_sizer->SetSizeHints(this);` was the real fix

issue starts to appear when dialog height higher then 280px
Removed height limitation on creating dialog as solution since dialogs
already resized with its content

• also fixes clipped text on bottom
|BEFORE|AFTER|
|---|---|
|<img width="330" height="456" alt="Screenshot-20260312203213"
src="https://github.com/user-attachments/assets/c6b0e577-f1e1-4da7-ba02-808d157ebee6"
/>|<img width="342" height="443" alt="Screenshot-20260313010726"
src="https://github.com/user-attachments/assets/a78605fa-ed75-4b42-a484-a2376d1b2982"
/>|

|BEFORE|AFTER|
|---|---|
|<img width="263" height="365" alt="Screenshot-20260312204651"
src="https://github.com/user-attachments/assets/ff04692e-3fd6-4fe1-bb6e-90594599c459"
/>|<img width="261" height="393" alt="Screenshot-20260313011644"
src="https://github.com/user-attachments/assets/be01936d-753a-4b95-99cb-c16228f8706f"
/>|
2026-03-15 23:21:51 +08:00
SoftFever
1a7f5d4f98 Fix infinite loop with zero top solid infill density (#12762)
# Description

This pull request fixes the bug where Orca Slicer enters an infinite
loop when a density of zero is introduced for the top layer solid infill

# Screenshots/Recordings/Graphs

<img width="2560" height="1392" alt="image"
src="https://github.com/user-attachments/assets/5bf5c220-a398-483f-9f69-63dadbc888af"
/>

Note: For bottom solid infill, this is not a problem because the minimum
density is 10%.
2026-03-15 23:20:47 +08:00
SoftFever
13c267936a Fix non-bbl printer filament grouping by mapping all filaments/tools to group 0 (#12767)
Makes sure all non-bbl printers go through the same filament reordering
code so custom filament sequence is properly handled, while skipping the
filament grouping part by mapping all filaments to group 0.

This is the same method used by BBL printer to calculate the optimal
filament grouping so should be robust.

Fix #12449
Fix #12766
2026-03-15 23:19:47 +08:00
SoftFever
7f9ddda01d feat: swap the mmu detection to prefer the more generic moonraker database (#12764)
# Description

<!--
> Please provide a summary of the changes made in this PR. Include
details such as:
  > * What issue does this PR address or fix?
  > * What new features or enhancements does this PR introduce?
> * Are there any breaking changes or dependencies that need to be
considered?
-->

Happy Hare now writes mmu lane data to the moonraker db similar to AFC,
so we can normalize to the one implementation. For now, i've just
re-ordered it so that the moonraker db is checked first. I want this
because I've actually updated the happy hare data to include more data
than we had access to via the "mmu" object. For happy hare we now have
access to vendor name, which we can eventually use to further fine tune
the auto-matched filament preset.

# Screenshots/Recordings/Graphs

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->
_n/a_

## Tests

<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
2026-03-15 23:09:10 +08:00
SoftFever
fe75c2c0fa Allow cancel during beam interlocking generation (#12759)
With certain irrational beam interlocking parameters, it will take a few
minutes to complete the interlocking generation; even worse:
cancellation doesn't work once it started.

This PR fix that by adding cancellation check inside some of the most
time consuming loops so it can be stopped ASAP.

Also cherry picked a sanity check from
https://github.com/bambulab/BambuStudio/pull/9925 by @mpaperno. Thanks!

The following test project (which was modified from the upper PR by
@mpaperno) took me more than 90s to complete with 0.1mm beam width:

[Interloack-Test2.orca.3mf.txt](https://github.com/user-attachments/files/25975637/Interloack-Test2.orca.3mf.txt)
2026-03-15 23:03:04 +08:00
SoftFever
d58d9be07b Add wipe_tower_type printer setting to replace vendor-based wipe tower selection
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.
2026-03-15 22:19:53 +08:00
SoftFever
65d4be8cea Merge branch 'main' into fix/wipe-tower-outside-boundary-on-first-slice 2026-03-15 17:40:56 +08:00
SoftFever
ad0cce4c38 Fix wipe tower placed outside bed boundary on first slice
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.
2026-03-15 17:38:44 +08:00
Branden Cash
189bcafee0 feat: swap the mmu detection to prefer the more generic moonraker database
Happy Hare now writes mmu lane data to the moonraker db similar to AFC, so we can normalize to the one implementation. For now, i've just re-ordered it so that the moonraker db is checked first. I want this because I've actually updated the happy hare data to include more data than we had access to via the "mmu" object. For happy hare we now have access to vendor name, which we can eventually use to further fine tune the auto-matched filament preset.
2026-03-14 20:20:27 -07:00
RF47
43285a493c Flow ratio instead flow rate calib 2026-03-14 22:17:04 -03:00
yw4z
1f18be9ff2 fix compacting when app open with home tab 2026-03-15 04:16:45 +03:00
yw4z
20f8d478aa init 2026-03-15 01:42:28 +03:00
Noisyfox
478e8bda16 Fix non-bbl printer filament grouping by mapping all filaments/tools to group 0 (#12449, #12766) 2026-03-14 23:30:37 +08:00
SoftFever
d28e964e04 Fix crash in DiffPresetDialog::update_tree() on preset selection change (#12765)
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.
2026-03-14 20:47:56 +08:00
RF47
1528c2cf3b Skip top surfaces with non-positive density
Add a guard that skips creating fill params for top surfaces when the configured density is less than or equal to zero. This avoids generating surface fills for zero/negative densities and prevents unnecessary processing or potential errors when top surface density is disabled.
2026-03-13 22:44:31 -03:00
Noisyfox
485917461a Allow cancellation during beam interlocking generation 2026-03-13 23:33:19 +08:00
Max Paperno
1aed7dfe5b FIX: Divide by zero exception in InterlockingGenerator when invalid configuration parameters are used. (fixes https://github.com/bambulab/BambuStudio/issues/9910 )
(cherry picked from commit cdd60ab71f8a3895fcb1345b2ccc2f2f472bf968)
2026-03-13 21:13:29 +08:00