Commit Graph

400 Commits

Author SHA1 Message Date
RF47
d7a400db5b free SSAO 2026-05-18 09:31:07 -03:00
RF47
2126118f9f avoid rebinding/redefining state each render. 2026-05-18 09:31:07 -03:00
RF47
6848418bb4 Depth texture allocation 2026-05-18 09:31:07 -03:00
RF47
ea1b514064 shadows availables with gouraud 2026-05-18 09:31:06 -03:00
RF47
41da44f49a Fix 2 2026-05-18 09:31:06 -03:00
RF47
722c10b5f1 SSAO independent 2026-05-18 09:31:06 -03:00
RF47
08da3fe8d9 fix 1 2026-05-18 09:31:06 -03:00
RF47
64ef0330dd cast shadows
sombra 3

sombra 2
2026-05-18 09:31:06 -03:00
RF47
74dc760ab0 3D canvas menu
Co-Authored-By: yw4z <yw4z@outlook.com>
2026-05-18 09:31:05 -03:00
RF47
18d40c5b61 SSAO 2026-05-18 09:31:05 -03:00
RF47
644c928864 Phong Shading 2026-05-18 09:31:05 -03:00
Hanno Witzleb
3ca7c4b752 Unify Tool UI Footer (#12850)
* unify footer
adds "Done" Buttons,
standardize "Reset" Buttons,
adds disabled logic to "Reset" Buttons

* adds ImGuiWrapper::COL_WARNING = ColorRGB:Warning,
replaces ColorRGB::Warning

* consistently display warnings,
moves assermbly warning after footer,
make cut warnings warning color

* adds separator above cut warnings

* adds tooltip entry in move, rotate & scale for auto-drop

* use wrapper tooltip in wrapper->button for consistent text color

* restructures brim ears button,
renames "Reset" button in painting tools to "Erase All",
small styling fixes

* small adjustments,
moves "Edge detection" checkbox in painting tool underneath,
moves "Section View" in Brim ears tool after buttons,
moves warnings in Assemble tool under footer

* small brim ear tool structure changes,
adds separator between "Head Diameter" and "Max angle",
adds tooltip to "Auto-generate" button,
rewords shortcut descriptions to match other tools

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
2026-05-18 12:58:58 +08:00
r3dbaba
1447602d43 Add ability to assign None/Pan/Rotate to mouse buttons (#10736)
* Add logic to handle the left, middle and right buttons being assigned to do nothing, pan or rotate

* Add entries for setting the drag actions to preferences

* Allow the label text in preferences to wrap

* Show mouse mappings in Help -> Keyboard Shortcuts

* Re-add preferences in updated layout

* Add camera mouse options under camera

* Change mouse action strings to use L() for localization

* Display "None" when it is selected instead of blank in keyboard shortcuts

---------

Co-authored-by: Rob O <robertolabode@gmail.com>
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-05-18 08:54:21 +08:00
Ian Bassi
873d0ed26e Graphics Preferences: Anti-aliasing + FPS (#13538)
* Expose Antialiasing velues

Expose Antialiasing multipliers.
Default to 4 as current implementation but enables the user to disable it to improve performante or increase sampling to improve quality.

* FXAA

* Improve descriptions

* Require restart when MSAA setting changes

Detect changes to the OpenGL MSAA (multisample anti-aliasing) preference when opening Preferences and prompt the user to restart the application to apply the change. Adds a constant key for the MSAA setting, stores the previous value, checks for changes (similar to the existing FXAA handling), and shows a warning dialog explaining the restart will close the current project without saving. If the user accepts, recreate_GUI is invoked to apply the MSAA change immediately.

* Revert "Require restart when MSAA setting changes"

This reverts commit dde134d346c3849598c91d025d2faed1b51c8a22.

* Menu and FPS options

* Fix FPS limiter and remove VSYNC

* Grouped FPS settings and mode up rigth fps counter

---------

Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
2026-05-17 13:31:51 +08:00
yw4z
b3bb8604c4 UI fixes / improvements (#12513)
* bbl device selector search box

* align file and more menus with its button

* fix multiline inputbox border color on windows

* fix multiline inputbox border color on windows

* preferences: use content width on combobox dropdowns

* about:  match version text size on macOS

* msg dialog improvements

* fix canvas menu overlapping with sliced plates toolbar

* bbl bind dialog button placement

* bbl color picker

* Update StepMeshDialog.cpp

* drop file dialog

* drop dialog revert fonts

* revert windows multiline border

* Update StepMeshDialog.cpp

* update

* Flushing Volumes: match style of combobox

* fix hyperlink color on canvas notifications

* fix possible issues with shared profiles notification
2026-05-16 01:12:30 +08:00
yw4z
a29d4fc495 Crash fix assembly mode flatpak (#13413)
* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* update

* Update GLCanvas3D.cpp

Co-Authored-By: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>

---------

Co-authored-by: Rodrigo Faselli <162915171+RF47@users.noreply.github.com>
2026-05-09 13:11:26 +08:00
Alen Karnil
087eeaf3df toggle printability of selection with keyboard shortcut (#13279)
* toggle printability of object with keyboard shortcut

* add localization for toggle shortcut
2026-04-26 20:29:20 +08:00
tome9111991
fdff62c796 Fix: collision warnings (#12122)
* Fix: Enable instance collision detection in GCode and Print clearance

Squashed commit containing:
- Fix gcode path conflict detection in ConflictChecker.cpp by iterating all instances.
- Improve clearance validation in Print.cpp by calculating convex hulls per instance (fixes scaling/mirroring issues).
- Added // Orca: comments to mark changes.

* Fix Wipe Tower G-code conflict detection for WipeTower2

* Fix: Improve object/instance selection for collision and validation warnings

- Updated validation logic in Print.cpp to report specific ModelInstance instead of ModelObject for collision/clearance warnings.

- Updated NotificationManager and Plater to handle ModelInstance selection in 'Jump to' links.

- Added fallback to object selection if specific instance cannot be selected.

- Included fixes for G-code conflict detection (ConflictChecker, GLCanvas3D) to also report instances.

- Improved GUI_ObjectList to update canvas selection when items are selected via API.

* Fix: Prevent crash when loading .3mf projects

Moved update_selections_on_canvas() out of ObjectList::select_items() to avoid premature UI updates during loading. Canvas updates are now explicitly called in NotificationManager and Plater callbacks where needed.

* Fix: Address code review comments

- Fix memory allocation for extrusion layers deep copy

- Remove unused variable in GLCanvas3D

- Fix string formatting crash risk in NotificationManager

- Remove dead code in Plater

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-04-26 18:01:41 +08:00
Hanno Witzleb
babbdee5f5 Refactor Tooltip Button (#12848)
refactors tooltipbutton,
one common implementation,
one common shortcut data structure,
add tooltip button to text gizmo,
consistent shortcut wording

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
2026-04-24 15:49:36 +08:00
Alexandre Folle de Menezes
35b2b6212d Fix: Globally fixing the "milisecond" typo in the code (#13329)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-23 10:34:36 -03:00
Hanno Witzleb
f7ef8a14bd Add Feature to disable snapping to buildplate (#11801)
* identified code for snapping to buidlplate

* rename internal name to ensure_on_bed to be consistent, saves option in 2mf, finish Move UI, use in both ensure_on_bed() functions

* makes auto_drop a per-object setting, removes global setting

* remove adUndef, add auto_drop to constructor/serialize

* fixes drop() button

* add "auto_drop" checkmark to "load as single object" dialog,
nothing changes if auto_drop == yes || "load as single object",
if auto_drop == false and "load as single object" == false the objects now retain their relative position to each other

* retains auto_drop (and printable) state when assembling or splitting objects,
adds ObjectList::printable_state_changed()  overload to be able to only provide ModelObject* vector

* adds dialog when splitting to ask if auto_drop should be disabled,
only shows when auto_drop enabled and atleast one volume  floating

* adds arrow indicator on bounding box if auto_drop == false

* removes unneeded code, keeps "auto_drop" naming consistent

* makes for loop simpler in set_printable, set_auto_drop and get_auto_drop,
makes get_auto_drop const,
fixes wording in Snapshot text

---------

Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2026-04-15 22:36:25 +08:00
SoftFever
3e4af2c723 WIP: Add native Wayland support for Linux (#13197)
* Add runtime display backend detection for Wayland support

Add LinuxDisplayBackend utility to detect X11 vs Wayland at runtime
using GDK_IS_X11_DISPLAY / GDK_IS_WAYLAND_DISPLAY macros. This is
the foundation for removing the forced GDK_BACKEND=x11 and enabling
native Wayland support.

- New files: LinuxDisplayBackend.hpp/.cpp with get_linux_display_backend(),
  is_running_on_wayland(), and is_running_on_x11()
- Propagate wxHAVE_GDK_X11 / wxHAVE_GDK_WAYLAND from FindGTK3.cmake
  as compile definitions to libslic3r_gui
- No-op on non-Linux platforms (returns Unknown / false)

* Fix Phase 1 code quality: pragma once, source ordering, static cache

* Make X11 initialization conditional for Wayland support

Remove the unconditional GDK_BACKEND=x11 force that blocked native
Wayland. Replace with conditional logic:

- EGL safety fallback: re-force X11 only when wxUSE_GLCANVAS_EGL is
  off and WAYLAND_DISPLAY is set, with a warning log
- XInitThreads() only called when DISPLAY is set (X11 in use)
- __GLX_VENDOR_LIBRARY_NAME only set when DISPLAY is present (GLX-specific)
- WEBKIT_DISABLE_COMPOSITING_MODE only set under XWayland (both
  DISPLAY and WAYLAND_DISPLAY present)
- Guard X11/Xlib.h include with __has_include for robustness
- Restore display validation to accept either DISPLAY or WAYLAND_DISPLAY

This is Phase 2 of the Wayland support plan.

* Fix Phase 2: safer EGL macro check, add clarifying comments

* Add GLAD2 library and replace GLEW linkage in build system

Set up GLAD2 as a static library to replace GLEW for OpenGL loading.
GLAD2 supports both GLX and EGL, which is required for Wayland support.

- Create src/glad/ with pre-generated GLAD2 sources (GL 4.6 compat)
- Add src/glad/CMakeLists.txt building glad as a static library
- Wire glad into src/CMakeLists.txt before libvgcode
- Modify libvgcode to use shared glad for GL path (keeps local copy
  only for GLES2/Emscripten) to avoid duplicate symbol conflicts
- Replace GLEW::GLEW with glad in libslic3r_gui link libraries

Note: GLEW is kept in deps for OpenCSG. Code migration from GL/glew.h
to glad/gl.h headers will follow in Phase 3B+3C.

* Fix Phase 3A+3D: libvgcode GLAD include, dead files, dlopen dep, OpenGL link var

* Migrate from GLEW to GLAD: replace headers and API calls across codebase

Replace all #include <GL/glew.h> with <glad/gl.h> across 49 source files.
Migrate GLEW API calls to GLAD equivalents:
- glewInit/glewExperimental -> gladLoaderLoadGL()
- GLEW_EXT_* / GLEW_ARB_* extension checks -> GLAD_GL_EXT_* / GLAD_GL_ARB_*
- Remove GLEW-specific EGL/GLX mismatch #error guards (not needed with GLAD)
- Replace unavailable EXT symbols with core GL equivalents in
  GLCanvas3D.cpp (GL_MAX_SAMPLES, glRenderbufferStorageMultisample,
  glBlitFramebuffer, GL_READ/DRAW_FRAMEBUFFER)
- Update log messages from glewInit to gladLoadGL

* Fix Phase 3B+3C: remove GLEW find, clean EXT symbols, update attribution

- Remove find_package(GLEW) block from root CMakeLists.txt since GLEW
  is no longer linked by any main application code
- Remove "glew" from SLIC3R_STATIC option description
- Replace all remaining EXT framebuffer symbols with core equivalents
  in render_thumbnail_framebuffer_ext and _rectangular_selection_picking_pass
- Update AboutDialog credits from GLEW to GLAD

* Enable EGL in wxWidgets and add runtime GLX/EGL selection for Wayland

- Set wxUSE_GLCANVAS_EGL=ON in wxWidgets build and Flatpak manifest
- Add PreferGLX() call on X11 sessions for driver compatibility
- Remove Phase 2 safety fallback (EGL is now always compiled in)
- Guard SwapBuffers against hidden canvases to prevent Wayland stalls

* Fix Phase 4: move PreferGLX to app startup, fix FPS counter guard

Move wxGLCanvas::PreferGLX() from OpenGLManager::create_wxglcanvas()
(static initializer) to GUI_App::on_init_inner() before any wxGLCanvas
is constructed. This prevents a race where SkipPartCanvas could trigger
wxGLBackend::Init() before the GLX preference is set. The new location
also adds explicit is_running_on_wayland() detection with a warning for
unknown backends.

Move increment_fps_counter() inside the IsShownOnScreen() guard so FPS
is only counted when a frame is actually swapped.

* Update GLFW from 3.3.7 to 3.4 for runtime Wayland/X11 backend selection

Replace the compile-time GLFW_USE_WAYLAND flag (which locked to a single
backend) with GLFW 3.4's GLFW_BUILD_WAYLAND + GLFW_BUILD_X11 flags that
build both backends and auto-select at runtime based on the available
display server. This enables the CLI thumbnail renderer to work on both
Wayland and X11 sessions without separate builds.

* wayland: Fix UI call sites that rely on global screen coordinates

On Wayland, wxGetMousePosition() returns (0,0) and SetPosition() is a
no-op for top-level windows. Fix the highest-impact call sites:

- GLCanvas3D: Use cached m_mouse.position from event handlers instead
  of wxGetMousePosition() + ScreenToClient() in get_local_mouse_position()
- Plater: Use event-relative coords via ClientToScreen(e.GetPosition())
  instead of wxGetMousePosition() in 3 leave-window handlers
- BBLTopbar: Use event.GetPosition() and FindToolByPosition() directly
  in mouse handlers instead of wxGetMousePosition()/FindToolByCurrentPosition()
- Search: Use focus-based dismiss logic on Wayland instead of
  wxGetMousePosition()-based rect checks in SearchDialog and
  SearchObjectDialog
- GUI_App: Skip SetPosition() in window_pos_restore() on Wayland where
  it is a no-op; still restore size and maximize state
- Button: Position tooltip relative to button widget via ClientToScreen
  instead of wxGetMousePosition()

* Fix SearchDialog Wayland dismiss: guard against search_line focus

* flatpak: Add Wayland socket permission for native Wayland support

* spec

* Fix crash on Wayland when wxWidgets lacks EGL support

Restore the safety fallback that forces GDK_BACKEND=x11 when wxWidgets
was not built with wxUSE_GLCANVAS_EGL=ON. Without this, the GLX backend
tries to access a non-existent X11 display on native Wayland, crashing
in wxGLCanvas::IsDisplaySupported() with SIGSEGV at offset 0xe4.

Also add a defense-in-depth guard in detect_multisample() that skips
the IsDisplaySupported call entirely on Wayland without EGL.

Root cause: deps/wxWidgets must be rebuilt after enabling EGL. The
compile-time check in OrcaSlicer.cpp detects the mismatch and falls
back safely.

* Fix EGL detection: use wxHAS_EGL instead of wxUSE_GLCANVAS_EGL

wxUSE_GLCANVAS_EGL is a CMake build option, NOT a C++ preprocessor
macro. The actual macro defined in wxWidgets setup.h is wxHAS_EGL.
All compile-time EGL checks were using the wrong macro, causing
the safety fallback to always trigger even with a properly built
EGL-enabled wxWidgets.

* Fix GL function pointers invalidated on Wayland/EGL

gladLoaderLoadGL() dlopen's libGL.so.1 to resolve GL function pointers
via dlsym, then immediately dlclose's the handle. On X11/GLX this is
fine because the GLX context keeps libGL.so mapped. On Wayland/EGL,
nothing else holds libGL.so open, so dlclose unmaps it and all function
pointers become dangling — causing SIGSEGV on the first GL call.

Fix: on Wayland, use gladLoadGL(eglGetProcAddress) which resolves
function pointers through the EGL loader without opening/closing
libGL.so.

* fix crash on start and various rendering issues

* fix crash on close

* small refactor

* move GPU selection to desktop file

* clean up a bit

* clean up more

* fix appimage error
2026-04-13 19:45:39 +08:00
goofoo
afc3756843 fix+feat: Snapmaker U1 — 5 bug fixes and 0.6mm / mixed-nozzle profiles (#12244 #12390 #12652 #12073 #12797 #11424) (#12824) 2026-04-08 12:08:35 +08:00
Rodrigo Faselli
7d21cf78c7 💥Fix crash when return from assembly mode linux (#13091)
* Fix return from assembly linux

* Tie deferred callback to canvas lifetime and add shutdown guards

Use m_canvas->CallAfter instead of wxGetApp().CallAfter to ensure the callback is only executed if the canvas is still alive.
Add early returns if wxGetApp().is_closing() is true before accessing plater or the 3D canvas, reducing the risk of use-after-free during application shutdown.
Addresses feedback regarding potential UI teardown race conditions.

* copilot suggestion

* Use local reference to wxGetApp() in Return button callback

Replace multiple calls to wxGetApp() with a single local reference
to improve readability and avoid redundant function calls.
2026-04-06 14:06:48 +08:00
Rodrigo Faselli
aa51d1965f Don't steal focus from text inputs on mouse (#12834)
In GLCanvas3D::on_mouse, avoid calling SetFocus when the currently focused window is a text input control (wxTextCtrl, wxComboBox or wxSpinCtrl). This prevents deselection bugs when the mouse leaves the window while a text control is focused. Also commented out explicit wx text-control includes near the top of the file.

Only TextCtrl needed

cleaning

Removed unused wxWidgets header includes.

Update GLCanvas3D.cpp

Co-authored-by: yw4z <yw4z@outlook.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
2026-04-05 13:53:41 +03:00
SoftFever
c06a0223a7 Fix 3D canvas blank area during window resize after wxWidgets 3.3.2 upgrade 2026-03-28 15:46:34 +08:00
SoftFever
779a36bf8b fix a regresion that the "search in preset" popup dialog will dismiss itself when move the cursor out of the dialog.
The regression is casued by 382cf57166 ("Fix hotkeys blocked in Prepare view when notification is shown")
2026-03-28 13:04:20 +08:00
SoftFever
85390a9da0 Guard wxToolTip::GetToolTipCtrl() for wx 3.3 and add explicit wx/utils.h includes
- 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.
2026-03-24 21:02:37 +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
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
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
SoftFever
382cf57166 QoL: Fix hotkeys blocked in Prepare view when notification is shown (#12715)
Fix hotkeys blocked in Prepare view when notification is shown

Restore SetFocus() in the GLCanvas3D mouse-entering handler so the
canvas reclaims wxWidget keyboard focus whenever the mouse enters it
(provided the main window is active). Without this, clicking a sidebar
control or a UI update triggered by slicing could leave the canvas
without focus, causing hotkeys like Tab to stop working until the user
clicked the canvas or dismissed the notification.
2026-03-10 15:57:15 +08:00
Derrick
e8b2fa3a32 Fix zoom button tooltip width miscalculation (#12692)
wx strings to be converted to utf-8 before doing width calculation for consistency.
 
 JIRA-127
2026-03-09 18:22:37 +08:00
Alexandre Folle de Menezes
d54adafdaa Grammar and spelling fixes on GUI strings (#12410) 2026-03-03 17:36:42 -03:00
SoftFever
a38af4d85a fix missing translations for Canvas Toolbar Menu 2026-03-01 01:15:14 +08:00
yw4z
095b5116ac Add option for hiding / showing gridlines (#10545)
Might be useful who want to use custom grid line system with textures. or a clean look

### PROBLEM / SCENARIOS
• Custom made textures overlapping with grid system. so it might be confusing for user if want to use specific markings
• User may found its a distracting item and wants a clean look

### SOLUTION
added to view menu
<img width="477" height="434" alt="Screenshot-20251230192707" src="https://github.com/user-attachments/assets/e298d9b2-5f8f-4e33-af22-ea7c84c9b5b8" />

added to canvas menu
<img width="278" height="297" alt="Screenshot-20251230192717" src="https://github.com/user-attachments/assets/a9952408-a361-4e64-ad9a-72e2480c74cf" />

Clean look without gridlines
<img width="1669" height="1157" alt="Screenshot-20250827144140" src="https://github.com/user-attachments/assets/9229f330-9543-4d39-a8fc-01deb9b61336" />

<img width="1669" height="1157" alt="Screenshot-20250827144212" src="https://github.com/user-attachments/assets/ab3848fb-74d7-4618-8bc7-0cdff10a3804" />


Few Examples with custom made textures / markings without gridlines
<img width="1669" height="1157" alt="Screenshot-20250827140008" src="https://github.com/user-attachments/assets/5d7b17ab-e97a-489c-9e4d-99157a37b6b7" />

<img width="1669" height="1157" alt="Screenshot-20250827141904" src="https://github.com/user-attachments/assets/a7e0f360-a85a-489d-9bc2-39286984643a" />
2026-03-01 00:19:04 +08:00
Alexandre Folle de Menezes
72a4597107 Fix GUI strings that should start with uppercase (#12499) 2026-02-27 11:19:22 -03:00
Yves
1952442e18 Restore select all plates as its own action (#12256)
restore select all plates as its own function

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-02-13 16:24:59 +08:00
Yves
08afbefa56 Change Ctrl+A behavior from all plates to current plate only (#12236)
Change CTRL-A behavior from ALL Plates to current plate only
2026-02-11 16:08:21 +08:00
discip
49413e7990 fixing typo in #12218 (#12239)
Change slope global use configuration to show overhang

Unfortunately there was a typo in #12218

This should fix it.
2026-02-11 16:07:23 +08:00
Sabriel-Koh
9950662ddf Fix: box selection selecting wrong object in orthogonal view (#12230)
# Description
When using box selection with the orthogonal view, unexpected objects end up getting selected.
Fixed by setting the selection camera to use the same view as the display camera.

Fixes #5895

# Screenshots/Recordings/Graphs
Bugged:

https://github.com/user-attachments/assets/e98fcbb1-0f01-43dd-a3d5-cb0af97e226e

Fixed:

https://github.com/user-attachments/assets/f84e801c-d595-4394-b42f-ed8758413980

## Tests
Tested the selection in both perspective and orthogonal.
2026-02-10 22:31:51 +08:00
Sabriel-Koh
cae1567726 fix: Show Labels and Show Overhang toggles not being saved (#12218)
* fix: Show Labels and Show Overhang toggles not being saved

* refactor: use get_bool and add comments
2026-02-09 22:27:03 +08:00
Derrick
e14e186bb7 Fix wipe tower loaded outside of plate boundaries (#12191)
* Add checks to snap wipe tower back to origin when it was loaded outside the plate boundary

* Fix Wipe Tower preview outside plate boundary and warning notification

- snaps wipe tower preview to nearest edge if it was loaded outside of plate boundary.
- Added warning notification to notify position change
2026-02-09 22:25:41 +08:00
Derrick
e6e6210120 Fix extruder name >2 extruder printers (#12190)
Fix for memory access violation when using printers other than bbl printers with >2 extruders.

JIRA-24
2026-02-06 16:55:35 +08:00
Valerii Bokhan
98cb91110e Fix: Free camera panning/rotating fixed (#12174)
Fixes #10266
2026-02-05 19:57:23 +00:00
yw4z
d608d7dffe UI Fixes / Improvements (#12069)
* clone dialog - spin input stuck on selected

* fix advanced toggle label

* fix scrollbar appearing on project page welcome screen

* create slicing section on preferences

* reduce margins on tabs

* bbl part skip dialog

* Update filament_not_mactch.svg

* Update icon_qusetion.svg

* match hyperlink color on notifications

* fix position of notifications on slicing errors

* match background color of BBL > Calibration tab > Sidebar

* match look of BBL sidebars

* match bbl monitor icons

* match multi-device page margins

* bbl > monitor > print control buttons

* fix flush dialog showing text selection on buttons

* Printer network dialog > match combo box width
2026-02-04 11:40:02 +00:00
SoftFever
1b355be432 Merge branch 'main' into libvgcode 2026-01-06 11:09:09 +08:00
yw4z
0330e86007 Introduce canvas menu (#11618)
* init

* update

* Update GLCanvas3D.cpp

* Update GLCanvas3D.cpp

* cleanup

* fix icon size

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
2025-12-31 00:02:48 +08:00
Ioannis Giannakas
d6815653f4 Merge branch 'main' into libvgcode 2025-12-18 12:55:11 +00:00