Die System-Leiste kam auf dem Mac zurück

Sie auszublenden reichte nicht: solange `mode` auf `tabSidebar` steht, gehört
die Seitenleiste zur Darstellung, und das System stellte sie wieder her — mit
eigenem Pfeil und eigenem Knopf, hinter unserer. Auf dem Simulator fiel das
nicht auf, auf dem Mac standen beide da.

Jetzt wird erst die Form auf `tabBar` gestellt und dann die Tableiste
ausgeblendet. Damit gibt es keine Seitenleiste mehr, die zurückkommen könnte.

Der Test setzt die Stellung der Leiste über ein Startargument, statt zu nehmen,
was ein voriger Lauf hinterlassen hat — er fing sonst beim falschen Bild an.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-13 19:50:38 +02:00
co-authored by Claude Opus 5
parent fccec1217b
commit fbed83b10f
3 changed files with 3773 additions and 3750 deletions
+51 -52
View File
@@ -4759,7 +4759,6 @@
}, },
"sidebar.home" : { "sidebar.home" : {
"comment" : "Eintrag der Startseite in der Seitenleiste", "comment" : "Eintrag der Startseite in der Seitenleiste",
"extractionState": "stale",
"localizations" : { "localizations" : {
"de" : { "de" : {
"stringUnit" : { "stringUnit" : {
@@ -4843,6 +4842,40 @@
} }
} }
}, },
"sidebar.moveToSide" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Navigation zur Seite"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Move navigation to side"
}
}
}
},
"sidebar.moveToTop" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Navigation nach oben"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Move navigation to top"
}
}
}
},
"sidebar.open" : { "sidebar.open" : {
"comment" : "Barrierefreiheit: Hamburger-Knopf", "comment" : "Barrierefreiheit: Hamburger-Knopf",
"extractionState" : "stale", "extractionState" : "stale",
@@ -4861,6 +4894,23 @@
} }
} }
}, },
"sidebar.search" : {
"extractionState" : "manual",
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Suchen"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Search"
}
}
}
},
"sidebar.settings" : { "sidebar.settings" : {
"comment" : "Eintrag in der Seitenleiste", "comment" : "Eintrag in der Seitenleiste",
"localizations" : { "localizations" : {
@@ -5781,57 +5831,6 @@
} }
} }
} }
},
"sidebar.moveToTop": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Navigation nach oben"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Move navigation to top"
}
}
}
},
"sidebar.moveToSide": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Navigation zur Seite"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Move navigation to side"
}
}
}
},
"sidebar.search": {
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Suchen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Search"
}
}
}
} }
}, },
"version" : "1.1" "version" : "1.1"
+13 -1
View File
@@ -44,8 +44,20 @@ struct TabChromeSuppressor: UIViewControllerRepresentable {
private func suppress() { private func suppress() {
guard let controller = Self.tabBarController(from: self) else { return } guard let controller = Self.tabBarController(from: self) else { return }
if !controller.sidebar.isHidden { controller.sidebar.isHidden = true }
// Erst die Form festlegen, dann ausblenden — und zwar auf die
// Tableiste, nicht auf die Seitenleiste.
//
// Nur `sidebar.isHidden = true` reichte nicht: auf dem Mac stand
// die System-Seitenleiste danach wieder da, mit eigenem Pfeil und
// eigenem Knopf, hinter unserer. Solange `mode` auf `tabSidebar`
// steht, gehört die Seitenleiste zur Darstellung und das System
// stellt sie wieder her. Steht `mode` auf `tabBar`, gibt es keine
// Seitenleiste mehr, die zurückkommen könnte — und die Tableiste
// ist ausgeblendet.
if controller.mode != .tabBar { controller.mode = .tabBar }
if !controller.isTabBarHidden { controller.isTabBarHidden = true } if !controller.isTabBarHidden { controller.isTabBarHidden = true }
if !controller.sidebar.isHidden { controller.sidebar.isHidden = true }
} }
/// Sucht vom eigenen Platz aus nach oben bis zur Wurzel und von dort /// Sucht vom eigenen Platz aus nach oben bis zur Wurzel und von dort
+14 -2
View File
@@ -36,7 +36,13 @@ final class LayoutSnapshots: XCTestCase {
/// und ein einzelnes Bild danach nichts zeigt. /// und ein einzelnes Bild danach nichts zeigt.
func testSidebarToggle() throws { func testSidebarToggle() throws {
let app = XCUIApplication() let app = XCUIApplication()
app.launchArguments = ["-FlixyStubServer", "http://127.0.0.1:8096"] // Die Stellung der Leiste wird gespeichert, und ein voriger Lauf hat
// sie womöglich umgestellt. Ein Startargument überschreibt sie, damit
// jeder Lauf beim selben Bild anfängt.
app.launchArguments = [
"-FlixyStubServer", "http://127.0.0.1:8096",
"-flixy.navigation.placement", "sidebar",
]
app.launch() app.launch()
XCUIDevice.shared.orientation = .landscapeLeft XCUIDevice.shared.orientation = .landscapeLeft
@@ -61,7 +67,13 @@ final class LayoutSnapshots: XCTestCase {
func testHomeAndDetail() throws { func testHomeAndDetail() throws {
let app = XCUIApplication() let app = XCUIApplication()
app.launchArguments = ["-FlixyStubServer", "http://127.0.0.1:8096"] // Die Stellung der Leiste wird gespeichert, und ein voriger Lauf hat
// sie womöglich umgestellt. Ein Startargument überschreibt sie, damit
// jeder Lauf beim selben Bild anfängt.
app.launchArguments = [
"-FlixyStubServer", "http://127.0.0.1:8096",
"-flixy.navigation.placement", "sidebar",
]
app.launch() app.launch()
XCUIDevice.shared.orientation = .landscapeLeft XCUIDevice.shared.orientation = .landscapeLeft