fix: feet-inch dynamic input, STRETCH preselection, ribbon title wrap

- Dynamic-input fields take ' and " and read 2'9" / 3' as lengths (#937)
- STRETCH on a selection made by a crossing window stretches through that
  window and goes straight to the base point (#1068)
- STRETCH's crossing-window steps show no coordinate boxes (#657)
- Collapsed ribbon panel titles wrap at words, never mid-word (#920)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-06 16:15:35 +03:00
1 parent 178c7dff41
commit 1cbcc8f4c5
9 files changed
+67 -5

No files matched your search

+1 -1
View File
@@ -269,7 +269,7 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
let dyn_field_char = !s.is_empty()
&& s.chars().all(|c| {
c.is_ascii_digit()
|| matches!(c, '.' | '-' | '+' | '*' | '/' | '^' | '%' | '(' | ')')
|| matches!(c, '.' | '-' | '+' | '*' | '/' | '^' | '%' | '(' | ')' | '\'' | '"')
});
if dyn_field_char
&& self.command_line.input.is_empty()
+3 -1
View File
@@ -191,7 +191,9 @@ impl OpenCADStudio {
let picks_object = self.tabs[i]
.active_cmd
.as_ref()
.map(|c| c.needs_entity_pick() || c.needs_structure_point_pick())
.map(|c| {
c.needs_entity_pick() || c.needs_structure_point_pick() || c.selects_by_window()
})
.unwrap_or(false);
let has_base = self.last_point.is_some();
// While aligned to an OTRACK ray, the point step reads a single
+3
View File
@@ -4728,6 +4728,9 @@ impl OpenCADStudio {
};
if let Some((fence, window)) = drag_geometry {
if self.tabs[i].active_cmd.is_none() {
self.tabs[i].last_crossing_window = window.filter(|_| box_crossing);
}
let result = self.tabs[i].active_cmd.as_mut().and_then(|command| {
command.set_shift(self.shift_down);
command.on_drag_selection(&fence, window)