Slider event fixes (#1270)

* Slider: return drag_started,dragged,drag_released if value was dragged

Closes https://github.com/emilk/egui/issues/1269

* Fix: DragValue correctly reports gained_focus

* Make `Slider` report gained_focus,has_focus,lost_focus from DragValue

Closes https://github.com/emilk/egui/issues/1268
This commit is contained in:
Emil Ernerfeldt 2022-02-19 19:56:12 +01:00 committed by GitHub
parent 3ed68274b0
commit aa53522179
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 2 deletions

View file

@ -64,6 +64,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w
* Calling `Context::set_pixels_per_point` before the first frame will now work. * Calling `Context::set_pixels_per_point` before the first frame will now work.
* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)). * Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)).
* Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)). * Scroll areas now follow text cursor ([1252](https://github.com/emilk/egui/pull/1252)).
* Slider: correctly respond with drag and focus events when interacting with the value directly ([1270](https://github.com/emilk/egui/pull/1270)).
### Contributors 🙏 ### Contributors 🙏
* [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108). * [AlexxxRu](https://github.com/alexxxru): [#1108](https://github.com/emilk/egui/pull/1108).

View file

@ -510,6 +510,8 @@ impl Response {
impl Response { impl Response {
/// A logical "or" operation. /// A logical "or" operation.
/// For instance `a.union(b).hovered` means "was either a or b hovered?". /// For instance `a.union(b).hovered` means "was either a or b hovered?".
///
/// The resulting [`Self::id`] will come from the first (`self`) argument.
pub fn union(&self, other: Self) -> Self { pub fn union(&self, other: Self) -> Self {
assert!(self.ctx == other.ctx); assert!(self.ctx == other.ctx);
crate::egui_assert!( crate::egui_assert!(

View file

@ -507,10 +507,10 @@ impl<'a> Slider<'a> {
{ {
// Use the `DragValue` id as the id of the whole widget, // Use the `DragValue` id as the id of the whole widget,
// so that the focus events work as expected. // so that the focus events work as expected.
response = value_response | response; response = value_response.union(response);
} else { } else {
// Use the slider id as the id for the whole widget // Use the slider id as the id for the whole widget
response = response | value_response; response = response.union(value_response);
} }
} }