summaryrefslogtreecommitdiffstats
path: root/native/src/widget/pane_grid.rs
diff options
context:
space:
mode:
authorLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2022-10-19 13:05:56 -0700
committerLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2022-10-19 13:05:56 -0700
commit470723c232493282c513af47d19b3877066ceb2e (patch)
tree783432bbfe1faa0543b581e7a523377d90ecf74e /native/src/widget/pane_grid.rs
parentfb036529a222126da3f119da4d94d17776460421 (diff)
downloadiced-470723c232493282c513af47d19b3877066ceb2e.tar.gz
iced-470723c232493282c513af47d19b3877066ceb2e.tar.bz2
iced-470723c232493282c513af47d19b3877066ceb2e.zip
Eliminate unnecessary allocation
Diffstat (limited to 'native/src/widget/pane_grid.rs')
-rw-r--r--native/src/widget/pane_grid.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs
index 3ef578bf..12ccbb41 100644
--- a/native/src/widget/pane_grid.rs
+++ b/native/src/widget/pane_grid.rs
@@ -757,32 +757,12 @@ pub fn draw<Renderer, T>(
cursor_position
};
- // Render picked pane last
- let mut elements = elements.zip(layout.children()).collect::<Vec<_>>();
- elements
- .sort_by_key(|((id, _), _)| picked_pane.map(|(id, _)| id) == Some(*id));
+ let mut render_picked_pane = None;
- for ((id, pane), layout) in elements {
+ for ((id, pane), layout) in elements.zip(layout.children()) {
match picked_pane {
Some((dragging, origin)) if id == dragging => {
- let bounds = layout.bounds();
-
- renderer.with_translation(
- cursor_position
- - Point::new(bounds.x + origin.x, bounds.y + origin.y),
- |renderer| {
- renderer.with_layer(bounds, |renderer| {
- draw_pane(
- pane,
- renderer,
- default_style,
- layout,
- pane_cursor_position,
- viewport,
- );
- });
- },
- );
+ render_picked_pane = Some((pane, origin, layout.bounds()));
}
_ => {
draw_pane(
@@ -797,6 +777,26 @@ pub fn draw<Renderer, T>(
}
}
+ // Render picked pane last
+ if let Some((pane, origin, bounds)) = render_picked_pane {
+ renderer.with_translation(
+ cursor_position
+ - Point::new(bounds.x + origin.x, bounds.y + origin.y),
+ |renderer| {
+ renderer.with_layer(bounds, |renderer| {
+ draw_pane(
+ pane,
+ renderer,
+ default_style,
+ layout,
+ pane_cursor_position,
+ viewport,
+ );
+ });
+ },
+ );
+ };
+
if let Some((axis, split_region, is_picked)) = picked_split {
let highlight = if is_picked {
theme.picked_split(style)