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:
@@ -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 {
|
||||
|
||||
@@ -9,18 +9,7 @@
|
||||
},
|
||||
"app": {
|
||||
"withGlobalTauri": true,
|
||||
"windows": [
|
||||
{
|
||||
"label": "main",
|
||||
"title": "Tessera",
|
||||
"url": "setup.html",
|
||||
"width": 1280,
|
||||
"height": 800,
|
||||
"center": true,
|
||||
"decorations": true,
|
||||
"resizable": true
|
||||
}
|
||||
],
|
||||
"windows": [],
|
||||
"security": {
|
||||
"csp": "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user