summaryrefslogtreecommitdiffstats
path: root/winit
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-09-02 16:30:14 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-09-02 16:30:14 +0700
commit7cb6e7438f7fb5d0d8be4528a31b888e2b12cd51 (patch)
treebd07aaa553b5163f91073f19a58a76a4a3fed03b /winit
parent6fce35393fb2dc3dcbc5f423fa8472f5ce1f7027 (diff)
downloadiced-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.rs29
-rw-r--r--winit/src/lib.rs1
-rw-r--r--winit/src/window.rs23
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 }))
+}