diff --git a/Cargo.toml b/Cargo.toml index 725ff73..616c787 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,14 +18,14 @@ default = [] serde = ["dep:serde", "egui/serde"] [dependencies] -egui = { version = "0.24", default-features = false } +egui = { version = "0.25", default-features = false } serde = { version = "1", optional = true, features = ["derive"] } duplicate = "1.0" paste = "1.0" [dev-dependencies] -eframe = { version = "0.24", default-features = false, features = [ +eframe = { version = "0.25", default-features = false, features = [ "default_fonts", "glow", ] } diff --git a/README.md b/README.md index d5a605b..ab4d5b1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![github](https://img.shields.io/badge/github-Adanos020/egui_dock-8da0cb?logo=github)](https://github.com/Adanos020/egui_dock) [![Crates.io](https://img.shields.io/crates/v/egui_dock)](https://crates.io/crates/egui_dock) [![docs.rs](https://img.shields.io/docsrs/egui_dock)](https://docs.rs/egui_dock/) -[![egui_version](https://img.shields.io/badge/egui-0.24-blue)](https://github.com/emilk/egui) +[![egui_version](https://img.shields.io/badge/egui-0.25-blue)](https://github.com/emilk/egui) Originally created by [@lain-dono](https://github.com/lain-dono), this library provides a docking system for `egui`. diff --git a/src/widgets/dock_area/show/leaf.rs b/src/widgets/dock_area/show/leaf.rs index 1aedd37..f074287 100644 --- a/src/widgets/dock_area/show/leaf.rs +++ b/src/widgets/dock_area/show/leaf.rs @@ -588,15 +588,8 @@ impl<'tree, Tab> DockArea<'tree, Tab> { pos - galley.size() / 2.0 }; - let override_text_color = (!galley.galley_has_color).then_some(tab_style.text_color); - - ui.painter().add(TextShape { - pos: text_pos, - galley: galley.galley, - underline: Stroke::NONE, - override_text_color, - angle: 0.0, - }); + ui.painter() + .add(TextShape::new(text_pos, galley, tab_style.text_color)); let close_response = show_close_button.then(|| { let mut close_button_rect = rect; diff --git a/src/widgets/dock_area/show/mod.rs b/src/widgets/dock_area/show/mod.rs index 298d9c6..1d31f34 100644 --- a/src/widgets/dock_area/show/mod.rs +++ b/src/widgets/dock_area/show/mod.rs @@ -400,7 +400,12 @@ impl<'tree, Tab> DockArea<'tree, Tab> { if response.has_focus() { // Prevent the default behaviour of removing focus from the separators when the // arrow keys are pressed - ui.memory_mut(|m| m.set_focus_lock_filter(response.id, EventFilter { arrows: should_respond_to_arrow_keys, tab: false, escape: false })); + ui.memory_mut(|m| m.set_focus_lock_filter(response.id, EventFilter { + horizontal_arrows: should_respond_to_arrow_keys, + vertical_arrows: should_respond_to_arrow_keys, + tab: false, + escape: false + })); } let arrow_key_offset = if response.has_focus() && should_respond_to_arrow_keys { diff --git a/src/widgets/dock_area/show/window_surface.rs b/src/widgets/dock_area/show/window_surface.rs index e18abd1..edf4d35 100644 --- a/src/widgets/dock_area/show/window_surface.rs +++ b/src/widgets/dock_area/show/window_surface.rs @@ -80,7 +80,6 @@ impl<'tree, Tab> DockArea<'tree, Tab> { .title(&mut tabs[active.0]) .color(ui.visuals().widgets.noninteractive.fg_stroke.color) .into_galley(ui, Some(false), 0.0, TextStyle::Button) - .galley }; // Fade window frame (if neccesary) @@ -152,8 +151,11 @@ impl<'tree, Tab> DockArea<'tree, Tab> { ch_response.header_response.rect.height(), ), ); - ui.painter() - .galley(rect.center() - (title.size() * 0.5), title); + ui.painter().galley( + rect.center() - (title.size() * 0.5), + title, + ui.visuals().widgets.noninteractive.fg_stroke.color, + ); } Some(ch_response) } else { @@ -177,7 +179,7 @@ impl<'tree, Tab> DockArea<'tree, Tab> { let rect = { let (top_right, height) = match collapse_response { Some(collapse) => ( - egui::Rect::from_two_pos( + Rect::from_two_pos( collapse.header_response.rect.right_top(), ui.max_rect().right_top(), ) @@ -199,9 +201,11 @@ impl<'tree, Tab> DockArea<'tree, Tab> { }); } } + fn min_window_width(title: &Galley, button_width: f32) -> f32 { (button_width * 2.) + title.size().x } + fn close_button(disabled: Option<&'static str>) -> impl Widget { move |ui: &mut Ui| -> Response { let sense = disabled.map_or(Sense::click(), |_disabled| Sense::hover());