emilk / emilk/egui_plot

Increase control over plot widget inside of show method

Open
#2 0 comments 7 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
468
Forks
108
Avg merge
15m
Merged PRs (30d)
3

Description

I would like to be able to control as many aspects of the plot widget as possible from inside the `Plot::show` method to allow deciding whether to allow dragging or zooming based on the pointer position in the plot (and the event state, but that is already accessible from the `PlotUi::ctx`). See my original comment on this here: https://github.com/emilk/egui/issues/759#issuecomment-1013767585

I have added `allow_drag` to the `PlotUi` structure which seems to be working good (although I need to test it more thoroughly for what I am wanting to do). I will look into adding the other viable control functions to it as well (e.g., `allow_zoom`, `show_x`, `show_y`, `show_background`, etc.), I am thinking that anything that is used after the call to the `build_fn` in the `Plot::show` method should be made available for consistency and flexibility. I will make a pull request when I've got everything added, cleaned up, and tested.

@emilk @EmbersArc Do you have any particular design input on this? The simplest non-breaking API change I can see is to just add each of the fields such as `allow_drag`, `allow_zoom`, etc. to the `PlotUi` structure (and add associated methods to mutate them), and default their values to match the fields on the `Plot` structure (so if they are only set on the Plot structure then it is honored), then in the `build_fn` they can be updated. This is somewhat awkward since there are then duplicate methods used to control the plot (one for the `Plot` structure and one for the `PlotUi` structure), would it be better to just move the fields and methods so they are only on the `PlotUi` structure (API breaking change)? Or maybe there's another better way to get at what I'm wanting to add?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.