Skip to content

Commit

Permalink
Fix bug causing tooltips with dynamic content to shrink
Browse files Browse the repository at this point in the history
Affects `.on_hover_text(…)` with dynamic content (i.e. content
that changes over time).

* Closes #5167
  • Loading branch information
emilk committed Sep 25, 2024
1 parent f97f850 commit 2078eaa
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
12 changes: 12 additions & 0 deletions crates/egui/src/response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,10 @@ impl Response {
#[doc(alias = "tooltip")]
pub fn on_hover_text_at_pointer(self, text: impl Into<WidgetText>) -> Self {
self.on_hover_ui_at_pointer(|ui| {
// Prevent `Area` auto-sizing from shrinking tooltips with dynamic content.
// See https://github.com/emilk/egui/issues/5167
ui.set_max_width(ui.spacing().tooltip_width);

ui.add(crate::widgets::Label::new(text));
})
}
Expand All @@ -803,6 +807,10 @@ impl Response {
#[doc(alias = "tooltip")]
pub fn on_hover_text(self, text: impl Into<WidgetText>) -> Self {
self.on_hover_ui(|ui| {
// Prevent `Area` auto-sizing from shrinking tooltips with dynamic content.
// See https://github.com/emilk/egui/issues/5167
ui.set_max_width(ui.spacing().tooltip_width);

ui.add(crate::widgets::Label::new(text));
})
}
Expand All @@ -822,6 +830,10 @@ impl Response {
/// Show this text when hovering if the widget is disabled.
pub fn on_disabled_hover_text(self, text: impl Into<WidgetText>) -> Self {
self.on_disabled_hover_ui(|ui| {
// Prevent `Area` auto-sizing from shrinking tooltips with dynamic content.
// See https://github.com/emilk/egui/issues/5167
ui.set_max_width(ui.spacing().tooltip_width);

ui.add(crate::widgets::Label::new(text));
})
}
Expand Down
6 changes: 6 additions & 0 deletions tests/test_size_pass/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,12 @@ fn main() -> eframe::Result {
ui.label("World");
ui.label("Hellooooooooooooooooooooooooo");
});

ui.separator();

let time = ui.input(|i| i.time);
ui.label("Hover for a tooltip with changing content")
.on_hover_text(format!("A number: {}", time % 10.0));
});
})
}

0 comments on commit 2078eaa

Please sign in to comment.