mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-02 06:18:11 +08:00
Replace globals with editor environment (#3656)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
@@ -1,11 +1,8 @@
|
||||
use crate::messages::prelude::*;
|
||||
|
||||
use super::app_window_message_handler::AppWindowPlatform;
|
||||
|
||||
#[impl_message(Message, AppWindow)]
|
||||
#[derive(PartialEq, Clone, Debug, serde::Serialize, serde::Deserialize)]
|
||||
pub enum AppWindowMessage {
|
||||
UpdatePlatform { platform: AppWindowPlatform },
|
||||
PointerLock,
|
||||
PointerLockMove { x: f64, y: f64 },
|
||||
Close,
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
use crate::messages::app_window::AppWindowMessage;
|
||||
use crate::application::{Environment, Platform};
|
||||
use crate::messages::prelude::*;
|
||||
use crate::{application::Host, messages::app_window::AppWindowMessage};
|
||||
use graphite_proc_macros::{ExtractField, message_handler_data};
|
||||
|
||||
#[derive(Debug, Clone, Default, ExtractField)]
|
||||
pub struct AppWindowMessageHandler {
|
||||
platform: AppWindowPlatform,
|
||||
}
|
||||
pub struct AppWindowMessageHandler {}
|
||||
|
||||
#[message_handler_data]
|
||||
impl MessageHandler<AppWindowMessage, ()> for AppWindowMessageHandler {
|
||||
fn process_message(&mut self, message: AppWindowMessage, responses: &mut std::collections::VecDeque<Message>, _: ()) {
|
||||
match message {
|
||||
AppWindowMessage::UpdatePlatform { platform } => {
|
||||
self.platform = platform;
|
||||
responses.add(FrontendMessage::UpdatePlatform { platform: self.platform });
|
||||
}
|
||||
AppWindowMessage::PointerLock => {
|
||||
responses.add(FrontendMessage::WindowPointerLock);
|
||||
}
|
||||
@@ -66,3 +61,14 @@ pub enum AppWindowPlatform {
|
||||
Mac,
|
||||
Linux,
|
||||
}
|
||||
|
||||
impl From<&Environment> for AppWindowPlatform {
|
||||
fn from(environment: &Environment) -> Self {
|
||||
match (environment.platform, environment.host) {
|
||||
(Platform::Web, _) => AppWindowPlatform::Web,
|
||||
(Platform::Desktop, Host::Linux) => AppWindowPlatform::Linux,
|
||||
(Platform::Desktop, Host::Mac) => AppWindowPlatform::Mac,
|
||||
(Platform::Desktop, Host::Windows) => AppWindowPlatform::Windows,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user