Commit Graph

41923 Commits

Author SHA1 Message Date
wmayer
4cfc77d9ee Gui: Move define HAS_QTBUG_129596 to separate header file 2025-05-30 18:04:33 +02:00
wmayer
892d636a37 Gui: Fix crash in ~PythonBaseWorkbench with Python 3.12 2025-05-30 18:04:33 +02:00
wmayer
3888899e7c Gui: avoid code duplication in PythonEditor 2025-05-30 18:04:33 +02:00
wmayer
9497ddf5e1 Gui: Replace calls of FCMD_SET_EDIT with Gui::cmdSetEdit 2025-05-30 18:04:33 +02:00
wmayer
dec434e153 Gui: Handle exception when trying to start editing an object 2025-05-30 18:04:33 +02:00
wmayer
da6bafe246 Gui: Fix crash in Command::keySequenceToAccel
If FreeCAD is loaded without GUI it isn't allowed to access the
QKeySequence class as it will cause a crash. So, it checks
beforehand if QApplication::instance() is null.

This fixes issue 16407
2025-05-30 18:04:33 +02:00
wmayer
a0899cc65d Gui: Improve document recovery
When checking for recovery files also check for validity of the
actual project file. In case it's broken but has a never date
then still process the recovery file.

This is done to reduce the chance of data loss as described in
issue 18044
2025-05-30 18:04:33 +02:00
wmayer
87fca2c943 Gui: Use QDialogButtonBox in DlgExpressionInput
This way the order of buttons is more consistent than using
separate QPushButtons.

This fixes issue 19902
2025-05-30 18:04:33 +02:00
wmayer
efe02a8675 Gui: Fix stackoverflow when loading corrupted file
If an object has a link to itself it may cause a stackoverflow
in several cases:
* If the method claimChildren3D() returns a list containing the
  object of the view provider then Document::handleChildren3D()
  will add a SoGroup to itself as a child. This will result into
  a stackoverflow as soon as an action traverses the scene.
* If the method claimChildren() returns a list containing the
  object of the view provider then DocumentItem::createNewItem()
  causes an infinite loop with DocumentItem::populateItem()

Solution:
* Inside Document::handleChildren3D() avoid to add a SoGroup to itself
* In this specific case fix ViewProviderCoordinateSystem::claimChildren()
  to avoid a cyclic dependency

Hint: Since PR 18126 FreeCAD is vulnerable for this problem.

This fixes issue 19682
2025-05-30 18:04:33 +02:00
wmayer
59717fc607 Gui: Fix crash when trying to transform link object
This is a regression caused by PR 17564.

ViewProviderDragger has the member 'forwardedViewProvider' that is used
to handle the editing by the parent object. This means that inside
ViewProviderLink::startEditing 'transformDragger' can be null but this
isn't checked so that accessing the member causes a segmentation fault
or a failing assert in debug mode, respectively.

Solution:
Make sure that transformDragger is not null before accessing it.

This fixes 19542.
2025-05-30 18:04:33 +02:00
wmayer
c21b330a98 Gui: Fix command StdCmdProperties
The command is only able to show the property view in case it's
invisible. But it fails to raise the widget. And if in the preferences
'Combined' mode is set it fails completely.

Solution:
The method DockWindowManager::activate already does everything what's
needed. Now the command only must be changed to access the right
docked widget.
2025-05-30 18:04:33 +02:00
wmayer
55a9123040 Gui: Make AccelLineEdit a subclass of QKeySequenceEdit
The class QKeySequenceEdit already implements the relevant
functionality and properly handles shortcuts using the Shift key.

This fixes issue 19320
2025-05-30 18:04:33 +02:00
wmayer
05feaea9bd Gui: Do not round color values set in property editor
Do not use the number of decimals from the user settings to pass
the material to the property as this will cause some unexpected
rounding effects.

This fixes issue 19048
2025-05-30 14:21:53 +02:00
wmayer
0cce0f14bf Gui: Fix DlgPreferencesImp::minimumDialogWidth() to return a reasonable width
The current implementation always returns a width that is too small
so that a scrollbar is shown. Especially on the General page this is
unfortunate as some important controls are truncated or completely
hidden.

Another problem of this implementation is that when loading a not
yet loaded workbench in the 'Available workbenches' page then the
computed size will be by far too high leading to a dialog that all
the sudden covers most of the screen.

Solution:
The correct width is the sum of:
width of the tree view + width of the biggest page + spacing of the layout
This fixes both of the above problems.
2025-05-30 14:21:53 +02:00
wmayer
d969045bd9 Gui: Fix several methods in Workbench to list all items
* Fix Workbench::listToolbars() to also return custom toolbars or added by a manipulator
* Fix Workbench::getToolbarItems() to also return custom toolbars or added by a manipulator
* Fix Workbench::listMenus() to also return menus added by a manipulator

