summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bridle <bridle.benjamin@gmail.com>2024-10-29 09:31:09 +1300
committerBen Bridle <bridle.benjamin@gmail.com>2024-10-29 09:40:29 +1300
commit608494aad09f520e7d78bff9950dbb282f8276a2 (patch)
tree543cb64ac945d358cbf646544c5aa663db083d6c
parent47a754a7beb8741bfe0469236036cb8023043cd8 (diff)
downloadphosphor-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.rs2
-rw-r--r--src/lib.rs1
-rw-r--r--src/window.rs3
-rw-r--r--src/window_builder.rs6
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,
diff --git a/src/lib.rs b/src/lib.rs
index f856775..acf8287 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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,
}
}