Repository navigation
v0.25.0 — a window opens where it was closed
A window could not open the way it was closed. Its size was a constant handed
to WindowConfig once, and where the window had got to was never reported at
all, so every run started at whatever the application had compiled in.
WindowConfig gains position and maximized, and InputEvent gains
SurfaceMoved — the other half of SurfaceResized: that one says how big the
window is, this one says where it is and what the window manager has done with
it. Keep what the last one told you, hand it back to the next, and the window
opens where it was.
The units are the ones each fact is really kept in. The size stays logical,
because it says how much of the desk a window covers and that should survive
moving to a display of another DPI. The corner is physical, because a desk
spanning displays of different DPI has no single logical grid to name a point
in, and because physical is what the window system reports and takes back.
Two things that would otherwise make this quietly wrong:
- On macOS the position attribute places the content below the title bar,
whileouter_position— whatSurfaceMovedreports — is the frame's own
corner. Remembered through that pair, a window climbs its own title bar's
height every single time it opens. The corner is set again with
set_outer_positiononce the window exists, in the units it will be read
back in, so the round trip is exact. - A position on a display that has since been unplugged is ignored rather
than honoured, which is a window opening somewhere nobody can reach it. A
machine reporting no displays at all is taken at its word.
Maximising arrives as a resize and a move together, and on some window
managers as only the resize, so the placement is looked at after both.
Nothing that built against 0.24.1 changes behaviour: both new fields default
to what happened before, and InputEvent is #[non_exhaustive]. A
WindowConfig written as a struct literal without ..Default::default()
needs the two new fields, which is why this is the minor and not a patch.
Download the designer
A visual form designer for DeniseUI, and the .dform command line tool. No
Rust toolchain needed.
| macOS (Intel and Apple silicon) | denise-0.25.0-universal-apple-darwin.dmg |
| Windows x86-64 | denise-0.25.0-x86_64-pc-windows-msvc.zip |
| Linux x86-64 | denise-0.25.0-x86_64-unknown-linux-gnu.tar.gz |
| Linux aarch64 | denise-0.25.0-aarch64-unknown-linux-gnu.tar.gz |
Each has a .sha256 beside it. Every archive carries the reference form, so
there is something to open.
These are not signed. There is no Apple Developer account behind this
project and no Windows code-signing certificate, so the first launch needs one
extra step: on macOS, right-click the app and choose Open; on Windows,
More info then Run anyway. Linux does not care.