* Closes https://github.com/emilk/egui/issues/3936 * Closes https://github.com/emilk/egui/issues/3923 * Closes https://github.com/emilk/egui/pull/4058 The interaction code is now done at the start of the frame, using stored `WidgetRect`s from the previous frame. The intention is that the new interaction code should be more accurate, making it easier to hit widgets, and better respecting the rules of overlapping widgets. There is a new `style::Interaction::interact_radius` controlling how far away from a widget the cursor can be and still hit it. This helps big fat fingers hit small widgets on touch screens. This PR adds a new `Context::read_response` which lets you read the `Response` of a `Widget` _before_ you create the widget. This can be used for styling, or for reading the result of an interaction early (to prevent frame-delay) for a widget you add late (so it is on top of other widgets). # ⚠️ BREAKING CHANGES `Memory::dragged_id`, `Memory::set_dragged_id` etc have been moved to `Context`. The semantics for `Context::dragged_id` is slightly different: a widget is not considered dragged until egui it is sure this is not a click-in-progress. For a widget that is only sensitive to drags, that is right away, but for widgets sensitive to both clicks and drags it is not until the mouse has moved a certain distance. # TODO * [x] Fix panel resizing * [x] Fix scroll hover weirdness * [x] Fix Resize widget * [x] Fix drag-and-drop * [x] Test all of egui_demo_app * [x] Change `is_dragging` API * [x] Consistent naming of start/stop or begin/end drag * [x] Test `egui_tiles` * [x] Test Rerun * [x] Document * [x] Document breaking changes in PR description * [x] Test one final time # Saving for a later PR * [ ] Fix https://github.com/emilk/egui/issues/4047 * [ ] Specify what the response order for e.g. `ui.horizontal` is I think both these can be fixed if each `Ui` registers themselves as a `WidgetRect`, with the possibility to interact with it later, as if the interaction was under all widgets on top of it. |
||
|---|---|---|
| .. | ||
| confirm_exit | ||
| custom_3d_glow | ||
| custom_font | ||
| custom_font_style | ||
| custom_plot_manipulation | ||
| custom_window_frame | ||
| file_dialog | ||
| hello_world | ||
| hello_world_par | ||
| hello_world_simple | ||
| images | ||
| keyboard_events | ||
| multiple_viewports | ||
| puffin_profiler | ||
| save_plot | ||
| screenshot | ||
| serial_windows | ||
| test_inline_glow_paint | ||
| test_viewports | ||
| user_attention | ||
| README.md | ||
| run_all.sh | ||
README.md
egui and eframe examples
All the examples in this folder uses eframe to set up a window for egui. Some examples are specific to eframe, but many are applicable to any egui integration.
There are a lot more examples at https://www.egui.rs, and it has links to the source code of each example.
Also check out the official docs at https://docs.rs/egui and https://docs.rs/eframe.
Note that all the examples on master are for the latest master version of egui.
If you want to look for examples for a specific version of egui, go to that tag, e.g. https://github.com/emilk/egui/tree/latest/examples.