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
@@ -94,14 +94,10 @@ pub fn show(app: &mut SolveApp, ctx: &egui::Context) {
|
||||
app.recoverable.insert(0, e);
|
||||
return;
|
||||
}
|
||||
if app.run("doc.recover", json!({"id": e.id, "dir": dir_s})).is_ok() {
|
||||
// Ours now: autosave it under this app's entry before the old entry goes.
|
||||
let kept = app.autosave.as_mut().map(|a| a.save(&app.session));
|
||||
if let Some(Ok(_)) = kept {
|
||||
let _ = app.run("doc.recovery_discard", json!({"id": e.id, "dir": dir_s}));
|
||||
}
|
||||
app.set_status(format!("recovered {}: save it to keep it", e.name), false);
|
||||
}
|
||||
// Rebuilt off the window thread like any other file; once it is in, it is
|
||||
// autosaved under this app's entry before the old entry goes.
|
||||
let kind = crate::file_load::Kind::Recover { id: e.id.clone(), dir: dir_s };
|
||||
let _ = crate::file_load::begin_request(app, crate::file_load::Request::new(&e.name, kind));
|
||||
} else {
|
||||
let _ = app.run("doc.recovery_discard", json!({"id": e.id, "dir": dir_s}));
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user