Fixes issue 18647
2025-05-30 14:21:53 +02:00
wmayer
8b11c0672b Gui: Adjust transform dragger after undo/redo
When performing undo/redo after tansforming an object it flips back
to its original position but the dragger does not.

This commit set the dragger's placement to the object placement.

Fixes issue 18914
2025-05-30 14:21:53 +02:00
wmayer
c42dfe1ef3 Gui: Fix undo/redo behaviour in transformation tool
If the user clicks on undo while the transformation dialog is
open the currently active transaction will be closed.
From now on any change of the placement won't be recorded any
more so that e.g. canceling the dialog or an undo after
accepting the dialog leads to unexpected behaviour.

To fix the issue two new virtual methods onUndo() and onRedo()
are added to TaskDialog and reimplemented in TaskTransformDialog.
These functions make sure to open a new transaction.

This fixes issue 19152
2025-05-30 14:21:53 +02:00
wmayer
30ccf2ab26 Gui: Use Py::SmartPtr instead of raw pointer
Using the raw pointer may result into a crash in case the Python
object is accessed by the interpreter after the NavigationStyle
has been destroyed.
2025-05-30 14:21:53 +02:00
wmayer
b006a37010 Gui: Add Action::setBlockedChecked
Remove the second parameter of Action::setChecked and
provide Action::setBlockedChecked instead.
2025-05-30 14:21:53 +02:00
sliptonic
f3b6c29784 Merge pull request #21303 from tarman3/array
CAM: Added property CycleTime to old Array
2025-05-29 15:43:47 -05:00
Gonzalo Odiard
a07d9f032f App: Make Label property on Document read only (#21562)
Fixes: #10010
2025-05-29 22:43:34 +02:00
Alfredo Monclus
8f2ff7d7f6 Gui: property-editor open the combo directly and apply after selection
Previously you had to make 4 clicks to apply a combo
1 to enter edit, 1 to open the combo, 1 to select, and 1 to defocus and apply

with this commit only 2 clicks:
1 to open the combo and 1 to select
2025-05-29 22:41:37 +02:00
Alfredo Monclus
f3f2a2a9f7 Gui: property-editor add property copy context menu 2025-05-29 22:40:59 +02:00
theo-vt
1a0a68ae69 PartDesign: Fix hole centered on point edge case (#21257)
* Light refactor of getTopoShape function

* Fix hole edge case

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

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

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Update src/Mod/Part/App/PartFeature.cpp

Co-authored-by: Kacper Donat <kadet1090@gmail.com>

* Refactor simplifyCompound()

* Use Base::Flags<GetShapeOption>

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

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

* Shorten enum name and move it from class scope to namespace scope

* [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>
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2025-05-29 22:37:54 +02:00
sliptonic
40ed30397c Merge pull request #21416 from jffmichi/custom_gcode_allow_empty_lines
CAM: allow empty lines in Custom operation
2025-05-29 09:47:32 -05:00
Alfredo Monclus
1f4a9d883b Gui: property-editor fix text not showing due to stylesheets 2025-05-29 15:01:11 +02:00
Alfredo Monclus
a46dfd3213 Start: fix thumbnails not keeping aspect ratio 2025-05-29 15:00:37 +02:00
Benjamin Bræstrup Sayoc
2438156b23 TechDraw: fix incorrect click handles of editable labels (#21131)
Fixes #20964:
- When `text` element doesn't have id
- When `text` element has transform attribute
2025-05-29 08:30:59 -04:00
pre-commit-ci[bot]
86d6971cfd [pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/pre-commit/mirrors-clang-format: 300fa4c170bf0887bb5585d17ec50901ad2625fb → c8ab0f80399e63a4fabbf5313c0606831f09742e](300fa4c170...c8ab0f8039)
2025-05-29 00:14:40 +02:00
PaddleStroke
42e98afa30 TechDraw: Fix DrawViewSpreadsheet being assigned wrong QGI in QGSPage.cpp (#21623) 2025-05-29 00:06:34 +02:00
dependabot[bot]
b9fe94ed88 Bump github/issue-metrics from 3.20.0 to 3.20.1
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 3.20.0 to 3.20.1.
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](6a0f49b4e1...119b5237f4)

---
updated-dependencies:
- dependency-name: github/issue-metrics
  dependency-version: 3.20.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-28 21:01:12 +02:00
sliptonic
093fbf5f40 Merge pull request #21530 from jffmichi/sort_all_drilling
CAM: sort locations for all drilling operations
2025-05-28 13:55:20 -05:00
sliptonic
d045074b27 Merge pull request #21528 from mosfet80/piDef
CAM: using std::numbers pi definition
2025-05-28 13:53:00 -05:00
tetektoza
e6ec691ac1 BIM: Add support for deactivation active object to BIM Views Tree (#21570)
* BIM: Use checkbox in model tree for Activation/Deactivation of WP

* BIM: Set active object after deactivating current object if it exists

Currently we can get into a scenario where user can activate two working
planes, one after another. For example, Level, and  then Level001. If
they activate both, and then deactivate Level001, working plane switches
back to Level. But, we didn't set the object as the active one, so user
didn't have clear information that they can deactivate it, only the
working plane was switching it.

So this patch sets the object as the active one, if it exists.

* BIM: Add support for deactivation active object to BIM Views Tree

As the title says - it adds the checkbox that's similarly done in Part
workbench, so user can select/deselect the item and if they had previous
active object, it will also fall back to the previous object.

Also, moved out part of the common logic from ArchBuildingPart and
BimViews to utils.

* BIM: Handle correct context on activating WP for NativeIFC/BIM

* BIM: Remove redundant logic from BIM Views upon double click

As all of the logic is being handled now in `activate` function in
BimViews, this logic is redundant

* BIM: Rename button for taskbar and BIM Views from Activate to Active
2025-05-28 11:27:11 +02:00
Yorik van Havre
40d385859a Draft: Added snap recenter functionality (#19728)
* Allow to align the working plane on selected edge + face of a same object, which aligns the plane with the face, but positions it on the edge (the WP is positioned on the edge's first vertex, the WP's X axis is aligned with the edge, and the face's center point provides the third point to define the plane)
* Added a "Recenter" in-command shortcut. This moves the WP to be centered on the current snap position (the WorkingPlane snap button is taken into account, so one can only move the WP in the same plane or not).
2025-05-27 19:17:43 +02:00
Benjamin Nauck
89f2bbe6b9 Merge pull request #21552 from alfrix/fixup_hole
PD: Fixup hole
2025-05-27 15:00:13 +02:00
Benjamin Nauck
401d965ef0 Merge pull request #21379 from alfrix/set_style
Gui: Set QStyle to Fusion if not set
2025-05-26 22:13:31 +02:00
Luz Paz
5d27b46a87 Fix various typos
Found via codespell
2025-05-26 21:40:10 +02:00
Jacob Oursland
e6bcda81a1 CI: pin occt==7.8.1 on weekly builds. 2025-05-26 18:31:05 +02:00
Pieter Hijma
f114ad7afa Spreadsheet: Add tests for rename property 2025-05-26 18:11:27 +02:00
Pieter Hijma
3dde0c0480 Core: Add tests for renaming dynamic properties 2025-05-26 18:11:27 +02:00
Pieter Hijma
8c01d577e7 Core: Update expressions on property rename
This includes both expressions in generic containers and in
spreadsheets.
2025-05-26 18:11:27 +02:00
Pieter Hijma
3797e35dbc Core: Add a Python interface for property rename 2025-05-26 18:11:27 +02:00
Pieter Hijma
4812e6dc88 Core: Add logic to rename dynamic properties 2025-05-26 18:11:27 +02:00
chris
31ef7fe96e fix for #20656 2025-05-26 18:07:12 +02:00
Syres916
dbcc11d24e [Gui] InputField correct icon visibility logic on opening a pre-completed task panel 2025-05-26 17:54:39 +02:00
Chris Hennes
fc8788f0b7 CAM: Ensure float constants are single-precision (#21322)
* CAM: Ensure float constants are single-precision

* Revert suggestion

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-05-26 17:38:34 +02:00
Syres916
eaf49f82ee [App] Use consistent unit schema names (#21355)
* [Start] ensure user's preferred unit schema is retained after restart of application

* [App] use consistent schema names throughout the application

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

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

* [Start] Revert commit 2eea421

in preference to PR #21466

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-26 17:33:45 +02:00
Kacper Donat
01a03fe77d Merge pull request #21571 from alfrix/property_editor_2
Gui: property editor do not enter edit mode if the property is read-only
2025-05-26 17:20:06 +02:00
WandererFan
009754581e [TD] fix small angle dims (fix #21114) (#21208)
* [TD]fix handling of very small angle dimensions

- also remove test for too small format specifier

* [TD]lint messages

* [TD]apply review comments.
2025-05-26 17:19:19 +02:00