* Sketcher: Initial wiring up of independent contraint symbol size.
* Sketcher: Align constraint symbol size controls with other preferences
- Refactored the Sketcher preferences UI to place the "Constraint symbol size" checkbox and spinbox in separate grid columns, matching the layout of other settings.
- Ensured the spinbox aligns visually with other value fields for a more consistent and professional appearance.
- Preserved the enable/disable behavior of the spinbox based on the checkbox state.
* Update constraint size label
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* style: simplify constraint icon size logic and remove stray blank line
* Sketcher: optional constraint symbol size defaults to font size preference (per PR comment)
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
As the title says - we can get into a scenario where user can specify
constraint equal to 0.0, or similar small value and the scale factor
will become 0 as well, resulting in all geometry trying to be rescaled
to degenerate geometry.
So this patch filters those values out, and bails out from auto-scaling
leaving only solver to handle this value.
* Sketcher: Use different colors for touch/window selection
As the title says. I think it was missing, so currently right to left
motion makes the box selection in Sketcher green with dashed lines,
whereas motion from left to right makes it blue with solid lines.
* [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>
* Sketcher: Introduce Select All (Ctrl + A)
As the title says, this allows selecting all geometries on the sketch
with CTRL + A shortcut, plus also allows to select "Select All" option
from Edit menu.
* Sketcher: Use fmt instead of std::stringstream in selectAll
* Sketcher: Fix typo in selectAll
Co-authored-by: João Matos <joao@tritao.eu>
---------
Co-authored-by: João Matos <joao@tritao.eu>
* Sketcher: Circle DSH: move diameter constraint. Fix#22267
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Improve. To squash
* [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>
* Sketcher: Set total angle to make evaluation choose it when typing in OVP
When typing an angle value (e.g., "315 deg") in the sketcher rotate tool,
the result differed from manually moving the mouse to achieve the same rotation.
The angle would "flip" to equivalent but opposite directions (315 deg became -45 deg)
due to smart angle selection logic choosing the "closer" alternative.
The parameter enforcement system (`doEnforceControlParameters`) calculated cursor
positions for keyboard input but never directly set the `totalAngle` value.
The mouse logic's smart angle selection algorithm then calculated totalAngle
independently, potentially choosing equivalent but opposite angle directions
(e.g., -45 deg instead of +315 deg) based on proximity to the previous angle value.
Solution is to basically predefine `totalAngle` if user has typed it so
this "smart logic" will always choose the `totalAngle` that user typed.
* Sketcher: Set total angle for arc tool
* Sketcher: Set total angle for Arc Slot tool
* Sketcher: fix constraint icon size
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* [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>
Currently if user tries to use box selection while having transformed
normal line to a construction line, the line becomes solid unless it
gets moved or new geometry is created.
The root cause of that is the `draw(true, false)` call which uses
outdated solver geometry where construction=false is being specified.
Solver updates lazily, which results in construction lines in normal
sublayer instead of construction.
So, this patch changes it to `draw(false, false)` after box selection.
This ensures the redraw uses current SketchObject geometry with
up-to-date construction flags. This should be safe, as box selection is
purely visual and we do not need geometry calculations in this
operation.
* Revert #22941
* [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>
* Sketcher: Coinmanager: remove dpi
* [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>
* Fix various typos
Found via codespell
* [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>
* Sketcher: Change EditCurvesDrawStyle to match either CurvesDrawStyle or CurvesConstructionDrawStyle in editDraw()
* Match color as well
* Match pattern scale as well
* Use enum instead of boolean flag
* Update src/Mod/Sketcher/Gui/Utils.h
---------
Co-authored-by: Kacper Donat <kadet1090@gmail.com>
It is an invisible and unstated assumption of the redundant-constraint
removal code that the "tag" of a constraint can be used as the index
into the SketchObject's Constraint list. This is true for all objects
except a parabola, which, when creating its internal alignment focus
constraints, incremented the ConstraintCounter for *each* of the
internal constraints, instead of only once.
* Allow arc segment length and angle constraints to go past the center point
* fix angle helper lines
* fix linter warning
* fix arc length calculation
---------
Co-authored-by: Matthias Danner <28687794+matthiasdanner@users.noreply.github.com>
* Sketcher: Dimension: Offset the label when moving mouse
* Sketcher: Create dedicated enum for offset boolean
This improves readability because the intent must be stated explicitly.
---------
Co-authored-by: Kacper Donat <kadet1090@gmail.com>