Windows: implement with_resizable (#540) (#541)

* Windows: implement with_resizable (#540)

* Fixed typo
This commit is contained in:
Danny Fritz 2018-06-02 08:51:24 -06:00 committed by Francesca Frangipane
parent bbfe57400d
commit 58a00bffbb
5 changed files with 46 additions and 0 deletions

View file

@ -2,6 +2,7 @@
- On X11, the `Moved` event is no longer sent when the window is resized without changing position.
- `MouseCursor` and `CursorState` now implement `Default`.
- `WindowBuilder::with_resizable` implemented for Windows.
# Version 0.15.0 (2018-05-22)

24
examples/no_resize.rs Normal file
View file

@ -0,0 +1,24 @@
extern crate winit;
fn main() {
let mut events_loop = winit::EventsLoop::new();
let _window = winit::WindowBuilder::new()
.with_title("A non-resizable window!")
.with_dimensions(200, 200)
.with_resizable(false)
.build(&events_loop)
.unwrap();
events_loop.run_forever(|event| {
println!("{:?}", event);
match event {
winit::Event::WindowEvent {
event: winit::WindowEvent::CloseRequested,
..
} => winit::ControlFlow::Break,
_ => winit::ControlFlow::Continue,
}
});
}

View file

@ -422,6 +422,11 @@ pub struct WindowAttributes {
/// The default is `None`.
pub max_dimensions: Option<(u32, u32)>,
/// [Windows only] Whether the window is resizable or not
///
/// The default is `true`.
pub resizable: bool,
/// Whether the window should be set as fullscreen upon creation.
///
/// The default is `None`.
@ -475,6 +480,7 @@ impl Default for WindowAttributes {
dimensions: None,
min_dimensions: None,
max_dimensions: None,
resizable: true,
title: "winit window".to_owned(),
maximized: false,
fullscreen: None,

View file

@ -843,6 +843,10 @@ unsafe fn init(
style | winuser::WS_VISIBLE
};
if !window.resizable {
style &= !winuser::WS_SIZEBOX;
}
if pl_attribs.parent.is_some() {
style |= winuser::WS_CHILD;
}

View file

@ -49,6 +49,17 @@ impl WindowBuilder {
self
}
/// Sets whether the window is resizable or not
///
/// ## Platform-specific
///
/// This only has an effect on Windows.
#[inline]
pub fn with_resizable(mut self, resizable: bool) -> WindowBuilder {
self.window.resizable = resizable;
self
}
/// Requests a specific title for the window.
#[inline]
pub fn with_title<T: Into<String>>(mut self, title: T) -> WindowBuilder {