diff --git a/Cargo.lock b/Cargo.lock index cbd2769..46ceedf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -619,8 +619,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "freedesktop-file-parser" -version = "0.1.3" -source = "git+https://github.com/alexmohr/desktop_file_parser?branch=fix-format-and-clippy#2c42c2ce28f474b7b663037b344b2bee9be21ef1" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9874624824ee3ca96cf728451815bd93ae3978cdcd715c1d098edef7130fb0da" dependencies = [ "freedesktop-icons", "thiserror 2.0.12", diff --git a/worf/Cargo.toml b/worf/Cargo.toml index 7314c59..3348b9f 100644 --- a/worf/Cargo.toml +++ b/worf/Cargo.toml @@ -41,8 +41,7 @@ toml = "0.8.20" serde_json = "1.0.140" crossbeam = "0.8.4" libc = "0.2.171" -freedesktop-file-parser = { git = "https://github.com/alexmohr/desktop_file_parser", branch = "fix-format-and-clippy" } -# freedesktop-file-parser = "0.1.3" +freedesktop-file-parser = "0.2.0" strsim = "0.11.1" dirs = "6.0.0" which = "7.0.3" diff --git a/worf/src/lib/gui.rs b/worf/src/lib/gui.rs index 4c6428b..3435317 100644 --- a/worf/src/lib/gui.rs +++ b/worf/src/lib/gui.rs @@ -1144,42 +1144,17 @@ fn window_show_resize(config: &Config, ui: &Rc return; }; - // Calculate target height based on either lines or absolute height let target_height = if let Some(lines) = config.lines() { let (_, _, _, height_search) = ui.search.measure(Orientation::Vertical, 10_000); - let widget = { + let height = { let lock = ui.menu_rows.read().unwrap(); - lock.iter().next().map(|(w, _)| w.clone()) + lock.iter().find_map(|(fb, _)| { + let (_, _, _, baseline) = fb.measure(Orientation::Vertical, 10_000); + if baseline > 0 { Some(baseline) } else { None } + }) }; - if let Some(widget) = widget { - log::debug!( - "widget, mapped: {}, realized {}, visible {}, has child {}, baseline {}, pref size {:#?}", - widget.is_mapped(), - widget.is_realized(), - widget.is_visible(), - widget.child().is_some(), - widget.allocated_baseline(), - widget.preferred_size() - ); - if !widget.is_mapped() { - let c_clone = config.clone(); - let ui_clone = Rc::clone(ui); - widget.connect_realize(move |_| { - window_show_resize(&c_clone, &Rc::clone(&ui_clone)); - }); - return; - } - - let (_, nat, _, baseline) = widget.measure(Orientation::Vertical, 10_000); - log::debug!("natural height base {baseline}, nat {nat}"); - // todo fix this eventually properly, so baseline is always set and not only in 85% of cases. - let height = if baseline > 0 { - baseline - } else { - nat // for my configuration way bigger than baseline - }; - + if let Some(height) = height { Some((height_search + height) * lines + config.lines_additional_space()) } else { log::warn!("No widget for height calculation available");