mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
egui_extras::Table improvements (#2369)
* Use simple `ui.interact` for the resize line * Introduce TableReizeState * Simplify some code * Add striped options to table demo * Auto-size table columns by double-clicking the resize line * Table: add option to auto-size the columns * Table: don't let column width gets too small, unless clipping is on * egui_extras: always use serde Otherwise using `get_persisted` etc is impossible, and working around that tedious. * Avoid clipping last column in a resizable table * Some better naming * Table: Use new `Column` for setting column sizes and properties Also make `clip` a per-column property * All Table:s store state for auto-sizing purposes * Customize each column wether or not it is resizable * fix some auto-sizing bugs * Fix shrinkage of adaptive column content * Rename `scroll` to `vscroll` for clarity * Add Table::scroll_to_row * scroll_to_row takes alignment * Fix bug in table sizing * Strip: turn clipping OFF by default, because it is dangerous and sucks * Add TableBody::mac_rect helper * Table: add options to control the scroll area height. * Docstring fixes * Cleanup
This commit is contained in:
@@ -66,6 +66,10 @@ pub struct ScrollAreaOutput<R> {
|
||||
/// The current state of the scroll area.
|
||||
pub state: State,
|
||||
|
||||
/// The size of the content. If this is larger than [`Self::inner_rect`],
|
||||
/// then there was need for scrolling.
|
||||
pub content_size: Vec2,
|
||||
|
||||
/// Where on the screen the content is (excludes scroll bars).
|
||||
pub inner_rect: Rect,
|
||||
}
|
||||
@@ -198,6 +202,8 @@ impl ScrollArea {
|
||||
|
||||
/// Set the horizontal and vertical scroll offset position.
|
||||
///
|
||||
/// Positive offset means scrolling down/right.
|
||||
///
|
||||
/// See also: [`Self::vertical_scroll_offset`], [`Self::horizontal_scroll_offset`],
|
||||
/// [`Ui::scroll_to_cursor`](crate::ui::Ui::scroll_to_cursor) and
|
||||
/// [`Response::scroll_to_me`](crate::Response::scroll_to_me)
|
||||
@@ -209,6 +215,8 @@ impl ScrollArea {
|
||||
|
||||
/// Set the vertical scroll offset position.
|
||||
///
|
||||
/// Positive offset means scrolling down.
|
||||
///
|
||||
/// See also: [`Self::scroll_offset`], [`Ui::scroll_to_cursor`](crate::ui::Ui::scroll_to_cursor) and
|
||||
/// [`Response::scroll_to_me`](crate::Response::scroll_to_me)
|
||||
pub fn vertical_scroll_offset(mut self, offset: f32) -> Self {
|
||||
@@ -218,6 +226,8 @@ impl ScrollArea {
|
||||
|
||||
/// Set the horizontal scroll offset position.
|
||||
///
|
||||
/// Positive offset means scrolling right.
|
||||
///
|
||||
/// See also: [`Self::scroll_offset`], [`Ui::scroll_to_cursor`](crate::ui::Ui::scroll_to_cursor) and
|
||||
/// [`Response::scroll_to_me`](crate::Response::scroll_to_me)
|
||||
pub fn horizontal_scroll_offset(mut self, offset: f32) -> Self {
|
||||
@@ -541,18 +551,20 @@ impl ScrollArea {
|
||||
let id = prepared.id;
|
||||
let inner_rect = prepared.inner_rect;
|
||||
let inner = add_contents(&mut prepared.content_ui, prepared.viewport);
|
||||
let state = prepared.end(ui);
|
||||
let (content_size, state) = prepared.end(ui);
|
||||
ScrollAreaOutput {
|
||||
inner,
|
||||
id,
|
||||
state,
|
||||
content_size,
|
||||
inner_rect,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Prepared {
|
||||
fn end(self, ui: &mut Ui) -> State {
|
||||
/// Returns content size and state
|
||||
fn end(self, ui: &mut Ui) -> (Vec2, State) {
|
||||
let Prepared {
|
||||
id,
|
||||
mut state,
|
||||
@@ -847,7 +859,7 @@ impl Prepared {
|
||||
|
||||
state.store(ui.ctx(), id);
|
||||
|
||||
state
|
||||
(content_size, state)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user