| 206 | } |
| 207 | |
| 208 | private void bottom() { |
| 209 | selected().map(a -> a.properties.get(Box.frame).y + a.properties.get(Box.frame).h) |
| 210 | .max(Float::compare) |
| 211 | .ifPresent(x -> { |
| 212 | selected().forEach(bx -> { |
| 213 | set(bx, z -> z.y = x.floatValue() - bx.properties.get(Box.frame).h); |
| 214 | bx.properties.get(Box.frame).y = x.floatValue() - bx.properties.get(Box.frame).h; |
| 215 | }); |
| 216 | Drawing.dirty(this); |
| 217 | }); |
| 218 | } |
| 219 | |
| 220 | public Stream<Box> selected() { |
| 221 | return breadthFirst(both()).filter(x -> x.properties.isTrue(Mouse.isSelected, false)); |