fix(desktop): Download-Knoepfe in der App reichen an den System-Browser weiter

Befund des Nutzers (22.09.2026): "Herunterladen" unter Einstellungen ->
Desktop-App tut in der App nichts, unter Windows wie Linux. Die Webansicht
hatte keinen Download-Handler; webkit2gtk verwirft Downloads dann still,
WebView2 zeigte ebenfalls nichts.

Das Hauptfenster entsteht jetzt im Code (app.windows in tauri.conf.json
leer), weil nur der Builder `on_download` annimmt. Der Handler bricht den
Download in der App ab und oeffnet die Adresse ueber den Opener im
System-Browser -- mit Fortschritt, Speicherort und Passwortfenster fuer
einen vorgeschalteten Proxy. Masse, Zentrierung, Titel wie bisher; die
Capability "main" gilt unveraendert.

cargo fmt/clippy/test/check gruen (44 Tests).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-22 11:43:27 +02:00
parent 2c01f9d783
commit 747a4d432b
3 changed files with 35 additions and 12 deletions
+33
View File
@@ -713,6 +713,39 @@ pub fn run() {
get_client_info
])
.setup(|app| {
// Hauptfenster im Code statt in tauri.conf.json (`app.windows` ist
// leer), weil nur der Builder einen Download-Handler annimmt. Ohne
// Handler verpufft ein Klick auf "Herunterladen" (Einstellungen ->
// Desktop-App) in der Webansicht: webkit2gtk verwirft den Download
// still, WebView2 zeigte ebenfalls nichts (Nutzer, 22.09.2026,
// Windows und Linux). Der Handler bricht den Download in der App ab
// und reicht die Adresse an den System-Browser weiter -- dort gibt
// es Fortschritt, Speicherort und ein Passwortfenster fuer einen
// vorgeschalteten Proxy. Masse/Zentrierung wie bisher in der
// Konfiguration; Fensterzustand stellt tauri_plugin_window_state
// weiterhin her.
tauri::WebviewWindowBuilder::new(
app,
"main",
tauri::WebviewUrl::App("setup.html".into()),
)
.title("Tessera")
.inner_size(1280.0, 800.0)
.center()
.decorations(true)
.resizable(true)
.on_download(|webview, event| {
if let tauri::webview::DownloadEvent::Requested { url, .. } = event {
let _ = webview
.app_handle()
.opener()
.open_url(url.to_string(), None::<&str>);
return false;
}
true
})
.build()?;
let server_url = stored_server_url(app.handle());
if let Some(url) = &server_url {