Commit Graph

130 Commits

Author SHA1 Message Date
tetektoza
d397254275 Sketcher: Fix crash when applying constraints during selection batching
Currently, the selection batching optimization introduced in #26663
stores ElementItem/ConstraintItem pointers in a buffer to be processed
on the next event loop cycle via `QTimer::singleShot`.

When a constraint is applied,
`slotElementsChanged()/slotConstraintsChanged()`
rebuilds the list widget, destroying all items. However, the selection
buffer was not cleared, leaving dangling pointers. When
`processSelectionBuffer()`
executed, it attempted to call `QListWidget::row()` on deleted items,
causing a segmentation fault.

So, this patch fixes it by clearing `selectionBuffer` when the list is
rebuilt, since the buffered pointers are invalidated anyway.
2026-01-08 10:17:35 -06:00
PaddleStroke
2bd5622249 Sketcher: Speed up large bulk Selection in edit (#26663)
* Sketcher: Speed up large bulk Selection in edit

* Update ViewProviderSketch.cpp

* Update src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp

---------

Co-authored-by: Kacper Donat <kadet1090@gmail.com>
2026-01-05 17:41:45 +00:00
ᴩʜᴏɴᴇᴅʀᴏɪᴅ
d2c3486ff0 SPDX [ 41 ][ Src / Mod / Sketcher ] (#25135) 2025-12-25 12:00:22 -06:00
pre-commit-ci[bot]
9fe130cd73 All: Reformat according to new standard 2025-11-11 13:49:01 +01:00
tetektoza
5f6e23181b Sketcher: Clear selection on selected geometry when hiding
When a geometry element is selected and then hidden using the visibility
checkbox in the Elements panel, it remains in the selection.
Subsequently, if another geometry element is selected and deleted, both
the visible element AND the hidden element are deleted.

Root cause of that is basically that `changeLayer()` functions change
the geometry's visual layer, but never clear the geometry from
`Gui::Selection()`.

So, this patch adds the handling to collect every sub-element name of
the hidden geometry and then formats it and calls remove selection on
the geometry during layer change transaction.
2025-11-09 17:40:08 -06:00
PaddleStroke
d109e6ea1a Sketcher: Element Task : clear selection when list selection is cleared 2025-10-09 14:06:10 -05:00
PaddleStroke
603d0beb73 Sketcher: Make ctrlA work with filter (#24541) 2025-10-09 12:37:54 -05:00
Markus Reitböck
45c02f7978 Sketcher: use CMake to generate precompiled headers on all platforms
"Professional CMake" book suggest the following:

"Targets should build successfully with or without compiler support for precompiled headers. It
 should be considered an optimization, not a requirement. In particular, do not explicitly include a
 precompile header (e.g. stdafx.h) in the source code, let CMake force-include an automatically
 generated precompile header on the compiler command line instead. This is more portable across
 the major compilers and is likely to be easier to maintain. It will also avoid warnings being
 generated from certain code checking tools like iwyu (include what you use)."

Therefore, removed the "#include <PreCompiled.h>" from sources, also
there is no need for the "#ifdef _PreComp_" anymore
2025-09-23 00:51:00 +02:00
Roy-043
c5d72e37b5 Sketcher: context menu of Elements section in task panel to Title Case 2025-09-16 22:38:23 +02:00
Roy-043
ab608839f3 Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts (#23944)
* Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts

* Sketcher: Add 'Toggle' to 'Construction Geometry' menu texts

* Update TaskSketcherElements.cpp

* Update CommandAlterGeometry.cpp
2025-09-15 19:38:13 +02:00
PaddleStroke
cde481536e Sketcher: Fix ctrl A (#23866) 2025-09-12 15:40:24 -05:00
Max Wilfinger
36659f0176 Sketcher: Update UI strings for consistency (#22167)
* Sketcher: Update UI strings for consistency

* Update src/Mod/Sketcher/App/Sketch.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/App/SketchObject.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Update src/Mod/Sketcher/Gui/Command.cpp

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>

* Apply suggestions from code review

* Apply suggestions from code review

---------

Co-authored-by: Ryan K <114723629+ryankembrey@users.noreply.github.com>
2025-06-30 22:51:46 +00:00
Syres916
39dc1e6210 [Gui] C++ preparation for deprecation of QCheckBox…
…stateChanged -> checkStateChanged
2025-06-13 10:40:48 +02:00
Ajinkya Dahale
ecb3ede295 Sketcher: Incorporate comments from #20589
See https://github.com/FreeCAD/FreeCAD/pull/20589#pullrequestreview-2830404892.
2025-05-19 20:24:17 +02:00
Ajinkya Dahale
64f3ca6f02 [Sketcher] Refactor TaskSketcherElements::onSelectionChanged() 2025-05-19 20:24:17 +02:00
tetektoza
7f49550dee Sketcher: Auto-scroll to selected geometry elements (#20866)
* Sketcher: Auto-scroll to selected geometry elements

Currently if user selects a geometry element on sketch, listview is not
scrolling to it.

So, this patch moves the previously added logic to constraints into a
separate helper function call and calls it for Geometry Elements as
well, resulting in scrolling in both lists - constraints and elements.

* Sketcher: Add QListWidget to enable QListWidget symbols for CI
2025-04-19 15:10:13 +02:00
Kacper Donat
5658274bb8 Merge pull request #20559 from hyarion/refactor/add-limits
Add `#include <limits>` in all files where it is used
2025-04-01 17:11:50 +02:00
Benjamin Nauck
1cff040fbc Sketcher: Add #include <limits> where used 2025-03-31 23:52:38 +02:00
Rafael Pronto
c180ec19aa Sketcher: Prevent renaming interruption when hovering task elements. (#20458)
* Sketcher: Prevent renaming interruption when hovering task elements.

Fixes #11842.

* Sketcher: Refactored input focus check based on PR feedback (PR #20458)

* Update src/Mod/Sketcher/Gui/TaskSketcherElements.cpp

---------

Co-authored-by: Benjamin Nauck <benjamin@nauck.se>
2025-03-31 17:45:33 +00:00
Benjamin Nauck
3279a1dd8f Sketcher: Use std::numeric_limits and std::numbers instead of defines 2025-03-29 13:32:39 +01:00
Benjamin Nauck
9c173d2b35 Sketcher: Use constant for Type::BadType instead Type::badType() 2025-02-24 08:30:18 +01:00
Benjamin Bræstrup Sayoc
aa43ce8cc0 Sketcher: Use QStringLiteral 2025-02-10 18:32:45 +01:00
tritao
551c2e48fb Gui: Reorganize the selection files into a top Selection folder. 2025-02-03 17:56:57 +01:00
Kacper Donat
954b729b56 Gui: Use getObject<T>() helpers in classes
This commit is generated using regex based find and replace:

```
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*getObject\(\s*\)\)/getObject<$1>/
s/[\w:]+_cast\s*<([^>]+)\*>\s*\(\s*([^)]*)\s*->\s*getObject\(\s*\)\)/$2->getObject<$1>()/
```

To regenerate if needed.
2024-12-06 18:29:39 +01:00
CalligaroV
5036f09086 Do the same for the elements selected in the Task Panel
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-09-15 19:54:09 +02:00
Zheng, Lei
819ae560f1 Sketcher/Toponaming: import code for SketchObject::checkSubName() from LS3
* import code
 * add modified_item assignment in TaskSketcherElements::onSelectionChanged() like for non ExternalEdge
2024-09-07 14:08:23 +02:00
Kacper Donat
8fac01b75a Gui: Make sketcher element icons normally opaque 2024-09-03 20:53:47 +02:00
Max Wilfinger
8ff5a1f688 Fix source string typos mentioned on Crowdin (#15261) 2024-07-08 17:18:31 -05:00
Chris Hennes
604400062b Sketcher: Resolve unsafe combination of bool and int in | 2024-07-08 11:02:49 -05:00
CalligaroV
b8cf43424e Sketcher: fix external edges selection
* fix selection from Sketcher Task Panel
 * fix selection from 3D View
 * Synchronize selection between Task Panel and 3D View

Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
2024-06-24 10:35:54 -05:00
Emmanuel Obrien
a89fdb86f4 Speedup sketcher item selection
Selecting lots of elements in the sketcher slows down quadratically because we were redrawing the entire element list widget for each element.
2024-06-10 10:35:32 -05:00
marcuspollio
a5a26aee9e Merge remote-tracking branch 'upstream/main' into UI-TaskPanels-cleanup-1 2024-05-15 13:45:43 +12:00
Johannes Wüller
33e91421b5 Fix backwards-compatible Qt6 warnings 2024-05-13 11:39:24 -05:00
marcuspollio
22336540b6 Sketcher UI: Update Task panels icons 2024-05-12 15:57:26 +12:00
Roy-043
ad667811a5 Sketcher: correct position of ConstrainLock and ConstrainRadiam in GUI
Sketcher_ConstrainLock after Sketcher_ConstrainAngle.
Sketcher_ConstrainRadiam before Sketcher_ConstrainRadius.

This was not always correct.

See also #12667.
2024-03-11 12:28:28 -05:00
Roy-043
94120db2a9 Sketcher: Sketcher_ConstrainHorizontal before Sketcher_ConstrainVertical in GUI
Changes to TaskSketcherElements.cpp are not required, but were done for consistency. The order in the file follows the GUI.
2024-03-04 11:12:38 -06:00
wmayer
64a91968a3 MSVC: fix compiler warnings 2024-02-25 00:12:34 +01:00
Kacper Donat
993248b4db Sketcher: Disable visibility checkbox for external geometry 2024-01-21 20:33:49 +01:00
Kacper Donat
8c2310eaf3 Sketcher: Fix checkbox behavior for Element checkboxes
This creates new method overload for changing layer of exact
ElementItem. This fixes strange behavior of the checkboxes for elements
that were dependent not on what user clicked but on what is selected.

Fixes: #8814
2024-01-21 20:33:37 +01:00
Kacper Donat
f52c0d12f0 Sketcher: Make Elements UI style aware
This commit like previous one introduces ability to style list of
elements in the sketcher. It also completely refactors the rendering
delegate introducing dedicated method for calculating rects of each
element and method for rendering each sub control. Thanks to this
refactor we can be sure that areas drawn are the same as areas checked
for events in editorEvent.
2024-01-21 20:33:34 +01:00
Kacper Donat
8777b809cd Sketcher: Draw proper checkbox control in Elements UI
This ensures that checkboxes drawn in the Elements UI of the sketcher
can be styled using the correct style.

Three changes are introduced:
1. paint() method uses style provided by the widget, not application.
2. Indicator is drawn using PE_IndicatorCheckBox not CE_CheckBox - it
   allows to use ::indicator in qss to style it properly. This works the
   same as TreeView.
3. Fix for minor issues with text alignement and extension of selected items
   background to cover checkbox. This is how other controls of this kind
   work.
2024-01-20 21:59:01 +01:00
Abdullah Tahiri
533250bc34 Sketcher Gui: clang-tidy diagnostic errors 2023-11-05 07:11:57 +01:00
wmayer
948cbfccd9 modernize C++: avoid bind
In many cases std::bind() is kept because the code is much simpler
2023-08-08 21:10:16 +02:00
wmayer
52e1c7c33b modernize C++: move from boost::bind to std::bind 2023-08-08 17:36:13 +02:00
wmayer
2b3d48176c Mods: modernize C++: redundant void arg 2023-08-05 16:50:31 +02:00
wmayer
7d0926d0b3 Qt6 port:
Fix deprecation warnings with version 6.3 or 6.4
2023-08-04 21:23:14 -06:00
Abdullah Tahiri
78ae9c1d7d SketcherGui: apply clang-format 2023-05-25 17:08:03 +02:00
Abdullah Tahiri
17f65d8746 Sketcher: Make Command Constraints show the severity of warning for typical user mistakes 2023-05-23 14:24:45 +02:00
Chris Hennes
e951756611 Sketcher: Translate context menu 2023-05-17 14:43:57 +02:00
Roy-043
2107270847 Sketcher: improve context menu text for Sketcher_ToggleConstruction
In the Elements context menu (Sketcher task panel) the menu text for Sketcher_ToggleConstruction is "Toggle construction line", this should be "Toggle construction geometry". It is not just lines that can be toggled, and this is also the menu text in the main Sketcher menu.
2023-05-07 19:52:12 +02:00