diff --git a/crates/egui/src/widgets/label.rs b/crates/egui/src/widgets/label.rs index 007a1291..115e7551 100644 --- a/crates/egui/src/widgets/label.rs +++ b/crates/egui/src/widgets/label.rs @@ -282,7 +282,7 @@ impl Widget for Label { if ui.is_rect_visible(response.rect) { if show_tooltip_when_elided && galley.elided { // Show the full (non-elided) text on hover: - response = response.on_hover_text(galley.text()); + response = response.on_hover_text(galley.job.clone()); } let response_color = if interactive { diff --git a/tests/egui_tests/tests/regression_tests.rs b/tests/egui_tests/tests/regression_tests.rs index 9a33c935..babfb232 100644 --- a/tests/egui_tests/tests/regression_tests.rs +++ b/tests/egui_tests/tests/regression_tests.rs @@ -1,4 +1,4 @@ -use egui::{Image, include_image}; +use egui::{Color32, Image, Label, RichText, TextWrapMode, include_image}; use egui_kittest::Harness; use egui_kittest::kittest::Queryable as _; @@ -12,3 +12,24 @@ fn image_button_should_have_alt_text() { harness.get_by_label("Egui"); } + +#[test] +fn hovering_should_preserve_text_format() { + let mut harness = Harness::builder().with_size((200.0, 70.0)).build_ui(|ui| { + ui.add( + Label::new( + RichText::new("Long text that should be elided and has lots of styling") + .italics() + .underline() + .color(Color32::LIGHT_BLUE), + ) + .wrap_mode(TextWrapMode::Truncate), + ); + }); + + harness.get_by_label_contains("Long text").hover(); + + harness.run_steps(5); + + harness.snapshot("hovering_should_preserve_text_format"); +} diff --git a/tests/egui_tests/tests/snapshots/hovering_should_preserve_text_format.png b/tests/egui_tests/tests/snapshots/hovering_should_preserve_text_format.png new file mode 100644 index 00000000..9aa37308 --- /dev/null +++ b/tests/egui_tests/tests/snapshots/hovering_should_preserve_text_format.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc03cdc22b410ed90fdbbc45ced5c61027463132c490673170aab9044d683f88 +size 10254