Forms-Zustand und Darstellung korrigieren und Change archivieren

This commit is contained in:
2026-09-05 20:48:13 +02:00
parent 644a86212f
commit 58b1f620ea
22 changed files with 1362 additions and 101 deletions

View File

@@ -903,6 +903,7 @@ impl Vm {
/// Formular schließen, ein anderes Programm starten oder einen Fehler
/// auslösen.
pub fn run_visible_forms(&mut self, host: &mut dyn Host) -> RunEvent {
self.forms.sync_timers(|| host.jetzt_ms());
while self.forms.has_visible_forms() {
self.tick(host);
let dispatched = self.zustellen(host, Zustellpunkt::Kooperativ);
@@ -928,6 +929,7 @@ impl Vm {
}
pub fn run(&mut self, host: &mut dyn Host) -> RunEvent {
self.forms.sync_timers(|| host.jetzt_ms());
loop {
if let Some(form) = self.frames.last().and_then(|f| f.waiting_form) {
if !self.forms.is_visible(form) {
@@ -1381,11 +1383,13 @@ impl Vm {
let value = self.pop()?;
let value = self.property_value(object, property, value)?;
self.forms.set_at(object, index, property, value)?;
self.forms.sync_timers(|| host.jetzt_ms());
return Ok(Flow::Normal);
}
}
let value = self.property_value(object, property, value)?;
self.forms.set_at(object, index, property, value)?;
self.forms.sync_timers(|| host.jetzt_ms());
Ok(Flow::Normal)
}
I::PushObject(object, has_index) => {
@@ -1442,6 +1446,7 @@ impl Vm {
.ok_or(RuntimeError(422))?;
let value = self.property_value(object, property, value)?;
self.forms.set_at(object, index, property, value)?;
self.forms.sync_timers(|| host.jetzt_ms());
Ok(Flow::Normal)
}
I::LoadObjectIndexedProperty(object, property) => {
@@ -1585,6 +1590,7 @@ impl Vm {
self.forms.object_method_at(object, index, name, args)?;
}
}
self.forms.sync_timers(|| host.jetzt_ms());
self.dispatch_next_form_event(true);
Ok(Flow::Normal)
}
@@ -1602,6 +1608,7 @@ impl Vm {
self.forms.ensure_loaded(object)?;
self.dispatch_next_form_event(true);
}
self.forms.sync_timers(|| host.jetzt_ms());
Ok(Flow::Normal)
}
I::Dup => {