diff options
author | 2021-09-02 16:30:14 +0700 | |
---|---|---|
committer | 2021-09-02 16:30:14 +0700 | |
commit | 7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51 (patch) | |
tree | bd07aaa553b5163f91073f19a58a76a4a3fed03b /winit | |
parent | 6fce35393fb2dc3dcbc5f423fa8472f5ce1f7027 (diff) | |
download | iced-7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51.tar.gz iced-7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51.tar.bz2 iced-7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51.zip |
Implement `move_to` and `resize` commands for `window`
Diffstat (limited to 'winit')
-rw-r--r-- | winit/src/application.rs | 29 | ||||
-rw-r--r-- | winit/src/lib.rs | 1 | ||||
-rw-r--r-- | winit/src/window.rs | 23 |
3 files changed, 44 insertions, 9 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index f97f9bf1..722b4757 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -159,7 +159,13 @@ where let mut clipboard = Clipboard::connect(&window); - run_command(init_command, &mut runtime, &mut clipboard, &mut proxy); + run_command( + init_command, + &mut runtime, + &mut clipboard, + &mut proxy, + &window, + ); runtime.track(subscription); let (compositor, renderer) = C::new(compositor_settings, Some(&window))?; @@ -300,6 +306,7 @@ async fn run_instance<A, E, C>( &mut proxy, &mut debug, &mut messages, + &window, ); // Update window @@ -503,6 +510,7 @@ pub fn update<A: Application, E: Executor>( proxy: &mut winit::event_loop::EventLoopProxy<A::Message>, debug: &mut Debug, messages: &mut Vec<A::Message>, + window: &winit::window::Window, ) { for message in messages.drain(..) { debug.log_message(&message); @@ -511,7 +519,7 @@ pub fn update<A: Application, E: Executor>( let command = runtime.enter(|| application.update(message)); debug.update_finished(); - run_command(command, runtime, clipboard, proxy); + run_command(command, runtime, clipboard, proxy, window); } let subscription = application.subscription(); @@ -524,8 +532,10 @@ pub fn run_command<Message: 'static + std::fmt::Debug + Send, E: Executor>( runtime: &mut Runtime<E, Proxy<Message>, Message>, clipboard: &mut Clipboard, proxy: &mut winit::event_loop::EventLoopProxy<Message>, + window: &winit::window::Window, ) { use iced_native::command; + use iced_native::window; for action in command.actions() { match action { @@ -544,7 +554,20 @@ pub fn run_command<Message: 'static + std::fmt::Debug + Send, E: Executor>( clipboard.write(contents); } }, - command::Action::Window(_action) => unimplemented! {}, + command::Action::Window(action) => match action { + window::Action::Resize { width, height } => { + window.set_inner_size(winit::dpi::LogicalSize { + width, + height, + }); + } + window::Action::Move { x, y } => { + window.set_outer_position(winit::dpi::LogicalPosition { + x, + y, + }); + } + }, } } } diff --git a/winit/src/lib.rs b/winit/src/lib.rs index 12df9d8e..30813152 100644 --- a/winit/src/lib.rs +++ b/winit/src/lib.rs @@ -28,6 +28,7 @@ pub mod application; pub mod clipboard; pub mod conversion; pub mod settings; +pub mod window; mod error; mod mode; diff --git a/winit/src/window.rs b/winit/src/window.rs index 8ccb13ed..f3207e68 100644 --- a/winit/src/window.rs +++ b/winit/src/window.rs @@ -1,7 +1,18 @@ -pub use iced_native::window::*; +//! Interact with the window of your application. +use crate::command::{self, Command}; +use iced_native::window; -/// The window of an [`Application`]. -/// -/// [`Application`]: crate::Application -#[derive(Debug)] -pub struct Window {} +pub use window::Event; + +/// Resizes the window to the given logical dimensions. +pub fn resize<Message>(width: u32, height: u32) -> Command<Message> { + Command::single(command::Action::Window(window::Action::Resize { + width, + height, + })) +} + +/// Moves a window to the given logical coordinates. +pub fn move_to<Message>(x: i32, y: i32) -> Command<Message> { + Command::single(command::Action::Window(window::Action::Move { x, y })) +} |