From 88a7071e7442c7de5431e7576505827c2711e0a9 Mon Sep 17 00:00:00 2001 From: Konkitoman Date: Thu, 10 Aug 2023 18:53:43 +0300 Subject: [PATCH] Moved create_winit_window_builder from crates/eframe/src/native/run.rs to crates/egui-winit/src/lib.rs --- crates/eframe/src/native/run.rs | 62 +------------------------------ crates/egui-winit/src/lib.rs | 65 ++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 61 deletions(-) diff --git a/crates/eframe/src/native/run.rs b/crates/eframe/src/native/run.rs index bbf9fc9c0..a7b0d212d 100644 --- a/crates/eframe/src/native/run.rs +++ b/crates/eframe/src/native/run.rs @@ -414,7 +414,7 @@ mod glow_integration { use egui::{ epaint::ahash::HashMap, mutex::RwLock, NumExt as _, ViewportBuilder, ViewportRender, }; - use egui_winit::EventResponse; + use egui_winit::{create_winit_window_builder, EventResponse}; use glutin::{ display::GetGlDisplay, prelude::{GlDisplay, NotCurrentGlContextSurfaceAccessor, PossiblyCurrentGlContext}, @@ -1698,6 +1698,7 @@ mod wgpu_integration { use std::sync::Arc; use egui::ViewportRender; + use egui_winit::create_winit_window_builder; use super::*; @@ -2517,62 +2518,3 @@ fn system_theme(window: &winit::window::Window, options: &NativeOptions) -> Opti fn extremely_far_future() -> std::time::Instant { std::time::Instant::now() + std::time::Duration::from_secs(10_000_000_000) } - -fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::WindowBuilder { - let mut window_builder = winit::window::WindowBuilder::new() - .with_title(builder.title.clone()) - .with_transparent(builder.transparent.map_or(false, |e| e)) - .with_decorations(builder.decorations.map_or(false, |e| e)) - .with_resizable(builder.resizable.map_or(false, |e| e)) - .with_visible(builder.visible.map_or(false, |e| e)) - .with_fullscreen( - builder - .fullscreen - .map(|e| e.then(|| winit::window::Fullscreen::Borderless(None))) - .flatten(), - ) - .with_enabled_buttons( - WindowButtons::MAXIMIZE - | WindowButtons::MINIMIZE - | builder - .close_button - .map(|v| v.then(|| WindowButtons::CLOSE)) - .flatten() - .unwrap_or(WindowButtons::empty()), - ) - .with_active(builder.active.map_or(false, |e| e)); - if let Some(Some(inner_size)) = builder.inner_size { - window_builder = window_builder - .with_inner_size(winit::dpi::PhysicalSize::new(inner_size.0, inner_size.1)); - } - if let Some(Some(min_inner_size)) = builder.min_inner_size { - window_builder = window_builder.with_min_inner_size(winit::dpi::PhysicalSize::new( - min_inner_size.0, - min_inner_size.1, - )); - } - if let Some(Some(max_inner_size)) = builder.max_inner_size { - window_builder = window_builder.with_max_inner_size(winit::dpi::PhysicalSize::new( - max_inner_size.0, - max_inner_size.1, - )); - } - if let Some(Some(position)) = builder.position { - window_builder = - window_builder.with_position(winit::dpi::PhysicalPosition::new(position.0, position.1)); - } - - if let Some(Some(icon)) = builder.icon.clone() { - window_builder = window_builder.with_window_icon(load_icon(crate::IconData { - rgba: icon.2.clone(), - width: icon.0, - height: icon.1, - })); - } - - window_builder -} - -fn changes_betwen_builders(now: &ViewportBuilder, last: &ViewportBuilder) -> Vec { - vec![] -} diff --git a/crates/egui-winit/src/lib.rs b/crates/egui-winit/src/lib.rs index e35d5aa39..6b27ee1c9 100644 --- a/crates/egui-winit/src/lib.rs +++ b/crates/egui-winit/src/lib.rs @@ -16,7 +16,7 @@ pub use accesskit_winit; pub use egui; #[cfg(feature = "accesskit")] use egui::accesskit; -use egui::{mutex::RwLock, ViewportCommand, ViewportId}; +use egui::{mutex::RwLock, ViewportBuilder, ViewportCommand, ViewportId}; pub use winit; pub mod clipboard; @@ -904,6 +904,9 @@ fn translate_cursor(cursor_icon: egui::CursorIcon) -> Option, focused: Option, @@ -1037,6 +1040,66 @@ pub fn process_viewport_commands( } } +pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::WindowBuilder { + let mut window_builder = winit::window::WindowBuilder::new() + .with_title(builder.title.clone()) + .with_transparent(builder.transparent.map_or(false, |e| e)) + .with_decorations(builder.decorations.map_or(false, |e| e)) + .with_resizable(builder.resizable.map_or(false, |e| e)) + .with_visible(builder.visible.map_or(false, |e| e)) + .with_fullscreen( + builder + .fullscreen + .map(|e| e.then(|| winit::window::Fullscreen::Borderless(None))) + .flatten(), + ) + .with_enabled_buttons( + WindowButtons::MAXIMIZE + | WindowButtons::MINIMIZE + | builder + .close_button + .map(|v| v.then(|| WindowButtons::CLOSE)) + .flatten() + .unwrap_or(WindowButtons::empty()), + ) + .with_active(builder.active.map_or(false, |e| e)); + if let Some(Some(inner_size)) = builder.inner_size { + window_builder = window_builder + .with_inner_size(winit::dpi::PhysicalSize::new(inner_size.0, inner_size.1)); + } + if let Some(Some(min_inner_size)) = builder.min_inner_size { + window_builder = window_builder.with_min_inner_size(winit::dpi::PhysicalSize::new( + min_inner_size.0, + min_inner_size.1, + )); + } + if let Some(Some(max_inner_size)) = builder.max_inner_size { + window_builder = window_builder.with_max_inner_size(winit::dpi::PhysicalSize::new( + max_inner_size.0, + max_inner_size.1, + )); + } + if let Some(Some(position)) = builder.position { + window_builder = + window_builder.with_position(winit::dpi::PhysicalPosition::new(position.0, position.1)); + } + + if let Some(Some(icon)) = builder.icon.clone() { + window_builder = window_builder.with_window_icon(Some( + winit::window::Icon::from_rgba(icon.2.clone(), icon.0, icon.1) + .expect("Invalid Icon Data!"), + )); + } + + window_builder +} + +pub fn changes_betwen_builders( + now: &ViewportBuilder, + last: &ViewportBuilder, +) -> Vec { + vec![] +} // --------------------------------------------------------------------------- /// Profiling macro for feature "puffin"