diff --git a/CHANGELOG.md b/CHANGELOG.md index bc471d9e..0b681122 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ NOTE: [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md) and [ ### Fixed 🐛 * Fix [defocus-bug on touch screens](https://github.com/emilk/egui/issues/288). +* Fix bug with the layout of wide `DragValue`:s. ## 0.11.0 - 2021-04-05 - Optimization, screen reader & new layout logic diff --git a/egui/src/widgets/button.rs b/egui/src/widgets/button.rs index 187e518a..a60c898a 100644 --- a/egui/src/widgets/button.rs +++ b/egui/src/widgets/button.rs @@ -22,6 +22,7 @@ pub struct Button { small: bool, frame: bool, wrap: Option, + min_size: Vec2, } impl Button { @@ -35,6 +36,7 @@ impl Button { small: false, frame: true, wrap: None, + min_size: Vec2::ZERO, } } @@ -99,6 +101,11 @@ impl Button { self.wrap = Some(wrap); self } + + pub(crate) fn min_size(mut self, min_size: Vec2) -> Self { + self.min_size = min_size; + self + } } impl Button { @@ -112,6 +119,7 @@ impl Button { small, frame, wrap, + min_size, } = self; let mut button_padding = ui.spacing().button_padding; @@ -132,6 +140,7 @@ impl Button { if !small { desired_size.y = desired_size.y.at_least(ui.spacing().interact_size.y); } + desired_size = desired_size.at_least(min_size); let (rect, response) = ui.allocate_at_least(desired_size, sense); response.widget_info(|| WidgetInfo::labeled(WidgetType::Button, &galley.text)); diff --git a/egui/src/widgets/drag_value.rs b/egui/src/widgets/drag_value.rs index ffaceb3e..8bff0b9f 100644 --- a/egui/src/widgets/drag_value.rs +++ b/egui/src/widgets/drag_value.rs @@ -266,9 +266,10 @@ impl<'a> Widget for DragValue<'a> { let button = Button::new(format!("{}{}{}", prefix, value_text, suffix)) .sense(Sense::click_and_drag()) .text_style(TextStyle::Monospace) - .wrap(false); + .wrap(false) + .min_size(ui.spacing().interact_size); // TODO: find some more generic solution to this - let response = ui.add_sized(ui.spacing().interact_size, button); + let response = ui.add(button); let response = response .on_hover_cursor(CursorIcon::ResizeHorizontal) .on_hover_text(format!(