Commit Graph

42577 Commits

Author SHA1 Message Date
wmayer
1886bcda00 App: Fix crash in Transaction::addObjectChange
It can happen that TransactionFactory::createTransaction() fails to create a transaction object because an unsuitable type is passed
(like BadType) and returns a null pointer.

The calling instances (Transaction::addObjectChange, Transaction::addObjectDel, Transaction::addObjectNew, Transaction::addOrRemoveProperty)
do not check for a null pointer and thus cause a segmentation fault by dereferencing it.

To fix the issue change the above methods to explicitly handle a null pointer.

This fixes issue 21095.

Note: In this case it's caused by the class ViewProviderFace which on purpose isn't added to the type system so that its type will be BadType.
2026-01-30 10:58:09 +01:00
wmayer
60b0221402 App: Optimize PropertyMaterialList::getDiffuseColors()/getTransparencies() 2026-01-30 10:58:09 +01:00
wmayer
8062fadbd4 App: Replace C macros with lambda expression 2026-01-30 10:58:09 +01:00
wmayer
93ee3a3475 App: Remove assert() from PropertyXLink::Restore
If the property is added to a view provider then in debug mode this will
cause a crash while in release mode this will cause undefined behaviour
because of a static_cast.

To fix crashes remove the assert() and replace the static_cast with
freecad_cast.
2026-01-30 10:58:09 +01:00
wmayer
dace71205f App: In ProjectFile::loadDocument() check for parse errors
In case a parse error occurred then return with false and do not set the DOMDocument
2026-01-30 10:56:05 +01:00
wmayer
56e687d9cc App: Refactor PropertyExpressionEngine::afterRestore()
Put the reading of each expression of an object into a try/catch block. This is to avoid that all expressions of an object may be lost.

