Corner Radius: a field per corner of a live rectangle, with a link toggle

The Corner Radius field in the Properties and Transform panels has a
link toggle behind it (the "singleCornerRadius" preference, on by
default). When the link is on, one field sets every corner, as before.
When it is off, the panels show one field for each corner of a live
rectangle: Top Left, Top Right, Bottom Right and Bottom Left. Each field
sets its own corner through object.setLiveShape {corners, radius}.

This is the part of #1594 that does not change the corner widget drag
or its modifier keys, split out for review.

Tests: a Properties panel test (the link on shows one field; off shows
the four labelled fields with each corner's radius, in line and in
order). The new labels are translated in all 15 catalogs.
This commit is contained in:
GameDirection authored and bflatastic committed 2026-10-14 05:11:22 +07:00
1 parent 043b446b94
commit b5bc8f0d19
22 files changed
+177 -6

No files matched your search

+1
View File
@@ -351,6 +351,7 @@ pub const PREF_SPECS: &[PrefSpec] = &[
p!("useCompression", "File Handling", "Files", "Use Compression", bool),
// The W/H link of the Transform panel, the Properties panel and the Control bar
p!("constrainProportions", "General", "Transform Panel", "Constrain Width and Height Proportions", bool),
p!("singleCornerRadius", "General", "Transform Panel", "Single Corner Radius", bool),
];
pub fn spec(key: &str) -> Option<&'static PrefSpec> {
+3
View File
@@ -830,6 +830,8 @@ pub struct Prefs {
/// the Properties panel and the Control bar (their size fields pass `proportional` to
/// `object.setBounds`).
pub constrain_proportions: bool,
/// One Corner Radius field sets every corner of a live rectangle (off: a field per corner).
pub single_corner_radius: bool,
/// The tools' persistent options by store (a tool id, or a store a family shares: `liquify`
/// holds the Liquify tools' Global Brush Dimensions), see [`vectorcraft_tools::settings`]:
/// kept across tool switches and saved with the preferences. Not a Preferences dialog field:
@@ -990,6 +992,7 @@ impl Default for Prefs {
web_export_settings: None,
print_presets: vec![],
constrain_proportions: false,
single_corner_radius: true,
tool_settings: Default::default(),
perspective_presets: vec![],
blend_options: None,