Skip to content

Always set response.hovered to false when dragging another widget#3860

Merged
emilk merged 5 commits intomasterfrom
emilk/fix-hover-on-drag
Jan 22, 2024
Merged

Always set response.hovered to false when dragging another widget#3860
emilk merged 5 commits intomasterfrom
emilk/fix-hover-on-drag

Conversation

@emilk
Copy link
Copy Markdown
Owner

@emilk emilk commented Jan 22, 2024

⚠️ Breaking change!

This defines response.hovered() to never be true if any other widget is being dragged.

If you want to detect if a widget is being hovered while another widget is being dragged, use the new response.contains_pointer instead. This is necessaert for things like drag-and-drop targets.

Overall, this removes special-casing of non-interactive widgets.

@emilk emilk added the egui label Jan 22, 2024
@emilk emilk marked this pull request as draft January 22, 2024 11:21
@emilk emilk force-pushed the emilk/fix-hover-on-drag branch from 261d624 to 53f2560 Compare January 22, 2024 11:21
@emilk emilk force-pushed the emilk/fix-hover-on-drag branch from 53f2560 to 5473fed Compare January 22, 2024 13:10
@emilk emilk changed the title Never mark another widget as hovered when dragging another widget Never mark a widget as hovered when dragging another widget Jan 22, 2024
@emilk emilk changed the title Never mark a widget as hovered when dragging another widget Always set response.hovered to false when dragging another widget Jan 22, 2024
@emilk emilk marked this pull request as ready for review January 22, 2024 13:36
@emilk emilk merged commit ca6ce2d into master Jan 22, 2024
@emilk emilk deleted the emilk/fix-hover-on-drag branch January 22, 2024 13:37
emilk added a commit to rerun-io/rerun that referenced this pull request Jan 23, 2024
### What
This is so we can test things out before the next release, and also get
in some new egui features for the plot aggregator and drag-and-drop.

* Closes #4716
* Closes #4794

### TODO
* [x] Fix hovering ListItems in blueprint panel

### wgpu changelog
https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#v0190-2024-01-17

### relevant egui changelog (so far)

#### eframe
* Keep `ViewportInfo::maximized` and `minimized` up-to-date on Windows
[#3831](emilk/egui#3831) (thanks
[@rustbasic](https://github.com/rustbasic)!)
* Update wgpu to 0.19 [#3824](emilk/egui#3824)
* Fix: handle `IconData::default()` without crashing
[#3842](emilk/egui#3842)

#### egui_extras
* Fix unwraps in SVG scaling
[#3826](emilk/egui#3826) (thanks
[@amPerl](https://github.com/amPerl)!)
* Update to ehttp 0.4 [#3834](emilk/egui#3834)

#### egui_plot
* Make `egui_plot::PlotMemory` public
[#3871](emilk/egui#3871)

#### egui
* Selectable text in Labels
[#3814](emilk/egui#3814)
* `ComboBox`: add builder method for height
[#3001](emilk/egui#3001) (thanks
[@hinto-janai](https://github.com/hinto-janai)!)
* Add keys `?`, `/`, `|`
[#3820](emilk/egui#3820)
* Fix clickable widgets blocking scrolling on touch screens
[#3815](emilk/egui#3815) (thanks
[@lucasmerlin](https://github.com/lucasmerlin)!)
* Fix `stable_dt` [#3832](emilk/egui#3832)
* Bug Fix : `Response::is_pointer_button_down_on` is now false the frame
the button is released [#3833](emilk/egui#3833)
(thanks [@rustbasic](https://github.com/rustbasic)!)
* Use runtime knowledge of OS for OS-specific text editing
[#3840](emilk/egui#3840)
* Refactor: move text selection logic to own module
[#3843](emilk/egui#3843)
* Fix: dragging to above/below a `TextEdit` or `Label` will select text
to begin/end [#3858](emilk/egui#3858)
* Add `Response::contains_pointer`
[#3859](emilk/egui#3859)
* Always set `response.hovered` to false when dragging another widget
[#3860](emilk/egui#3860)
* Add `Align2::anchor_size`
[#3863](emilk/egui#3863)
* Add `Context::debug_text`
[#3864](emilk/egui#3864)

#### epaint
* Add `Align2::anchor_size`
[#3863](emilk/egui#3863)

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/4885/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/4885/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/4885/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4885)
- [Docs
preview](https://rerun.io/preview/eb1bce846c3adb29b99d04018b002475994ad213/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/eb1bce846c3adb29b99d04018b002475994ad213/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

---------

Co-authored-by: Andreas Reich <r_andreas2@web.de>
abey79 added a commit to rerun-io/rerun that referenced this pull request Jan 25, 2024
### What

This PR implements a couple of single-selection drag-and-drop demo with
`ListItem`s in `re_ui_example`. One is flat, the other is hierarchical.
Most of it happens in `re_ui_example`, with some minimal support for
draggability in `ListItem`. The goal is to identify proper patterns (and
egui TODOs) for drag-and-drop support in the blueprint tree UI.

TODO:
- [x] iron out some bug where items disappear
- [x] highlight destination container
- [x] ascii art documentation for the drag areas
- [x] apply any change from:
    - emilk/egui#3859
    - emilk/egui#3860


https://github.com/rerun-io/rerun/assets/49431240/54588326-7e69-4d38-b16d-da17fc88b6b7

Contributes towards:
- #2652 

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using newly built examples:
[app.rerun.io](https://app.rerun.io/pr/4879/index.html)
* Using examples from latest `main` build:
[app.rerun.io](https://app.rerun.io/pr/4879/index.html?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[app.rerun.io](https://app.rerun.io/pr/4879/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG

- [PR Build Summary](https://build.rerun.io/pr/4879)
- [Docs
preview](https://rerun.io/preview/94b9a81e7d5b2934b44919453ce2c92257b46a73/docs)
<!--DOCS-PREVIEW-->
- [Examples
preview](https://rerun.io/preview/94b9a81e7d5b2934b44919453ce2c92257b46a73/examples)
<!--EXAMPLES-PREVIEW-->
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve Sense vs drag-and-drop

1 participant