fix(ui): Applying got stuck: the ticked items came in as a JS value

Convert QML's array; if starting fails anyway, show the done screen with
the reason instead of staying on the progress screen.
This commit is contained in:
theupriser committed 2026-09-25 15:56:41 +02:00
1 parent 0c99ba325d
commit fdb49f2503
2 files changed
+10 -2

No files matched your search

+1 -1
View File
@@ -225,7 +225,7 @@ ApplicationWindow {
else if (ev.event === "finished") {
if (!(biosRun && plan.length && plan[0].action === "check" && !ev.failed.length && !ev.error && !ev.nothing)) sessionPassword = "";
failed = ev.failed || []; restartNeeded = !!ev.restart;
runError = ev.error === "wrong-password" ? "The password didn't work." : (ev.error ? "sudo isn't available." : "");
runError = ev.error === "wrong-password" ? "The password didn't work." : (ev.error === "start" ? "Steamify couldn't start the changes." : (ev.error ? "sudo isn't available." : ""));
screen = "done";
}
}
+9 -1
View File
@@ -247,12 +247,20 @@ class Backend(QObject):
@Slot("QVariant", str, bool, str)
def apply(self, ids, boot, reapply, password):
try:
if hasattr(ids, "toVariant"): # a JS array from QML
ids = ids.toVariant()
args = ["apply"]
if reapply:
args.append("--reapply")
if boot:
args += ["--boot", boot]
self._start(args + list(ids), password)
self._start(args + [str(i) for i in (ids or [])], password)
except Exception as e:
# Never leave the app on the progress screen.
print("steamify-ui: couldn't start:", e, file=sys.stderr)
self._drop_askpass()
self.event.emit({"event": "finished", "failed": [], "restart": False, "error": "start"})
@Slot(str)
def biosPrepare(self, password):