Go to file
Francesca Frangipane eadd9a19b2
Replace Closed event with CloseRequested and Destroyed (#476)
* Replace Closed event with CloseRequested and Destroyed

Implements #434

The existing Closed event had ambiguous meaning, both in name and in
cross-platform behavior. Closed is now split into two more precise events:

* CloseRequested - the window has been requested to close, most commonly by
having clicked the window's close button. Whether or not you respond by
closing the window is up to you.

* Destroyed - the window has been destroyed, and can no longer be safely
used.

Most notably, now you can reliably implement classic patterns like
prompting the user to save their work before closing, and have the
opportunity to perform any necessary cleanup.

Migrating to the new API is straightforward. In most cases, you can simply
replace all existing usages of Closed with CloseRequested. For more
information, see the example programs, particularly handling_close and
multiwindow.

iOS applications must replace all usages of Closed with Destroyed, and
require no other changes.
2018-04-24 16:20:40 -04:00
.circleci Implement virtual key translation for emscripten (#289) 2017-09-16 15:46:53 +02:00
examples Replace Closed event with CloseRequested and Destroyed (#476) 2018-04-24 16:20:40 -04:00
src Replace Closed event with CloseRequested and Destroyed (#476) 2018-04-24 16:20:40 -04:00
tests x11: Windows are Sync again (#474) 2018-04-21 11:53:57 -04:00
.gitattributes Initial commit 2014-07-27 11:41:26 +02:00
.gitignore win32: Bump user32-sys req for MapVirtualKeyA 2015-09-22 14:01:27 -04:00
.gitmodules Add basic support for Android 2014-09-11 18:28:07 +02:00
.travis.yml Use travis matrix for the ios/linux variants (#313) 2017-10-08 15:51:55 +02:00
appveyor.yml Fix the appveyor build 2015-09-24 08:37:52 +02:00
Cargo.toml Implement set_maximized, get_current_monitor, set_fullscreen and set_decorations for windows (#457) 2018-04-12 13:12:15 -04:00
CHANGELOG.md Replace Closed event with CloseRequested and Destroyed (#476) 2018-04-24 16:20:40 -04:00
LICENSE Initial commit 2014-07-27 11:41:26 +02:00
README.md Replace Closed event with CloseRequested and Destroyed (#476) 2018-04-24 16:20:40 -04:00

winit - Cross-platform window creation and management in Rust

Docs.rs

Build Status Build status

[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::CloseRequested,
              ..
            } => 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. Set Module.canvas to the element of the <canvas> element (in the example you would retrieve it via document.getElementById("my_id")). More information here.
  • Make sure that you insert the .js file generated by Rust after the Module variable is created.