fix: Keep the window draggable while a design opens (#643)
The loading box was a full-window modal whose backdrop covered the custom title bar. It is now a light overlay under the title bar, so dragging, snapping, resizing and the window buttons keep working during open, import and recovery. The timeline rebuild shows feature N of M, and Cancel or Esc stops it at the next feature (solidcraft_doc::progress). Recovery restore now runs off the window thread too. A control or MCP doc.open or import is answered once the file is in and doesn't block frames; edits sent meanwhile wait their turn. The web build still opens in place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8be0f64f5a
commit
392fae1af4
11 files changed
+734
-125
No files matched your search
@@ -327,7 +327,7 @@ pub fn tabs(app: &mut SolveApp, ui: &mut egui::Ui, r: Rect, x0: f32, x1: f32) {
|
||||
if app.home.open { t.text } else { t.app_bar_text },
|
||||
);
|
||||
crate::scenario::publish_handle("tab:home", home.center());
|
||||
if response.clicked() {
|
||||
if response.clicked() && !app.file_load.busy() {
|
||||
app.home.show(app.session.revision);
|
||||
}
|
||||
let x0 = x0 + 70.0;
|
||||
@@ -428,13 +428,16 @@ pub fn tabs(app: &mut SolveApp, ui: &mut egui::Ui, r: Rect, x0: f32, x1: f32) {
|
||||
let s = Stroke::new(1.6, t.app_bar_text);
|
||||
ui.painter().line_segment([c - vec2(6.0, 0.0), c + vec2(6.0, 0.0)], s);
|
||||
ui.painter().line_segment([c - vec2(0.0, 6.0), c + vec2(0.0, 6.0)], s);
|
||||
if presp.on_hover_text("New Design (Ctrl+N)").clicked() {
|
||||
// A file loading into the window keeps the tabs as they are (dragging still moves it).
|
||||
let idle = !app.file_load.busy();
|
||||
if presp.on_hover_text("New Design (Ctrl+N)").clicked() && idle {
|
||||
new_design(app);
|
||||
}
|
||||
if let Some(i) = shut {
|
||||
close(app, i, false);
|
||||
} else if let Some(i) = pick {
|
||||
switch(app, i);
|
||||
match (shut, pick) {
|
||||
_ if !idle => {}
|
||||
(Some(i), _) => close(app, i, false),
|
||||
(None, Some(i)) => switch(app, i),
|
||||
(None, None) => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user