mirror of
https://github.com/emilk/egui.git
synced 2026-08-30 13:20:05 -04:00
ScrollArea improvements for user configurability (#5443)
* Closes <https://github.com/emilk/egui/issues/5406> * [x] I have followed the instructions in the PR template The changes follow what is described in the issue with a couple changes: - Scroll bars are not hidden when dragging is disabled, for that `ScrollArea::scroll_bar_visibility()` has to be used, this is as not to limit the user configurability by imposing a specific function. The user might want to retain the scrollbars visibility to show the current position. - The input for mouse wheel scrolling is unchanged. When I inspected the code initially I made a mistake in recognizing the source of scrolling. Current implementation is in fact using `InputState::smooth_scroll_delta` and not `PassState::scroll_delta`, therefore it is possible to prevent scrolling by setting the `InputState::smooth_scroll_delta` to zero before painting the `ScrollArea`. A simple demo is available at https://github.com/MStarha/egui_scroll_area_test
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
//! Takes all available height, so if you want something below the table, put it in a strip.
|
||||
|
||||
use egui::{
|
||||
scroll_area::{ScrollAreaOutput, ScrollBarVisibility},
|
||||
scroll_area::{ScrollAreaOutput, ScrollBarVisibility, ScrollSource},
|
||||
Align, Id, NumExt as _, Rangef, Rect, Response, ScrollArea, Ui, Vec2, Vec2b,
|
||||
};
|
||||
|
||||
@@ -745,7 +745,10 @@ impl Table<'_> {
|
||||
|
||||
let mut scroll_area = ScrollArea::new([false, vscroll])
|
||||
.id_salt(state_id.with("__scroll_area"))
|
||||
.drag_to_scroll(drag_to_scroll)
|
||||
.scroll_source(ScrollSource {
|
||||
drag: drag_to_scroll,
|
||||
..Default::default()
|
||||
})
|
||||
.stick_to_bottom(stick_to_bottom)
|
||||
.min_scrolled_height(min_scrolled_height)
|
||||
.max_height(max_scroll_height)
|
||||
|
||||
Reference in New Issue
Block a user