mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-07-07 05:15:20 +02:00
Fix window creation due to manual state restore
This commit is contained in:
+76
-100
@@ -1724,93 +1724,81 @@ async fn cmd_check_for_updates(
|
|||||||
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
#[allow(unused_mut)]
|
#[allow(unused_mut)]
|
||||||
let mut builder =
|
let mut builder = tauri::Builder::default()
|
||||||
tauri::Builder::default()
|
.plugin(
|
||||||
.plugin(
|
Builder::default()
|
||||||
Builder::default()
|
.targets([
|
||||||
.targets([
|
Target::new(TargetKind::Stdout),
|
||||||
Target::new(TargetKind::Stdout),
|
Target::new(TargetKind::LogDir { file_name: None }),
|
||||||
Target::new(TargetKind::LogDir { file_name: None }),
|
Target::new(TargetKind::Webview),
|
||||||
Target::new(TargetKind::Webview),
|
])
|
||||||
])
|
.level_for("plugin_runtime", log::LevelFilter::Info)
|
||||||
.level_for("plugin_runtime", log::LevelFilter::Info)
|
.level_for("cookie_store", log::LevelFilter::Info)
|
||||||
.level_for("cookie_store", log::LevelFilter::Info)
|
.level_for("eventsource_client::event_parser", log::LevelFilter::Info)
|
||||||
.level_for("eventsource_client::event_parser", log::LevelFilter::Info)
|
.level_for("h2", log::LevelFilter::Info)
|
||||||
.level_for("h2", log::LevelFilter::Info)
|
.level_for("hyper", log::LevelFilter::Info)
|
||||||
.level_for("hyper", log::LevelFilter::Info)
|
.level_for("hyper_util", log::LevelFilter::Info)
|
||||||
.level_for("hyper_util", log::LevelFilter::Info)
|
.level_for("hyper_rustls", log::LevelFilter::Info)
|
||||||
.level_for("hyper_rustls", log::LevelFilter::Info)
|
.level_for("reqwest", log::LevelFilter::Info)
|
||||||
.level_for("reqwest", log::LevelFilter::Info)
|
.level_for("sqlx", log::LevelFilter::Warn)
|
||||||
.level_for("sqlx", log::LevelFilter::Warn)
|
.level_for("tao", log::LevelFilter::Info)
|
||||||
.level_for("tao", log::LevelFilter::Info)
|
.level_for("tokio_util", log::LevelFilter::Info)
|
||||||
.level_for("tokio_util", log::LevelFilter::Info)
|
.level_for("tonic", log::LevelFilter::Info)
|
||||||
.level_for("tonic", log::LevelFilter::Info)
|
.level_for("tower", log::LevelFilter::Info)
|
||||||
.level_for("tower", log::LevelFilter::Info)
|
.level_for("tracing", log::LevelFilter::Warn)
|
||||||
.level_for("tracing", log::LevelFilter::Warn)
|
.level_for("swc_ecma_codegen", log::LevelFilter::Off)
|
||||||
.level_for("swc_ecma_codegen", log::LevelFilter::Off)
|
.level_for("swc_ecma_transforms_base", log::LevelFilter::Off)
|
||||||
.level_for("swc_ecma_transforms_base", log::LevelFilter::Off)
|
.with_colors(ColoredLevelConfig::default())
|
||||||
.with_colors(ColoredLevelConfig::default())
|
.level(if is_dev() { log::LevelFilter::Debug } else { log::LevelFilter::Info })
|
||||||
.level(if is_dev() { log::LevelFilter::Debug } else { log::LevelFilter::Info })
|
.build(),
|
||||||
.build(),
|
)
|
||||||
)
|
.plugin(
|
||||||
.plugin(
|
Builder::default()
|
||||||
Builder::default()
|
.targets([
|
||||||
.targets([
|
Target::new(TargetKind::Stdout),
|
||||||
Target::new(TargetKind::Stdout),
|
Target::new(TargetKind::LogDir { file_name: None }),
|
||||||
Target::new(TargetKind::LogDir { file_name: None }),
|
Target::new(TargetKind::Webview),
|
||||||
Target::new(TargetKind::Webview),
|
])
|
||||||
])
|
.level_for("plugin_runtime", log::LevelFilter::Info)
|
||||||
.level_for("plugin_runtime", log::LevelFilter::Info)
|
.level_for("cookie_store", log::LevelFilter::Info)
|
||||||
.level_for("cookie_store", log::LevelFilter::Info)
|
.level_for("eventsource_client::event_parser", log::LevelFilter::Info)
|
||||||
.level_for("eventsource_client::event_parser", log::LevelFilter::Info)
|
.level_for("h2", log::LevelFilter::Info)
|
||||||
.level_for("h2", log::LevelFilter::Info)
|
.level_for("hyper", log::LevelFilter::Info)
|
||||||
.level_for("hyper", log::LevelFilter::Info)
|
.level_for("hyper_util", log::LevelFilter::Info)
|
||||||
.level_for("hyper_util", log::LevelFilter::Info)
|
.level_for("hyper_rustls", log::LevelFilter::Info)
|
||||||
.level_for("hyper_rustls", log::LevelFilter::Info)
|
.level_for("reqwest", log::LevelFilter::Info)
|
||||||
.level_for("reqwest", log::LevelFilter::Info)
|
.level_for("sqlx", log::LevelFilter::Warn)
|
||||||
.level_for("sqlx", log::LevelFilter::Warn)
|
.level_for("tao", log::LevelFilter::Info)
|
||||||
.level_for("tao", log::LevelFilter::Info)
|
.level_for("tokio_util", log::LevelFilter::Info)
|
||||||
.level_for("tokio_util", log::LevelFilter::Info)
|
.level_for("tonic", log::LevelFilter::Info)
|
||||||
.level_for("tonic", log::LevelFilter::Info)
|
.level_for("tower", log::LevelFilter::Info)
|
||||||
.level_for("tower", log::LevelFilter::Info)
|
.level_for("tracing", log::LevelFilter::Warn)
|
||||||
.level_for("tracing", log::LevelFilter::Warn)
|
.level_for("swc_ecma_codegen", log::LevelFilter::Off)
|
||||||
.level_for("swc_ecma_codegen", log::LevelFilter::Off)
|
.level_for("swc_ecma_transforms_base", log::LevelFilter::Off)
|
||||||
.level_for("swc_ecma_transforms_base", log::LevelFilter::Off)
|
.with_colors(ColoredLevelConfig::default())
|
||||||
.with_colors(ColoredLevelConfig::default())
|
.level(if is_dev() { log::LevelFilter::Debug } else { log::LevelFilter::Info })
|
||||||
.level(if is_dev() { log::LevelFilter::Debug } else { log::LevelFilter::Info })
|
.build(),
|
||||||
.build(),
|
)
|
||||||
)
|
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
|
||||||
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
|
// When trying to open a new app instance (common operation on Linux),
|
||||||
// When trying to open a new app instance (common operation on Linux),
|
// focus the first existing window we find instead of opening a new one
|
||||||
// focus the first existing window we find instead of opening a new one
|
// TODO: Keep track of the last focused window and always focus that one
|
||||||
// TODO: Keep track of the last focused window and always focus that one
|
if let Some(window) = app.webview_windows().values().next() {
|
||||||
if let Some(window) = app.webview_windows().values().next() {
|
let _ = window.set_focus();
|
||||||
let _ = window.set_focus();
|
}
|
||||||
}
|
}))
|
||||||
}))
|
.plugin(tauri_plugin_clipboard_manager::init())
|
||||||
.plugin(tauri_plugin_clipboard_manager::init())
|
.plugin(tauri_plugin_opener::init())
|
||||||
.plugin(tauri_plugin_opener::init())
|
.plugin(tauri_plugin_window_state::Builder::default().build())
|
||||||
.plugin(
|
.plugin(tauri_plugin_shell::init())
|
||||||
tauri_plugin_window_state::Builder::default()
|
.plugin(tauri_plugin_updater::Builder::default().build())
|
||||||
.with_denylist(&["ignored"])
|
.plugin(tauri_plugin_dialog::init())
|
||||||
.map_label(|label| {
|
.plugin(tauri_plugin_os::init())
|
||||||
if label.starts_with(OTHER_WINDOW_PREFIX) {
|
.plugin(tauri_plugin_fs::init())
|
||||||
"ignored"
|
.plugin(yaak_license::init())
|
||||||
} else {
|
.plugin(yaak_models::plugin::Builder::default().build())
|
||||||
label
|
.plugin(yaak_plugins::init())
|
||||||
}
|
.plugin(yaak_sync::init());
|
||||||
})
|
|
||||||
.build(),
|
|
||||||
)
|
|
||||||
.plugin(tauri_plugin_shell::init())
|
|
||||||
.plugin(tauri_plugin_updater::Builder::default().build())
|
|
||||||
.plugin(tauri_plugin_dialog::init())
|
|
||||||
.plugin(tauri_plugin_os::init())
|
|
||||||
.plugin(tauri_plugin_fs::init())
|
|
||||||
.plugin(yaak_license::init())
|
|
||||||
.plugin(yaak_models::plugin::Builder::default().build())
|
|
||||||
.plugin(yaak_plugins::init())
|
|
||||||
.plugin(yaak_sync::init());
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
#[cfg(target_os = "macos")]
|
||||||
{
|
{
|
||||||
@@ -2019,9 +2007,7 @@ fn create_main_window(handle: &AppHandle, url: &str) -> WebviewWindow {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
let window = create_window(handle, config);
|
create_window(handle, config)
|
||||||
|
|
||||||
window
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CreateWindowConfig<'s> {
|
struct CreateWindowConfig<'s> {
|
||||||
@@ -2115,16 +2101,6 @@ fn create_window(handle: &AppHandle, config: CreateWindowConfig) -> WebviewWindo
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Restore window state if it's a main window
|
|
||||||
let flags = if config.label.starts_with(OTHER_WINDOW_PREFIX) {
|
|
||||||
StateFlags::SIZE // Windows like settings just restore size
|
|
||||||
} else {
|
|
||||||
StateFlags::all() // Main workspace windows restore everything
|
|
||||||
};
|
|
||||||
if let Err(e) = win.restore_state(flags) {
|
|
||||||
warn!("Failed to restore window state {e:?}");
|
|
||||||
}
|
|
||||||
|
|
||||||
win
|
win
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user