Skip to content

Fix/pane grid continuity#2628

Merged
hecrj merged 7 commits intoiced-rs:masterfrom
tarkah:fix/pane-grid-continuity
Oct 24, 2024
Merged

Fix/pane grid continuity#2628
hecrj merged 7 commits intoiced-rs:masterfrom
tarkah:fix/pane-grid-continuity

Conversation

@tarkah
Copy link
Member

@tarkah tarkah commented Oct 4, 2024

Fixes issues w/ pane grid continuity of widget state when adding / removing panes, drag / dropping panes, or maximize / restoring panes. I've tested this fix with halloy and can confirm that scrollable offsets within each pane are perfectly retained when doing all the above operations. Previously the states would have gotten shuffled around relative to the panes which would cause the wrong scrollable offsets to get used for each pane (jump around).

For maximize / restore, we still need to build view for the hidden panes so diff'ing them doesn't break. This can be optimized to avoid calling diff on those hidden panes, allowing us to skip viewing them, but this adds additional complexity I didn't want to try and tackle here. The current approach allows us to naively zip all content, layout & state and then just applying a filter to return the maximized pane within each widget operation.

tarkah and others added 5 commits October 24, 2024 13:05
This ensures continuity in how panes are iterated on
when building widget state
We can associate each state with a `Pane` and compare
that against the new panes to remove states w/ respective
panes which no longer exist.

Because we always increment `Pane`, new states are always
added to the end, so this retain + add new state approach
will ensure continuity when panes are added & removed
State continuity is dependent on keeping a node associated
to it's original `Pane` id. When splitting -> swapping
nodes, we need to assign it back to the original `Pane`
to enforce continuity.
@hecrj hecrj force-pushed the fix/pane-grid-continuity branch from 0c4fd57 to 659669d Compare October 24, 2024 11:48
Copy link
Member

@hecrj hecrj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome! 🎉

I fixed some duplicated state and renamed some stuff. The changes also exposed a pesky bug in the responsive widget.

Let's merge!

@hecrj hecrj merged commit 17b35df into iced-rs:master Oct 24, 2024
@hecrj hecrj added this to the 0.14 milestone Oct 24, 2024
@hecrj hecrj added bug Something isn't working improvement An internal improvement feature New feature or request widget addition fix labels Oct 24, 2024
@tarkah
Copy link
Member Author

tarkah commented Oct 24, 2024

Looks great, thanks!

@tarkah tarkah deleted the fix/pane-grid-continuity branch October 24, 2024 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

addition bug Something isn't working feature New feature or request fix improvement An internal improvement widget

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants