forked from 1b-agent/opencadstudio-upstream
fix(app): running OSNAP set is app-level, not per-drawing
Modern DWG (R2000+) has no file slot for OSMODE — reading a file left the header at 0, and adopt_header_sysvars wiped the user's running snap set on every open. Persist the set (as an $OSMODE-style bitmask) in settings.json, save it on every snap toggle, and only let a file override it when it actually carries a nonzero mask (R13/R14 DWG, DXF). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5ea6a9ac8e
commit
ccd1086f9f
4 files changed
+29
-3
No files matched your search
@@ -116,6 +116,12 @@ pub struct UserSettings {
|
||||
/// instead of submitting (as if every line started with `>`), until the
|
||||
/// user toggles it back off.
|
||||
pub literal_spaces: bool,
|
||||
/// Running object-snap set + master toggle as an `$OSMODE`-style bitmask.
|
||||
/// App-level, not per-drawing: modern DWG (R2000+) has no file slot for
|
||||
/// OSMODE (it moved to the registry), so the set follows the user. A
|
||||
/// legacy R13/R14 or DXF file carrying a nonzero `$OSMODE` still overrides
|
||||
/// it on open (see `adopt_header_sysvars`).
|
||||
pub osmode: i32,
|
||||
/// Controls whether the TEXTEDIT command repeats automatically (0 = Multiple, 1 = Single).
|
||||
pub texteditmode: bool,
|
||||
/// TEXTFILL: fill TrueType glyphs (true) or draw them hollow (false).
|
||||
@@ -148,6 +154,9 @@ impl Default for UserSettings {
|
||||
disabled_plugins: Vec::new(),
|
||||
plugin_repos: Vec::new(),
|
||||
literal_spaces: false,
|
||||
// Snapper::default(): END|MID|CEN|NODE|QUAD|INT|NEA (575), master
|
||||
// off (suppress bit 16384).
|
||||
osmode: 575 | OSMODE_SUPPRESS,
|
||||
texteditmode: false,
|
||||
textfill: true,
|
||||
backup_on_save: true,
|
||||
|
||||
Reference in new issue
Block a user