mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 06:11:30 +11:00
150d2706f9
Some window managers like i3wm will actually nest application windows (like those opened by winit) within other windows to, for example, add decorations. Initially when debugging this method on i3, the x and y positions were always returned as "2". The solution that other xlib abstractions use is to climb up the window hierarchy until just below the root window, and that window must be used to determine the appropriate position. This patch doesn't take into account borders or the window's offset within its parent, but it's much more usable than the original implementation on certain WMs. |
||
---|---|---|
.circleci | ||
examples | ||
src | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
appveyor.yml | ||
Cargo.toml | ||
CHANGELOG.md | ||
LICENSE | ||
README.md |
winit - Cross-platform window creation and management in Rust
[dependencies]
winit = "0.7"
Documentation
Usage
Winit is a window creation and management library. It can create windows and lets you handle events (for example: the window being resized, a key being pressed, a mouse movement, etc.) produced by window.
Winit is designed to be a low-level brick in a hierarchy of libraries. Consequently, in order to show something on the window you need to use the platform-specific getters provided by winit, or another library.
extern crate winit;
fn main() {
let mut events_loop = winit::EventsLoop::new();
let window = winit::Window::new(&events_loop).unwrap();
events_loop.run_forever(|event| {
match event {
winit::Event::WindowEvent { event: winit::WindowEvent::Closed, .. } => {
winit::ControlFlow::Break
},
_ => winit::ControlFlow::Continue,
}
});
}
Platform-specific usage
Emscripten and WebAssembly
Building a binary will yield a .js
file. In order to use it in an HTML file, you need to:
- Put a
<canvas id="my_id"></canvas>
element somewhere. A canvas corresponds to a winit "window". - Write a Javascript code that creates a global variable named
Module
. SetModule.canvas
to the ID of the<canvas>
element (in the example this would be"my_id"
). More information here. - Make sure that you insert the
.js
file generated by Rust after theModule
variable is created.