From d65d84183a0b465105484aaefad672616c1f61b7 Mon Sep 17 00:00:00 2001 From: Karim Date: Fri, 3 Jul 2026 21:51:51 +0200 Subject: [PATCH] Zeichnungsebenen merken sich eigenen 2D/3D-Zustand MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bisher war viewType (Grundriss/Perspektive) ein einziger globaler Wert. Beim Tab-Wechsel blieb er unverändert stehen, was wirkte, als würde die Ansicht "durchsickern". Jede Ebene merkt sich jetzt ihren zuletzt gewählten Ansichtstyp und stellt ihn beim Zurückwechseln wieder her. --- src/state/viewSlice.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/state/viewSlice.ts b/src/state/viewSlice.ts index dbd17d9..b7770a8 100644 --- a/src/state/viewSlice.ts +++ b/src/state/viewSlice.ts @@ -21,6 +21,9 @@ export interface ViewSlice { activeLevelId: string; // Ansichtstyp (Grundriss / Perspektive). viewType: ViewType; + // Zuletzt gewählter Ansichtstyp je Zeichnungsebene — jeder Tab merkt sich + // seinen eigenen 2D/3D-Zustand statt eines rein globalen Umschalters. + viewTypeByLevel: Record; // Detailgrad im Grundriss. detail: DetailLevel; // Render-Modus der 3D-Ansicht. @@ -65,6 +68,7 @@ export function createViewSlice(api: StoreApi): ViewSlice { return { activeLevelId: sampleProject.drawingLevels[0].id, viewType: "grundriss", + viewTypeByLevel: {}, detail: "mittel", renderMode: "shaded", view3d: "perspective", @@ -77,8 +81,16 @@ export function createViewSlice(api: StoreApi): ViewSlice { sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code, displayModes: {}, - setActiveLevelId: (id) => set({ activeLevelId: id }), - setViewType: (v) => set({ viewType: v }), + setActiveLevelId: (id) => + set((s) => ({ + activeLevelId: id, + viewType: s.viewTypeByLevel[id] ?? "grundriss", + })), + setViewType: (v) => + set((s) => ({ + viewType: v, + viewTypeByLevel: { ...s.viewTypeByLevel, [s.activeLevelId]: v }, + })), setDetail: (d) => set({ detail: d }), setRenderMode: (m) => set({ renderMode: m }), setView3d: (v) => set({ view3d: v }),