summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Bingus <shankern@protonmail.com>2023-01-18 17:04:11 -0800
committerLibravatar Bingus <shankern@protonmail.com>2023-01-18 17:04:11 -0800
commit0a643287deece9234b64cc843a9f6ae3e6e4806e (patch)
treef0072a46432d8e2f1a8a4131ac05297283d2dea5
parent7e9a12a4aa64deda193dfc0f18c34f93e3adc852 (diff)
downloadiced-0a643287deece9234b64cc843a9f6ae3e6e4806e.tar.gz
iced-0a643287deece9234b64cc843a9f6ae3e6e4806e.tar.bz2
iced-0a643287deece9234b64cc843a9f6ae3e6e4806e.zip
Added window::Id to multi_window application's scale_factor
Diffstat (limited to '')
-rw-r--r--examples/multi_window/src/main.rs8
-rw-r--r--src/multi_window/application.rs6
-rw-r--r--winit/src/multi_window.rs2
-rw-r--r--winit/src/multi_window/state.rs4
4 files changed, 14 insertions, 6 deletions
diff --git a/examples/multi_window/src/main.rs b/examples/multi_window/src/main.rs
index 18536bdf..0d0a809b 100644
--- a/examples/multi_window/src/main.rs
+++ b/examples/multi_window/src/main.rs
@@ -12,6 +12,7 @@ use iced::{Color, Command, Element, Length, Settings, Size, Subscription};
use iced_lazy::responsive;
use iced_native::{event, subscription, Event};
+use iced_native::window::Id;
use std::collections::HashMap;
pub fn main() -> iced::Result {
@@ -29,6 +30,7 @@ struct Example {
#[derive(Debug)]
struct Window {
title: String,
+ scale: f64,
panes: pane_grid::State<Pane>,
focus: Option<pane_grid::Pane>,
}
@@ -69,6 +71,7 @@ impl Application for Example {
panes,
focus: None,
title: String::from("Default window"),
+ scale: 1.0,
};
(
@@ -178,6 +181,7 @@ impl Application for Example {
panes,
focus: None,
title: format!("New window ({})", self.windows.len()),
+ scale: 1.0 + (self.windows.len() as f64 / 10.0),
};
let window_id = window::Id::new(self.windows.len());
@@ -342,6 +346,10 @@ impl Application for Example {
fn close_requested(&self, window: window::Id) -> Self::Message {
Message::Window(window, WindowMessage::CloseWindow)
}
+
+ fn scale_factor(&self, window: Id) -> f64 {
+ self.windows.get(&window).map(|w| w.scale).unwrap_or(1.0)
+ }
}
const PANE_ID_COLOR_UNFOCUSED: Color = Color::from_rgb(
diff --git a/src/multi_window/application.rs b/src/multi_window/application.rs
index 3f20382c..3af1d8d5 100644
--- a/src/multi_window/application.rs
+++ b/src/multi_window/application.rs
@@ -148,7 +148,7 @@ pub trait Application: Sized {
/// while a scale factor of `0.5` will shrink them to half their size.
///
/// By default, it returns `1.0`.
- fn scale_factor(&self) -> f64 {
+ fn scale_factor(&self, window: window::Id) -> f64 {
1.0
}
@@ -239,8 +239,8 @@ where
self.0.subscription()
}
- fn scale_factor(&self) -> f64 {
- self.0.scale_factor()
+ fn scale_factor(&self, window: window::Id) -> f64 {
+ self.0.scale_factor(window)
}
fn should_exit(&self) -> bool {
diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs
index d7378a1d..ad65e6a5 100644
--- a/winit/src/multi_window.rs
+++ b/winit/src/multi_window.rs
@@ -146,7 +146,7 @@ where
/// while a scale factor of `0.5` will shrink them to half their size.
///
/// By default, it returns `1.0`.
- fn scale_factor(&self) -> f64 {
+ fn scale_factor(&self, window: window::Id) -> f64 {
1.0
}
diff --git a/winit/src/multi_window/state.rs b/winit/src/multi_window/state.rs
index 2c2a4693..35c69924 100644
--- a/winit/src/multi_window/state.rs
+++ b/winit/src/multi_window/state.rs
@@ -36,7 +36,7 @@ where
window: &Window,
) -> Self {
let title = application.title(window_id);
- let scale_factor = application.scale_factor();
+ let scale_factor = application.scale_factor(window_id);
let theme = application.theme();
let appearance = theme.appearance(&application.style());
@@ -199,7 +199,7 @@ where
}
// Update scale factor
- let new_scale_factor = application.scale_factor();
+ let new_scale_factor = application.scale_factor(window_id);
if self.scale_factor != new_scale_factor {
let size = window.inner_size();