* Add dry run feature for anchor calculation. (#1)
This PR resolves issue: emilk#1852
We introduce dry_run flag which makes component invisible until we do second pass of rendering - which allows us to properly calculate position for anchor. (This removes rapid flicker when new window is drawn for the first time).
* Change naming convention and add description
* Better estimate the plot bounds for generator functions
Avoid infinities, and sample more densely
* Optimize and improve plot auto-bounds logic
* Fix cropping out of the top/bottom of plots during auto-bounds
* Don't call scroll if TextEdit is fully in view
* Explain why the new logic was added
* cargo fmt
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
* code hotkey to N, move superscript hotkey to Y
ctrl A S D F G H are all taken, CTRL Q is traditionally to remove formatting and should be reserved for that. CTRL W E R T are also all taken. CTRL Z X C V are taken so all of the first 4/5 keys of each row except Q are inaccessible.
* strike through conflict, update text
* fixed underline command
* added ALTSHIFT, browser documentation
* underline ALTSHIFT Q
it leaves the Q character which is considered a bug but before this pull underline was not working entirely so this is progress
* update text
* ALTSHIFT is treated as a command
* added eighth command, ALTSHIFT+W adds two spaces
* CTRL+Y to toggle case on text_edit demo
* better code
* Revised Menu
* fix dead link
* Update lib.rs
* Update easy_mark_editor.rs
* Update egui/src/data/input.rs
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
* update
* reverted variables used for debugging
* fixed labels hotkey conflict
* comments
* fmt
* cargo fmt
* Nice hotkey menu
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This provides a better estimate of a typical frametime in reactive mode.
From the docstring of `stable_dt`:
Time since last frame (in seconds), but gracefully handles the first frame after sleeping in reactive mode.
In reactive mode (available in e.g. `eframe`), `egui` only updates when there is new input or something animating.
This can lead to large gaps of time (sleep), leading to large [`Self::unstable_dt`].
If `egui` requested a repaint the previous frame, then `egui` will use
`stable_dt = unstable_dt;`, but if `egui` did not not request a repaint last frame,
then `egui` will assume `unstable_dt` is too large, and will use
`stable_dt = predicted_dt;`.
This means that for the first frame after a sleep,
`stable_dt` will be a prediction of the delta-time until the next frame,
and in all other situations this will be an accurate measurement of time passed
since the previous frame.
Note that a frame can still stall for various reasons, so `stable_dt` can
still be unusually large in some situations.
When animating something, it is recommended that you use something like
`stable_dt.min(0.1)` - this will give you smooth animations when the framerate is good
(even in reactive mode), but will avoid large jumps when framerate is bad,
and will effectively slow down the animation when FPS drops below 10.