Scrolling is now performed in process instead of physics process.
This makes scrolling much smoother if Physics Ticks per Second is lower
than the rendered FPS.
Fixes#85032
The code that fix the issue is courtesy of @Jesusemora, I just added
unit tests for it and did a rebase with the latest changes on master.
Co-authored-by: Jesusemora <32273722+Jesusemora@users.noreply.github.com>
Added TreeItem::last_child to avoid needing to iterate through all children to get to the end. This mainly helps in cases where one TreeItem has many children (1000s), and new children are added to the end, as each add had to iterate through all previously added children.
Prior to this fix, scrolling via mouse drag on touchscreen devices, and
drag&drop operation on a `TreeItem` element would conflict with each other
preventing the drag scroll from being released when the mouse button is
released.
The issue is addressed by disabling drag&drop when drag scrolling is ongoing.
- Take scroll bar space and column title buttons into account
- Fix first column min size sometimes missing one level of indent
- Fix cell min size ignoring text overrun behavior and item inner margin
- Update min size when `hide_root` or `column_title_visible` changes
Wrong description of `item_inner_margin_*` constants is also fixed
- Fix incorrect tooltip and `get_button_id_at_position()` when column
title is visible and when RTL layout is used
- Take `button_margin`, `h_separation`, and `item_margin` into account
Editor would not be brought up when clicking on all but the last column on a TreeItem with SelectMode=Row with
multiple columns and when the editor was being brought up when clicking on the last column, it was editing the first column
Fixed draw_item, gui_input and edit_selected functions by setting set_meta parameter for each column
Fixed select_single_item function by changing selected_col depending on input
This also moves them to use Shift instead of Alt, as was already
done for mouse interactions.
Shortcuts in Tree were also made non-exact matches so they still
work if modifiers are held. This is important for up/down
shortcuts, especially once support for selecting with
Shift + up/down is implemented.