* use f64 when accumulating virtual height above and below visible
region
* break the big loop iterating over heights into three loops, one for
each non-visible region, and one for the visible region
* retain each row's stripe color using an enumeration over the given
heights iterator
* use a VIRTUAL_EXTENSION constant to extend the "visible" region of the
table above and below the actual visible region to provide the
illusion of rows sliding into and out of sight
Introduce `TableBody.heterogenous_rows` and `TableRowBuilder`, the former of which takes as an argument the latter. `TableRowBuilder` provides two methods that enable virtual scrolling for rows with non-uniform heights. Those methods are:
* `TableRowBuilder.row_heights` which returns an iterator over `f32` to allow incremental virtual scroll buffer calculation.
* `TableRowBuilder.populate_row` which `TableBody.heterogenous_rows` uses to allow `TableRowBuilder` implementations to, you guessed it, populate rows that are visible.
One thought that occurs to me while writing this description is that
`TableBody.heterogenous_rows` could look more like the following:
```
pub fn heterogenous_rows(
mut self,
row_heights: impl Iterator<Item = f32> + '_,
mut row: impl FnMut(usize, TableRow<'_, '_>),
)
```
This could potentially be easier to use, considering all the trouble I had coming up with and implementing the trait. Happy to make this change if the maintainers prefer.
* Clip by default
* Fix some spacing bugs
* datepicker: look nicer in light mode
* datepicker: show month names
* Table: don't allow resize of last column if it is Size::Remainder
* Let 1D strips fill up parent width/height
* Add Strip + Table + DatePicker to egui_extras changelog
* Expose some dragging- and pointer related context/memory methods
* Make tables resizable