This mitigates the issue 19866
2026-01-30 10:56:05 +01:00
wmayer
3fba587044 App: In ExpressionParser::parse add the failing expression text to the error message 2026-01-30 10:56:05 +01:00
wmayer
2799aa2700 App: Simplify and fix code for ifcopenshell version check 2026-01-30 10:56:05 +01:00
Leandro Heck
2c25b65b92 Fix warning of widgets with the same name. 2026-01-29 20:20:46 +01:00
Chase Naples
b182ebdfd6 Docs: update Link copyOnChange tooltip (#26603) 2026-01-29 17:46:32 +00:00
Yash Suthar
b47bb64398 Core: redirect to toolbar creation if user tries to add function when there is nothing in Tree
Signed-off-by: Yash Suthar <yashsuthar983@gmail.com>
2026-01-29 16:09:48 +01:00
Roy-043
0f2bdf280f Draft: fix autogroup behavior if active group is a layer (#27102) 2026-01-29 15:38:55 +01:00
PaddleStroke
00c3422c1f Sketcher: Tooltip when hovering expression driven constraint (#25954) 2026-01-29 15:04:40 +01:00
timpieces
ad6c6bc8fd Gui: Default load/save img to working directory (#26182)
- FileOptionsDialog is only used in the 'save screenshot / save image'
  codepath, and currently it doesn't set a directory to it defaults to
  process CWD, which is surely not what the user wants.
- The load image codepath uses a custom QFileDialog instead of the
  helper code in FileDialog, there doesn't seem to be a great reason for
  this, although the helper doesn't have support for mime types it seems.
- I haven't changed the dialogs to 'set/store' the working directory. I'm
  not sure this is desired as this isn't a 'normal' save/load operation.
- It would be ideal to remove the FileOptionsDialog in future. The
  extended functionality could be turned into a separate dialog which
  opens before or after the file chooser. This would allow native dialogs
  to be used and would unify the code paths for file selection.
- Further, it would be nice to just merge at least the load image into
  the existing import/open option, and to put 'save image' next to
  'export', but those changes may be much more time consuming.

For now I've kept it simple. Let's see what others think.
2026-01-29 14:08:48 +01:00
Krrish777
32ee950210 Improve UX for Rename Property Group with tooltip 2026-01-29 14:07:28 +01:00
Roy-043
c2504d2639 BIM: fix typos in #27213 (#27225) 2026-01-29 13:04:19 +00:00
Roy-043
4f7b473a4a TechDraw update some GUI texts (Title Case mod) (#26849)
* Menu text "Align Horizontal/Vertical Chain Dimensions" to match "Align Oblique Chain Dimensions"

* Menu text "Centerline Between 2 Faces" is not correct.

* Update button text "Replace References With Current Selection" to title case

* Change task panel title from 'Add offset vertex' to 'Offset Vertex'

* Correct text casing for 'Pick points' button

* Correct text casing for 'Pick points' and 'Edit points'

* Fix capitalization of task panel section title

* Correct text case for 'Escape Picking' button

* Update texts for centerline buttons to match menu texts
2026-01-29 14:01:56 +01:00
sliptonic
63dba7bb64 Merge pull request #26951 from chennes/libe57formatTo330
LibE57format to v3.3.0
2026-01-29 06:33:59 -06:00
Chris Hennes
a00db89f57 Merge pull request #25196 from pieterhijma/doc-application
Doc: Improve the documentation of Application
2026-01-29 13:31:09 +01:00
Chris Hennes
c74ac37488 Merge pull request #25195 from pieterhijma/doc-document
Doc: Improve the documentation of Document
2026-01-29 13:29:43 +01:00
sliptonic
836c0c0d2e Merge pull request #25534 from chennes/msvcBlanketWarningDisabling
Build: Remove blanket disabling of deprecation warnings
2026-01-29 06:27:19 -06:00
PaddleStroke
a0847c22c7 Sketcher: fix logic flaw in ConstraintLineByAngle 2026-01-29 13:15:42 +01:00
Chris Hennes
96e4071e2d Merge pull request #27134 from WandererFan/CosCircleLineStyle2
TechDraw: Fix circle centerline default line style
2026-01-29 13:14:39 +01:00
Chris Hennes
63e0c0ff49 Merge pull request #27094 from WandererFan/ProjGroupDragGoesToOrigin4
TechDraw: Projection Group jumps to origin
2026-01-29 12:52:59 +01:00
Kacper Donat
4dda92e599 Part: Fix regressions in MultiCommon boolean operation
This commit addresses two regressions in the MultiCommon feature:

1. Computation Logic: Fixed an issue where the common operation was
   calculated as the intersection of the first shape with the union of
   the rest (the default behavior of makeElementBoolean). It now
   correctly computes the intersection of all shapes sequentially.

2. Compound Handling: Added logic to expand a single compound input
   into its constituent shapes. Previously, a compound was treated
   as a single entity, leading to incorrect intersection results.

To maintain backward compatibility, a hidden 'Behavior' property is
introduced. This ensures that documents created in FreeCAD 1.0, which
rely on the previous behavior, continue to render as originally
intended while new objects use the corrected logic.
2026-01-29 12:40:20 +01:00
Vassily Checkin
d3d6459484 Sketcher: fix intermittent crash on sketch exit 2026-01-29 11:42:04 +01:00
Timothy Miller
9eed3a8d77 Part: Fix mirror() regression with non-identity Placement (#26963)
* Part: Fix mirror() regression with non-identity Placement

The makeElementMirror() function incorrectly extracted and pre-multiplied
the shape's Location with the mirror transform. Since BRepBuilderAPI_Transform
already handles shapes with Location correctly, this resulted in the placement
being applied twice, producing incorrect results for shapes with non-identity
Placement.

Fixes #20834

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Part: Add regression test for mirror() with Placement

Adds testTopoShapeMirrorWithPlacement to verify that mirror() produces
identical results regardless of whether the shape is positioned via
direct coordinates or via Placement.

This test would have caught the bug fixed in the previous commit where
shapes with non-identity Placement produced incorrect mirror results.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix regression test for mirror with Placement

The test was incorrectly trying to create equivalent boxes using
different methods that don't actually produce the same geometry.
Part.makeBox with a direction vector is not equivalent to setting
a Placement with rotation.

Fixed to use the correct approach that demonstrates the actual bug:
- Method 1: Box with geometry at (0,30,0), identity Placement
- Method 2: Box with geometry at origin, moved via Placement

Both should produce identical mirror results, which they now do
with the makeElementMirror() fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Timothy Miller <theosib@zeromark.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:05:35 +01:00
graelo
b0a9c6ea4b Fix quicklook appex build (#27144) 2026-01-29 08:23:04 +01:00
Roy-043
104089179c BIM: fix title case of GUI texts (#27213) 2026-01-28 21:08:27 +01:00
PaddleStroke
7bcaa766de Sketcher: Fix arc angle dragging distance 2026-01-27 16:33:30 +01:00
PaddleStroke
caff52b1ed Assembly: fix sub assembly joint bug (#27172) 2026-01-26 19:23:07 +01:00
sliptonic
1446a91bdc Merge pull request #26534 from alfrix/wayland_fix
Gui: fix skip grabMouse on Wayland
2026-01-26 11:03:58 -06:00
sliptonic
bf92b99dad Merge pull request #27137 from Lgt2x/speedup-expression-completer
Expression Completer: speedup property completion
2026-01-26 11:01:30 -06:00
sliptonic
32bb7d94eb Merge pull request #27084 from chennes/catchOSErrOnBadDrive
App: Catch `OSError` during initialization with bad library dir
2026-01-26 10:52:58 -06:00
sliptonic
533b1be963 Merge pull request #27107 from PaddleStroke/asm_3patches
Assembly: Fix Assembly activation issues.
2026-01-26 10:51:28 -06:00
sliptonic
ad23c0de17 Merge pull request #27116 from chennes/updateCopyrightYear
Core: Update copyright year to 2026
2026-01-26 10:49:40 -06:00
Chris
3f49793794 cam: attempt to fix issue #26652 ie. fix issue with state of recompute button for tool bit (#26884)
* cam: attempt to fix issue #26652 ie. fix issue with state of recompute button for tool bit

* add unit test for issue #26652

* run precommit

* relocate `purgeTouched()` call to end of `_update_visual_representation` function
2026-01-26 10:42:20 -06:00
PaddleStroke
9b6de80231 Update UtilsAssembly.py 2026-01-26 11:35:38 +01:00
freecad-gh-actions-translation-bot
d574623a2e Update translations from Crowdin 2026-01-26 10:11:06 +01:00
PaddleStroke
b4025abab6 Assembly: Change Joint References to remove cyclic dependency. (#25513)
* Assembly: Change Joint References to remove cyclic dependency.

* Update JointObject.py

* Update TestCore.py

* Update JointObject.py

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update AssemblyUtils.cpp

* Update UtilsAssembly.py

* Update JointObject.py

* small fix for link groups

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-26 09:44:59 +01:00
Chris Hennes
4db0eaf171 Base: Auto-inject copyright year 2026-01-26 09:44:57 +01:00
captain0xff
11d22e326c Gui: Prevent the editing root from getting clipped 2026-01-25 10:46:36 +01:00
Captain
6aee8b81c9 PartDesign: Added interactive gizmo for draft operation (#27111)
* PartDesign: Add interactive gizmo for draft operation

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-25 00:00:07 +01:00
pre-commit-ci[bot]
78f38d5c15 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2026-01-24 21:23:51 +00:00
Louis Gombert
d10bd05689 Expression Completer: speedup property completion using cache
Cache object property list in expression completer, so it is not rebuilt for every requested index. This helps with performance when an object has a large number of properties.
2026-01-24 22:11:18 +01:00
sliptonic
1a956b0f01 Merge pull request #24617 from petterreinholdtsen/cam-pre-post-dedup
CAM: Ensure pre-/postamble help text matches active values by avoiding duplication.
2026-01-24 12:03:38 -06:00
Morten Vajhøj
356fe85d01 Measurement: Added support for cylindrical surfaces (#27044)
* Added support for cylindrical surfaces

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Removed unnessecary sign

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Reverted change

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-24 17:12:16 +01:00
wandererfan
b8f09bd758 [TD]clang warnings 2026-01-24 08:40:51 -05:00
wandererfan
29066c1a53 [TD]fix circle centerlines line style 2026-01-24 08:40:46 -05:00
PaddleStroke
c9041132f9 Sketcher: add switch between radius and diameter (#26794) 2026-01-23 21:39:46 +00:00