Ressourcen-Manager: "+" im nativen Fenster fügte keine neuen Einträge hinzu
"+"-Buttons für Bauteile/Schraffuren/Linienstile/Wand-/Decken-/Dachstile
waren direkt als onClick={onAddX} verdrahtet — React reicht dabei das
Klick-Event als Argument durch. Im In-App-Overlay harmlos (Store-
Funktionen ignorieren Extra-Argumente), aber im nativen Ressourcen-
Fenster läuft jeder Aufruf über die Tauri-Event-Brücke (emitTo), die den
Aufruf als JSON serialisiert — ein React-Event mit zirkulären DOM-
Referenzen lässt sich nicht serialisieren, der Aufruf scheiterte lautlos.
Fix: alle betroffenen Buttons rufen den Handler jetzt explizit ohne
Argument auf. Zusätzlich die bisher stillschweigend verschluckten Fehler
in der Fenster-Sync-Brücke sichtbar gemacht (console.error statt leerem
catch), fürs nächste Mal.
This commit is contained in:
@@ -66,7 +66,7 @@ export function ResourceWindowApp() {
|
|||||||
return (...args: unknown[]) => {
|
return (...args: unknown[]) => {
|
||||||
void import("@tauri-apps/api/event").then(({ emitTo }) =>
|
void import("@tauri-apps/api/event").then(({ emitTo }) =>
|
||||||
emitTo("main", "resource-command", { name: prop as HandlerName, args }).catch(
|
emitTo("main", "resource-command", { name: prop as HandlerName, args }).catch(
|
||||||
() => {},
|
(err) => console.error("[resource-window] emit resource-command failed", prop, err),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -85,7 +85,11 @@ export function useResourceWindowHost(
|
|||||||
unlisten.push(
|
unlisten.push(
|
||||||
await listen<{ name: string; args: unknown[] }>("resource-command", (e) => {
|
await listen<{ name: string; args: unknown[] }>("resource-command", (e) => {
|
||||||
const fn = (handlersRef.current as unknown as Record<string, unknown>)[e.payload.name];
|
const fn = (handlersRef.current as unknown as Record<string, unknown>)[e.payload.name];
|
||||||
if (typeof fn === "function") (fn as (...a: unknown[]) => void)(...e.payload.args);
|
if (typeof fn === "function") {
|
||||||
|
(fn as (...a: unknown[]) => void)(...e.payload.args);
|
||||||
|
} else {
|
||||||
|
console.error("[resource-window-host] unknown resource-command", e.payload.name);
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
unlisten.push(
|
unlisten.push(
|
||||||
|
|||||||
@@ -977,7 +977,7 @@ function ComponentsTab({
|
|||||||
<div className="res-md-empty">{t("resources.components.empty")}</div>
|
<div className="res-md-empty">{t("resources.components.empty")}</div>
|
||||||
)}
|
)}
|
||||||
<div className="res-md-listfoot">
|
<div className="res-md-listfoot">
|
||||||
<button className="res-add" onClick={onAddComponent}>
|
<button className="res-add" onClick={() => onAddComponent()}>
|
||||||
<span className="res-add-plus">+</span> {t("resources.add")}
|
<span className="res-add-plus">+</span> {t("resources.add")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -1246,7 +1246,7 @@ function HatchesTab({
|
|||||||
<div className="res-md-empty">{t("resources.hatches.empty")}</div>
|
<div className="res-md-empty">{t("resources.hatches.empty")}</div>
|
||||||
)}
|
)}
|
||||||
<div className="res-md-listfoot">
|
<div className="res-md-listfoot">
|
||||||
<button className="res-add" onClick={onAddHatch}>
|
<button className="res-add" onClick={() => onAddHatch()}>
|
||||||
<span className="res-add-plus">+</span> {t("resources.add")}
|
<span className="res-add-plus">+</span> {t("resources.add")}
|
||||||
</button>
|
</button>
|
||||||
<FileImportButton
|
<FileImportButton
|
||||||
@@ -1549,7 +1549,7 @@ function LinesTab({
|
|||||||
<div className="res-md-empty">{t("resources.lines.empty")}</div>
|
<div className="res-md-empty">{t("resources.lines.empty")}</div>
|
||||||
)}
|
)}
|
||||||
<div className="res-md-listfoot">
|
<div className="res-md-listfoot">
|
||||||
<button className="res-add" onClick={onAddLineStyle}>
|
<button className="res-add" onClick={() => onAddLineStyle()}>
|
||||||
<span className="res-add-plus">+</span> {t("resources.add")}
|
<span className="res-add-plus">+</span> {t("resources.add")}
|
||||||
</button>
|
</button>
|
||||||
<FileImportButton
|
<FileImportButton
|
||||||
@@ -1809,7 +1809,7 @@ function LayeredStylesTab({
|
|||||||
<div className="res-md-empty">{t(emptyKey)}</div>
|
<div className="res-md-empty">{t(emptyKey)}</div>
|
||||||
)}
|
)}
|
||||||
<div className="res-md-listfoot">
|
<div className="res-md-listfoot">
|
||||||
<button className="res-add" onClick={onAdd}>
|
<button className="res-add" onClick={() => onAdd()}>
|
||||||
<span className="res-add-plus">+</span> {t("resources.add")}
|
<span className="res-add-plus">+</span> {t("resources.add")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user