* 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>
changes "Pen size" to "Brush size",
moves "On overhangs only" underneath "Brush Size" and rephrases as "On highlighted overhangs only" in all translations
Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
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>
restructure painting tools
place "On Overhangs only" checkbox under Overhand slider,
place "Vertical"/"Horizontal" checkboxes under pen size,
move some separators,
fix changing window width in MMUSegmentation,
show "Section View" slider for gap fill too
Co-authored-by: Hanno Witzleb <hannowitzleb@gmail.com>
* 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
* SPE-2486: Refactor function apply_mm_segmentation() to prepare support for fuzzy skin painting.
(cherry picked from commit 2c06c81159f7aadd6ac20c7a7583c8f4959a5601)
* SPE-2585: Fix empty layers when multi-material painting and modifiers are used.
(cherry picked from commit 4b3da02ec26d43bfad91897cb34779fb21419e3e)
* Update project structure to match Prusa
* SPE-2486: Add a new gizmo for fuzzy skin painting.
(cherry picked from commit 886faac74ebe6978b828f51be62d26176e2900e5)
* Fix render
* Remove duplicated painting gizmo `render_triangles` code
* SPE-2486: Extend multi-material segmentation to allow segmentation of any painted faces.
(cherry picked from commit 519f5eea8e3be0d7c2cd5d030323ff264727e3d0)
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
* SPE-2486: Implement segmentation of layers based on fuzzy skin painting.
(cherry picked from commit 800b742b950438c5ed8323693074b6171300131c)
* SPE-2486: Separate fuzzy skin implementation into the separate file.
(cherry picked from commit efd95c1c66dc09fca7695fb82405056c687c2291)
* Move more fuzzy code to separate file
* Don't hide fuzzy skin option, so it can be applied to paint on fuzzy
* Fix build
* Add option group for fuzzy skin
* Update icon color
* Fix reset painting
* Update UI style
* Store fuzzy painting in bbs_3mf
* Add missing fuzzy paint code
* SPE-2486: Limit the depth of the painted fuzzy skin regions to make regions cover just external perimeters.
This reduces the possibility of artifacts that could happen during regions merging.
(cherry picked from commit fa2663f02647f80b239da4f45d92ef66f5ce048a)
* Update icons
---------
Co-authored-by: yw4z <ywsyildiz@gmail.com>
* Make the region compatible check a separate function
* Only warn about multi-material if it's truly multi-perimeters
* Improve gizmo UI & tooltips
---------
Co-authored-by: Lukáš Hejl <hejl.lukas@gmail.com>
Co-authored-by: yw4z <ywsyildiz@gmail.com>
* Flushing volumes button background color for active state
* Sliced plates bar > Use different colors on plate numbers for light / dark theme
* Remove 3D navigator background
* Device & Project Tab > Sidebar > Selected tab background color
* Merge branch 'SoftFever:main' into color-fixes-3
* Correct sidebar button color for light mode for bbl monitor / calibration and project page
* Homepage fixes
* Fix parameters group title color too bright on dark theme
* Search popup hovered item background color
* Sidebar > Search box > match border color with other input/combo boxes
* fix indents
* Add descriptions to statecolors
* Paint gizmos > remove background of non active Tool / Brush buttons on dark mode
* Merge branch 'SoftFever:main' into color-fixes-3
* Top bar / Main tab bar button hover background
* Fix broken color change from last merges
* Gizmos selected text background
* Keyboard shortcuts window selected tab bg color
* About page link color
* Project page fixes
* match disabled text color on combo boxes with input boxes
* Use better background color for disabled elements on dark mode
* match all colors for disabled elements
* BBL > Monitor tab > Add printer text and icon not visible on dark theme
* even darker bg color for homepage thumbnails
* Sidebar arrow not visible
* Better bg color for row highlighting
* match style of gizmo combo box
* Merge branch 'SoftFever:main' into color-fixes-3
* Revert changes for main tab bar background color of button while hover
* Sidebar > Height range > Add / Delete range icons
* Add icon for Object list > Layers (Height Range)
* Add icon for Object list > Range (Hight Range item)
* Add icon for Object list > Support / Color painting
* File Renamed for Calibration Tab
* Update Sidebar icons
* Add icon for CrossHatch fill pattern
* Delete leftover icons from previous commit
* Update Filament Settings icons
* Update Machine Settings icons
* Update plaholders editor icons
* Fix for Printer Setting > Extruder icons and Add support for icons for its tabs
* Update undefined category icon on compare window with low res compatible one
* Update toolbar > variable layer height icon
* Fix warning icon on Emboss & SVG gizmo
* Delete leftover icons from previous commit
* Gizmos > Keyboard cheat sheet icon resolution fix
* Combo box arrow resolution fix
* Delete leftover icons from previous commit
* Update plate & toolbar icons
* Fix: ComboBox > Dropdown menu checkmark not visible on light theme
* Delete leftover icons from previous commit
* Restore icons for plate rename
* Swap directions of notification expand / collapse icons
* Mixed
• Increases contrast of icons on light theme
• Removes opacity from edit, delete, search... icons
• Fixes different color for advanced toggle on dark mode
• Fixes checkboxes not aligned with other boxes
• Style fixes for checkboxes
* Fix some colors not changing
* Slightly changed color paint icon
Spray icon is now taller and fits better with brush icon on seam / support paint
* Minor changes on seam and support related icons
* Fix blurry icons that vertically centered on gizmos
* Update warning icon on dialogs
* Fix plate icons rendering issue
* Update icons for Gap fill and Fill on color paint and add icon for Skirt
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Update plate name & number colors
* Update sliced plates selected item border color and "All Plates Stats" text color
* Simplify gizmo update slider thumb and text color
* Update confirm button hover color
* Fix assembly info titlebar not compatible with dark mode
* Update selected tab color on set filaments to use window
* Update gCode viewer text colors
* Update color of selection rectangle
* Update gcode view slider value text color
* Paint gizmos update colors for tool / brush buttons
* Update colors of gizmo radio buttons
* Update combined slider thumb color for gizmos
* Update header color for gizmos
* Update titlebar buttons background color while hover
* Fix side bar header background not uses correct color for dark theme
* Update background colors of focused Combo box and checked item on Dropdown
* Revert changes for gCode Window text colors
* Revert changes for plate name / number text color
* Update background color of Sliced Plates list > Scrollbar
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
* Rework UI jobs to make them more understandable and flexible.
* Update Orca specific jobs
* Fix progress issue
* Fix dark mode and window radius
* Update cereal version from 1.2.2 to 1.3.0
(cherry picked from commit prusa3d/PrusaSlicer@057232a275)
* Initial port of Emboss gizmo
* Bump up CGAL version to 5.4
(cherry picked from commit prusa3d/PrusaSlicer@1bf9dee3e7)
* Fix text rotation
* Fix test dragging
* Add text gizmo to right click menu
* Initial port of SVG gizmo
* Fix text rotation
* Fix Linux build
* Fix "from surface"
* Fix -90 rotation
* Fix icon path
* Fix loading font with non-ascii name
* Fix storing non-utf8 font descriptor in 3mf file
* Fix filtering with non-utf8 characters
* Emboss: Use Orca style input dialog
* Fix build on macOS
* Fix tooltip color in light mode
* InputText: fixed incorrect padding when FrameBorder > 0. (ocornut/imgui#4794, ocornut/imgui#3781)
InputTextMultiline: fixed vertical tracking with large values of FramePadding.y. (ocornut/imgui#3781, ocornut/imgui#4794)
(cherry picked from commit ocornut/imgui@072caa4a90)
(cherry picked from commit ocornut/imgui@bdd2a94315)
* SVG: Use Orca style input dialog
* Fix job progress update
* Fix crash when select editing text in preview screen
* Use Orca checkbox style
* Fix issue that toolbar icons are kept regenerated
* Emboss: Fix text & icon alignment
* SVG: Fix text & icon alignment
* Emboss: fix toolbar icon mouse hover state
* Add a simple subtle outline effect by drawing back faces using wireframe mode
* Disable selection outlines
* Show outline in white if the model color is too dark
* Make the outline algorithm more reliable
* Enable cull face, which fix render on Linux
* Fix `disable_cullface`
* Post merge fix
* Optimize selection rendering
* Fix scale gizmo
* Emboss: Fix text rotation if base object is scaled
* Fix volume synchronize
* Fix emboss rotation
* Emboss: Fix advance toggle
* Fix text position after reopened the project
* Make font style preview darker
* Make font style preview selector height shorter
---------
Co-authored-by: tamasmeszaros <meszaros.q@gmail.com>
Co-authored-by: ocornut <omarcornut@gmail.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
1.selected tool item in support,seam,mmu will be invalid after swich dark mode
2.add reset direction button in mmu
3.if don't switch dark mode in prepare page,toolbar doesn't change color
Change-Id: Ibaaaee5c0cc03f66682f5eb0daafcd143b9d9edc
1. support to adjust cursor size and section view by key + mouse wheel
2. display shortcut tips according to the selected tool type
3. change the left mouse behavior to object movement for color painting tool
Signed-off-by: yifan.wu <yifan.wu@bambulab.com>
Change-Id: I13d2a83d562d6ccd8d915158e263a90ad3c02db0
display hms msg in HMS tab of Monitor
Change-Id: I4df1c63b104463ba62cdf7eb079a540a4176f8c5
Signed-off-by: Stone Li <stone.li@bambulab.com>
(cherry picked from commit f4635d18f3383e70177536dfbe5edf2e1370b746)
1. optimize color painting performance
2. fix the issue that painting does not show if moving fast after bucket
fill
Signed-off-by: yifan.wu <yifan.wu@bambulab.com>
Change-Id: I72204aac81b14c87edb602677abeef13ee0fad8f
(cherry picked from commit 02560f31c413cb561800fca242f8ef30504d0384)