mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-02 02:48:11 +08:00
Fix device pixel ratio being tied to the document by moving it from overlays to portfolio
This commit is contained in:
@@ -5,7 +5,6 @@ use crate::messages::prelude::*;
|
||||
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
|
||||
pub enum OverlaysMessage {
|
||||
Draw,
|
||||
SetDevicePixelRatio { ratio: f64 },
|
||||
// Serde functionality isn't used but is required by the message system macros
|
||||
AddProvider(#[serde(skip, default = "empty_provider")] OverlayProvider),
|
||||
RemoveProvider(#[serde(skip, default = "empty_provider")] OverlayProvider),
|
||||
|
||||
@@ -4,6 +4,7 @@ use crate::messages::prelude::*;
|
||||
pub struct OverlaysMessageData<'a> {
|
||||
pub overlays_visible: bool,
|
||||
pub ipp: &'a InputPreprocessorMessageHandler,
|
||||
pub device_pixel_ratio: f64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
@@ -11,12 +12,15 @@ pub struct OverlaysMessageHandler {
|
||||
pub overlay_providers: HashSet<OverlayProvider>,
|
||||
canvas: Option<web_sys::HtmlCanvasElement>,
|
||||
context: Option<web_sys::CanvasRenderingContext2d>,
|
||||
device_pixel_ratio: Option<f64>,
|
||||
}
|
||||
|
||||
impl MessageHandler<OverlaysMessage, OverlaysMessageData<'_>> for OverlaysMessageHandler {
|
||||
fn process_message(&mut self, message: OverlaysMessage, responses: &mut VecDeque<Message>, data: OverlaysMessageData) {
|
||||
let OverlaysMessageData { overlays_visible, ipp } = data;
|
||||
let OverlaysMessageData {
|
||||
overlays_visible,
|
||||
ipp,
|
||||
device_pixel_ratio,
|
||||
} = data;
|
||||
|
||||
match message {
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
@@ -41,8 +45,6 @@ impl MessageHandler<OverlaysMessage, OverlaysMessageData<'_>> for OverlaysMessag
|
||||
|
||||
let size = ipp.viewport_bounds.size().as_uvec2();
|
||||
|
||||
let device_pixel_ratio = self.device_pixel_ratio.unwrap_or(1.);
|
||||
|
||||
let [a, b, c, d, e, f] = DAffine2::from_scale(DVec2::splat(device_pixel_ratio)).to_cols_array();
|
||||
let _ = context.set_transform(a, b, c, d, e, f);
|
||||
context.clear_rect(0., 0., ipp.viewport_bounds.size().x, ipp.viewport_bounds.size().y);
|
||||
@@ -70,10 +72,6 @@ impl MessageHandler<OverlaysMessage, OverlaysMessageData<'_>> for OverlaysMessag
|
||||
self.canvas, self.context
|
||||
);
|
||||
}
|
||||
OverlaysMessage::SetDevicePixelRatio { ratio } => {
|
||||
self.device_pixel_ratio = Some(ratio);
|
||||
responses.add(OverlaysMessage::Draw);
|
||||
}
|
||||
OverlaysMessage::AddProvider(message) => {
|
||||
self.overlay_providers.insert(message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user