diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2024-10-29 09:31:09 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2024-10-29 09:40:29 +1300 |
commit | 608494aad09f520e7d78bff9950dbb282f8276a2 (patch) | |
tree | 543cb64ac945d358cbf646544c5aa663db083d6c | |
parent | 47a754a7beb8741bfe0469236036cb8023043cd8 (diff) | |
download | phosphor-608494aad09f520e7d78bff9950dbb282f8276a2.zip |
Add a SetIcon request type
This is used to set the window icon at runtime.
This commit also exposes the Icon and CursorIcon types in the crate
root, as they were previously inaccessible.
-rw-r--r-- | src/events.rs | 2 | ||||
-rw-r--r-- | src/lib.rs | 1 | ||||
-rw-r--r-- | src/window.rs | 3 | ||||
-rw-r--r-- | src/window_builder.rs | 6 |
4 files changed, 7 insertions, 5 deletions
diff --git a/src/events.rs b/src/events.rs index b738e5b..7729a63 100644 --- a/src/events.rs +++ b/src/events.rs @@ -3,7 +3,6 @@ use crate::*; use winit::dpi::PhysicalSize; use winit::event::ElementState; use winit::keyboard::KeyCode; -use winit::window::CursorIcon; use std::path::PathBuf; @@ -17,6 +16,7 @@ pub enum Request { SetVisible(bool), SetPixelScale(u32), SetCursor(Option<CursorIcon>), + SetIcon(Option<Icon>), Redraw, CreateWindow(WindowBuilder), CloseWindow, @@ -14,6 +14,7 @@ pub use phosphor::Phosphor; pub use event_queue::EventWriter; pub use winit::keyboard::{KeyCode, ModifiersState}; +pub use winit::window::{CursorIcon, Icon}; pub type Position = geometry::Point<i32>; pub type Dimensions = geometry::Dimensions<u32>; diff --git a/src/window.rs b/src/window.rs index 377d460..70c9c02 100644 --- a/src/window.rs +++ b/src/window.rs @@ -72,6 +72,8 @@ impl PhosphorWindow { window.set_cursor_visible(false); } + window.set_window_icon(builder.icon); + Self { winit: window, program: builder.program, @@ -100,6 +102,7 @@ impl PhosphorWindow { Request::SetVisible(visible) => self.winit.set_visible(visible), Request::SetPixelScale(scale) => self.set_scale(scale), Request::SetCursor(cursor) => self.set_cursor(cursor), + Request::SetIcon(icon) => self.winit.set_window_icon(icon), Request::Redraw => self.winit.request_redraw(), Request::CloseWindow => { self.marked_for_destruction = true; diff --git a/src/window_builder.rs b/src/window_builder.rs index 55c99f2..21787e6 100644 --- a/src/window_builder.rs +++ b/src/window_builder.rs @@ -1,7 +1,5 @@ use crate::*; -use winit::window::{Cursor, Icon}; - pub struct WindowBuilder { pub program: Box<dyn WindowProgram>, @@ -9,8 +7,8 @@ pub struct WindowBuilder { pub dimensions: Option<Dimensions>, pub scale: u32, pub title: Option<String>, + pub cursor: Option<CursorIcon>, pub icon: Option<Icon>, - pub cursor: Option<Cursor>, pub fullscreen: bool, } @@ -22,8 +20,8 @@ impl WindowBuilder { dimensions: None, scale: 1, title: None, - icon: None, cursor: None, + icon: None, fullscreen: false, } } |